79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
import imp
|
|
import unittest
|
|
from test import test_support
|
|
|
|
|
|
class LockTests(unittest.TestCase):
|
|
|
|
"""Very basic test of import lock functions."""
|
|
|
|
def verify_lock_state(self, expected):
|
|
self.failUnlessEqual(imp.lock_held(), expected,
|
|
"expected imp.lock_held() to be %r" % expected)
|
|
def testLock(self):
|
|
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()
|
|
self.verify_lock_state(lock_held_at_start)
|
|
|
|
for i in range(LOOPS):
|
|
imp.acquire_lock()
|
|
self.verify_lock_state(True)
|
|
|
|
for i in range(LOOPS):
|
|
imp.release_lock()
|
|
|
|
# The original state should be restored now.
|
|
self.verify_lock_state(lock_held_at_start)
|
|
|
|
if not lock_held_at_start:
|
|
try:
|
|
imp.release_lock()
|
|
except RuntimeError:
|
|
pass
|
|
else:
|
|
self.fail("release_lock() without lock should raise "
|
|
"RuntimeError")
|
|
|
|
class ImportTests(unittest.TestCase):
|
|
|
|
def test_find_module_encoding(self):
|
|
fd = imp.find_module("heapq")[0]
|
|
self.assertEqual(fd.encoding, "iso-8859-1")
|
|
|
|
def test_issue1267(self):
|
|
fp, filename, info = imp.find_module("pydoc")
|
|
self.assertNotEqual(fp, None)
|
|
self.assertEqual(fp.encoding, "iso-8859-1")
|
|
self.assertEqual(fp.tell(), 0)
|
|
self.assertEqual(fp.readline(), '#!/usr/bin/env python\n')
|
|
fp.close()
|
|
|
|
fp, filename, info = imp.find_module("tokenize")
|
|
self.assertNotEqual(fp, None)
|
|
self.assertEqual(fp.encoding, "utf-8")
|
|
self.assertEqual(fp.tell(), 0)
|
|
self.assertEqual(fp.readline(),
|
|
'"""Tokenization help for Python programs.\n')
|
|
fp.close()
|
|
|
|
def test_reload(self):
|
|
import marshal
|
|
imp.reload(marshal)
|
|
import string
|
|
imp.reload(string)
|
|
## import sys
|
|
## self.assertRaises(ImportError, reload, sys)
|
|
|
|
|
|
def test_main():
|
|
test_support.run_unittest(
|
|
LockTests,
|
|
ImportTests,
|
|
)
|
|
|
|
if __name__ == "__main__":
|
|
test_main()
|