mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import imp
 | 
						|
from test.test_support import TestFailed, TestSkipped
 | 
						|
try:
 | 
						|
    import thread
 | 
						|
except ImportError:
 | 
						|
    raise TestSkipped("test only valid when thread support is available")
 | 
						|
 | 
						|
def verify_lock_state(expected):
 | 
						|
    if imp.lock_held() != expected:
 | 
						|
        raise TestFailed("expected imp.lock_held() to be %r" % expected)
 | 
						|
 | 
						|
def testLock():
 | 
						|
    LOOPS = 50
 | 
						|
 | 
						|
    # The import lock may already be held, e.g. if the test suite is run
 | 
						|
    # via "import test.autotest".
 | 
						|
    lock_held_at_start = imp.lock_held()
 | 
						|
    verify_lock_state(lock_held_at_start)
 | 
						|
 | 
						|
    for i in range(LOOPS):
 | 
						|
        imp.acquire_lock()
 | 
						|
        verify_lock_state(True)
 | 
						|
 | 
						|
    for i in range(LOOPS):
 | 
						|
        imp.release_lock()
 | 
						|
 | 
						|
    # The original state should be restored now.
 | 
						|
    verify_lock_state(lock_held_at_start)
 | 
						|
 | 
						|
    if not lock_held_at_start:
 | 
						|
        try:
 | 
						|
            imp.release_lock()
 | 
						|
        except RuntimeError:
 | 
						|
            pass
 | 
						|
        else:
 | 
						|
            raise TestFailed("release_lock() without lock should raise "
 | 
						|
                             "RuntimeError")
 | 
						|
 | 
						|
def test_main():
 | 
						|
    testLock()
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    test_main()
 |