test_core.py (2634B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\tests\test_core.py 2 import StringIO 3 import distutils.core 4 import os 5 import shutil 6 import sys 7 import test.test_support 8 from test.test_support import captured_stdout 9 import unittest 10 from distutils.tests import support 11 setup_using___file__ = '\n__file__\n\nfrom distutils.core import setup\nsetup()\n' 12 setup_prints_cwd = '\nimport os\nprint os.getcwd()\n\nfrom distutils.core import setup\nsetup()\n' 13 14 class CoreTestCase(support.EnvironGuard, unittest.TestCase): 15 16 def setUp(self): 17 super(CoreTestCase, self).setUp() 18 self.old_stdout = sys.stdout 19 self.cleanup_testfn() 20 self.old_argv = (sys.argv, sys.argv[:]) 21 22 def tearDown(self): 23 sys.stdout = self.old_stdout 24 self.cleanup_testfn() 25 sys.argv = self.old_argv[0] 26 sys.argv[:] = self.old_argv[1] 27 super(CoreTestCase, self).tearDown() 28 29 def cleanup_testfn(self): 30 path = test.test_support.TESTFN 31 if os.path.isfile(path): 32 os.remove(path) 33 elif os.path.isdir(path): 34 shutil.rmtree(path) 35 36 def write_setup(self, text, path = test.test_support.TESTFN): 37 f = open(path, 'w') 38 try: 39 f.write(text) 40 finally: 41 f.close() 42 43 return path 44 45 def test_run_setup_provides_file(self): 46 distutils.core.run_setup(self.write_setup(setup_using___file__)) 47 48 def test_run_setup_uses_current_dir(self): 49 sys.stdout = StringIO.StringIO() 50 cwd = os.getcwd() 51 os.mkdir(test.test_support.TESTFN) 52 setup_py = os.path.join(test.test_support.TESTFN, 'setup.py') 53 distutils.core.run_setup(self.write_setup(setup_prints_cwd, path=setup_py)) 54 output = sys.stdout.getvalue() 55 if output.endswith('\n'): 56 output = output[:-1] 57 self.assertEqual(cwd, output) 58 59 def test_debug_mode(self): 60 sys.argv = ['setup.py', '--name'] 61 with captured_stdout() as stdout: 62 distutils.core.setup(name='bar') 63 stdout.seek(0) 64 self.assertEqual(stdout.read(), 'bar\n') 65 distutils.core.DEBUG = True 66 try: 67 with captured_stdout() as stdout: 68 distutils.core.setup(name='bar') 69 finally: 70 distutils.core.DEBUG = False 71 72 stdout.seek(0) 73 wanted = 'options (after parsing config files):\n' 74 self.assertEqual(stdout.readlines()[0], wanted) 75 76 77 def test_suite(): 78 return unittest.makeSuite(CoreTestCase) 79 80 81 if __name__ == '__main__': 82 unittest.main(defaultTest='test_suite')