14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm"""Tests for distutils.sysconfig.""" 24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport os 34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport test 44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport unittest 54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport shutil 64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils import sysconfig 84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.tests import support 94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom test.test_support import TESTFN 104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmclass SysconfigTestCase(support.EnvironGuard, 124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm unittest.TestCase): 134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def setUp(self): 144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm super(SysconfigTestCase, self).setUp() 154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.makefile = None 164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def tearDown(self): 184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm if self.makefile is not None: 194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm os.unlink(self.makefile) 204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.cleanup_testfn() 214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm super(SysconfigTestCase, self).tearDown() 224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def cleanup_testfn(self): 244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm path = test.test_support.TESTFN 254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm if os.path.isfile(path): 264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm os.remove(path) 274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm elif os.path.isdir(path): 284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm shutil.rmtree(path) 294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_get_python_lib(self): 314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm lib_dir = sysconfig.get_python_lib() 324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # XXX doesn't work on Linux when Python was never installed before 334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm #self.assertTrue(os.path.isdir(lib_dir), lib_dir) 344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # test for pythonxx.lib? 354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertNotEqual(sysconfig.get_python_lib(), 364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm sysconfig.get_python_lib(prefix=TESTFN)) 374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm _sysconfig = __import__('sysconfig') 384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm res = sysconfig.get_python_lib(True, True) 394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(_sysconfig.get_path('platstdlib'), res) 404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_get_python_inc(self): 424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm inc_dir = sysconfig.get_python_inc() 434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # This is not much of a test. We make sure Python.h exists 444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # in the directory returned by get_python_inc() but we don't know 454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # it is the correct file. 464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertTrue(os.path.isdir(inc_dir), inc_dir) 474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm python_h = os.path.join(inc_dir, "Python.h") 484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertTrue(os.path.isfile(python_h), python_h) 494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_parse_makefile_base(self): 514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.makefile = test.test_support.TESTFN 524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fd = open(self.makefile, 'w') 534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fd.write(r"CONFIG_ARGS= '--arg1=optarg1' 'ENV=LIB'" '\n') 554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fd.write('VAR=$OTHER\nOTHER=foo') 564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm finally: 574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fd.close() 584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm d = sysconfig.parse_makefile(self.makefile) 594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(d, {'CONFIG_ARGS': "'--arg1=optarg1' 'ENV=LIB'", 604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 'OTHER': 'foo'}) 614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_parse_makefile_literal_dollar(self): 634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.makefile = test.test_support.TESTFN 644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fd = open(self.makefile, 'w') 654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fd.write(r"CONFIG_ARGS= '--arg1=optarg1' 'ENV=\$$LIB'" '\n') 674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fd.write('VAR=$OTHER\nOTHER=foo') 684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm finally: 694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm fd.close() 704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm d = sysconfig.parse_makefile(self.makefile) 714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(d, {'CONFIG_ARGS': r"'--arg1=optarg1' 'ENV=\$LIB'", 724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 'OTHER': 'foo'}) 734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef test_suite(): 764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm suite = unittest.TestSuite() 774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm suite.addTest(unittest.makeSuite(SysconfigTestCase)) 784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm return suite 794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmif __name__ == '__main__': 824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm test.test_support.run_unittest(test_suite()) 83