14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm"""Tests for distutils.command.config.""" 24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport unittest 34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport os 44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport sys 54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom test.test_support import run_unittest 64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.command.config import dump_file, config 84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.tests import support 94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils import log 104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmclass ConfigTestCase(support.LoggingSilencer, 124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm support.TempdirManager, 134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm unittest.TestCase): 144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def _info(self, msg, *args): 164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm for line in msg.splitlines(): 174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self._logs.append(line) 184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def setUp(self): 204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm super(ConfigTestCase, self).setUp() 214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self._logs = [] 224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.old_log = log.info 234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm log.info = self._info 244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def tearDown(self): 264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm log.info = self.old_log 274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm super(ConfigTestCase, self).tearDown() 284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_dump_file(self): 304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm this_file = os.path.splitext(__file__)[0] + '.py' 314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm f = open(this_file) 324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm numlines = len(f.readlines()) 344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm finally: 354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm f.close() 364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm dump_file(this_file, 'I am the header') 384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(len(self._logs), numlines+1) 394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_search_cpp(self): 414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm if sys.platform == 'win32': 424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm return 434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pkg_dir, dist = self.create_dist() 444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd = config(dist) 454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # simple pattern searches 474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm match = cmd.search_cpp(pattern='xxx', body='// xxx') 484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(match, 0) 494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm match = cmd.search_cpp(pattern='_configtest', body='// xxx') 514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(match, 1) 524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_finalize_options(self): 544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # finalize_options does a bit of transformation 554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # on options 564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pkg_dir, dist = self.create_dist() 574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd = config(dist) 584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd.include_dirs = 'one%stwo' % os.pathsep 594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd.libraries = 'one' 604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd.library_dirs = 'three%sfour' % os.pathsep 614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd.ensure_finalized() 624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(cmd.include_dirs, ['one', 'two']) 644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(cmd.libraries, ['one']) 654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(cmd.library_dirs, ['three', 'four']) 664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_clean(self): 684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # _clean removes files 694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm tmp_dir = self.mkdtemp() 704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm f1 = os.path.join(tmp_dir, 'one') 714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm f2 = os.path.join(tmp_dir, 'two') 724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.write_file(f1, 'xxx') 744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.write_file(f2, 'xxx') 754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm for f in (f1, f2): 774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertTrue(os.path.exists(f)) 784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pkg_dir, dist = self.create_dist() 804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd = config(dist) 814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd._clean(f1, f2) 824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm for f in (f1, f2): 844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertTrue(not os.path.exists(f)) 854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef test_suite(): 874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm return unittest.makeSuite(ConfigTestCase) 884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmif __name__ == "__main__": 904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm run_unittest(test_suite()) 91