1import imp 2import os 3import py_compile 4import shutil 5import tempfile 6import unittest 7 8from test import test_support as support 9 10class PyCompileTests(unittest.TestCase): 11 12 def setUp(self): 13 self.directory = tempfile.mkdtemp() 14 self.source_path = os.path.join(self.directory, '_test.py') 15 self.pyc_path = self.source_path + 'c' 16 self.cwd_drive = os.path.splitdrive(os.getcwd())[0] 17 # In these tests we compute relative paths. When using Windows, the 18 # current working directory path and the 'self.source_path' might be 19 # on different drives. Therefore we need to switch to the drive where 20 # the temporary source file lives. 21 drive = os.path.splitdrive(self.source_path)[0] 22 if drive: 23 os.chdir(drive) 24 25 with open(self.source_path, 'w') as file: 26 file.write('x = 123\n') 27 28 def tearDown(self): 29 shutil.rmtree(self.directory) 30 if self.cwd_drive: 31 os.chdir(self.cwd_drive) 32 33 def test_absolute_path(self): 34 py_compile.compile(self.source_path, self.pyc_path) 35 self.assertTrue(os.path.exists(self.pyc_path)) 36 37 def test_cwd(self): 38 with support.change_cwd(self.directory): 39 py_compile.compile(os.path.basename(self.source_path), 40 os.path.basename(self.pyc_path)) 41 self.assertTrue(os.path.exists(self.pyc_path)) 42 43 def test_relative_path(self): 44 py_compile.compile(os.path.relpath(self.source_path), 45 os.path.relpath(self.pyc_path)) 46 self.assertTrue(os.path.exists(self.pyc_path)) 47 48def test_main(): 49 support.run_unittest(PyCompileTests) 50 51if __name__ == "__main__": 52 test_main() 53