Tarek Ziadé | 29bbb96 | 2009-05-10 12:02:35 +0000 | [diff] [blame] | 1 | """Tests for distutils.sysconfig.""" |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 2 | import os |
Tarek Ziadé | abcc3f4 | 2009-06-11 08:31:17 +0000 | [diff] [blame] | 3 | import test |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 4 | import unittest |
| 5 | |
Tarek Ziadé | 29bbb96 | 2009-05-10 12:02:35 +0000 | [diff] [blame] | 6 | from distutils import sysconfig |
Tarek Ziadé | 3679727 | 2010-07-22 12:50:05 +0000 | [diff] [blame] | 7 | from distutils.ccompiler import get_default_compiler |
Tarek Ziadé | 29bbb96 | 2009-05-10 12:02:35 +0000 | [diff] [blame] | 8 | from distutils.tests import support |
Tarek Ziadé | abcc3f4 | 2009-06-11 08:31:17 +0000 | [diff] [blame] | 9 | from test.support import TESTFN, run_unittest |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 10 | |
Tarek Ziadé | 29bbb96 | 2009-05-10 12:02:35 +0000 | [diff] [blame] | 11 | class SysconfigTestCase(support.EnvironGuard, |
| 12 | unittest.TestCase): |
Tarek Ziadé | abcc3f4 | 2009-06-11 08:31:17 +0000 | [diff] [blame] | 13 | def setUp(self): |
| 14 | super(SysconfigTestCase, self).setUp() |
| 15 | self.makefile = None |
| 16 | |
| 17 | def tearDown(self): |
| 18 | if self.makefile is not None: |
| 19 | os.unlink(self.makefile) |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 20 | self.cleanup_testfn() |
Tarek Ziadé | abcc3f4 | 2009-06-11 08:31:17 +0000 | [diff] [blame] | 21 | super(SysconfigTestCase, self).tearDown() |
Tarek Ziadé | d3409de | 2009-02-06 01:18:36 +0000 | [diff] [blame] | 22 | |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 23 | def cleanup_testfn(self): |
| 24 | if os.path.isfile(TESTFN): |
| 25 | os.remove(TESTFN) |
| 26 | elif os.path.isdir(TESTFN): |
| 27 | shutil.rmtree(TESTFN) |
| 28 | |
Tarek Ziadé | 3679727 | 2010-07-22 12:50:05 +0000 | [diff] [blame] | 29 | def test_get_config_h_filename(self): |
| 30 | config_h = sysconfig.get_config_h_filename() |
| 31 | self.assertTrue(os.path.isfile(config_h), config_h) |
| 32 | |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 33 | def test_get_python_lib(self): |
| 34 | lib_dir = sysconfig.get_python_lib() |
Christian Heimes | 0449f63 | 2007-12-15 01:27:15 +0000 | [diff] [blame] | 35 | # XXX doesn't work on Linux when Python was never installed before |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 36 | #self.assertTrue(os.path.isdir(lib_dir), lib_dir) |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 37 | # test for pythonxx.lib? |
Tarek Ziadé | 7d5e987 | 2009-02-10 12:36:33 +0000 | [diff] [blame] | 38 | self.assertNotEqual(sysconfig.get_python_lib(), |
| 39 | sysconfig.get_python_lib(prefix=TESTFN)) |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 40 | |
| 41 | def test_get_python_inc(self): |
Neil Schemenauer | c03a288 | 2009-02-05 16:35:04 +0000 | [diff] [blame] | 42 | inc_dir = sysconfig.get_python_inc() |
| 43 | # This is not much of a test. We make sure Python.h exists |
| 44 | # in the directory returned by get_python_inc() but we don't know |
| 45 | # it is the correct file. |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 46 | self.assertTrue(os.path.isdir(inc_dir), inc_dir) |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 47 | python_h = os.path.join(inc_dir, "Python.h") |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 48 | self.assertTrue(os.path.isfile(python_h), python_h) |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 49 | |
Tarek Ziadé | 3679727 | 2010-07-22 12:50:05 +0000 | [diff] [blame] | 50 | def test_get_config_vars(self): |
| 51 | cvars = sysconfig.get_config_vars() |
| 52 | self.assertTrue(isinstance(cvars, dict)) |
| 53 | self.assertTrue(cvars) |
| 54 | |
| 55 | def test_customize_compiler(self): |
| 56 | |
| 57 | # not testing if default compiler is not unix |
| 58 | if get_default_compiler() != 'unix': |
| 59 | return |
| 60 | |
| 61 | os.environ['AR'] = 'my_ar' |
| 62 | os.environ['ARFLAGS'] = '-arflags' |
| 63 | |
| 64 | # make sure AR gets caught |
| 65 | class compiler: |
| 66 | compiler_type = 'unix' |
| 67 | |
| 68 | def set_executables(self, **kw): |
| 69 | self.exes = kw |
| 70 | |
| 71 | comp = compiler() |
| 72 | sysconfig.customize_compiler(comp) |
| 73 | self.assertEquals(comp.exes['archiver'], 'my_ar -arflags') |
| 74 | |
Tarek Ziadé | abcc3f4 | 2009-06-11 08:31:17 +0000 | [diff] [blame] | 75 | def test_parse_makefile_base(self): |
| 76 | self.makefile = TESTFN |
| 77 | fd = open(self.makefile, 'w') |
Éric Araujo | bee5cef | 2010-11-05 23:51:56 +0000 | [diff] [blame] | 78 | try: |
| 79 | fd.write(r"CONFIG_ARGS= '--arg1=optarg1' 'ENV=LIB'" '\n') |
| 80 | fd.write('VAR=$OTHER\nOTHER=foo') |
| 81 | finally: |
| 82 | fd.close() |
Tarek Ziadé | abcc3f4 | 2009-06-11 08:31:17 +0000 | [diff] [blame] | 83 | d = sysconfig.parse_makefile(self.makefile) |
| 84 | self.assertEquals(d, {'CONFIG_ARGS': "'--arg1=optarg1' 'ENV=LIB'", |
| 85 | 'OTHER': 'foo'}) |
| 86 | |
| 87 | def test_parse_makefile_literal_dollar(self): |
| 88 | self.makefile = TESTFN |
| 89 | fd = open(self.makefile, 'w') |
Éric Araujo | bee5cef | 2010-11-05 23:51:56 +0000 | [diff] [blame] | 90 | try: |
| 91 | fd.write(r"CONFIG_ARGS= '--arg1=optarg1' 'ENV=\$$LIB'" '\n') |
| 92 | fd.write('VAR=$OTHER\nOTHER=foo') |
| 93 | finally: |
| 94 | fd.close() |
Tarek Ziadé | abcc3f4 | 2009-06-11 08:31:17 +0000 | [diff] [blame] | 95 | d = sysconfig.parse_makefile(self.makefile) |
| 96 | self.assertEquals(d, {'CONFIG_ARGS': r"'--arg1=optarg1' 'ENV=\$LIB'", |
| 97 | 'OTHER': 'foo'}) |
| 98 | |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 99 | |
Ronald Oussoren | e8d252d | 2010-07-23 09:43:17 +0000 | [diff] [blame] | 100 | def test_sysconfig_module(self): |
| 101 | import sysconfig as global_sysconfig |
| 102 | self.assertEquals(global_sysconfig.get_config_var('CFLAGS'), sysconfig.get_config_var('CFLAGS')) |
| 103 | self.assertEquals(global_sysconfig.get_config_var('LDFLAGS'), sysconfig.get_config_var('LDFLAGS')) |
| 104 | self.assertEquals(global_sysconfig.get_config_var('LDSHARED'),sysconfig.get_config_var('LDSHARED')) |
| 105 | self.assertEquals(global_sysconfig.get_config_var('CC'), sysconfig.get_config_var('CC')) |
| 106 | |
| 107 | |
| 108 | |
Christian Heimes | e7f9f46 | 2007-12-08 15:34:59 +0000 | [diff] [blame] | 109 | def test_suite(): |
| 110 | suite = unittest.TestSuite() |
| 111 | suite.addTest(unittest.makeSuite(SysconfigTestCase)) |
| 112 | return suite |
Tarek Ziadé | abcc3f4 | 2009-06-11 08:31:17 +0000 | [diff] [blame] | 113 | |
| 114 | |
| 115 | if __name__ == '__main__': |
| 116 | run_unittest(test_suite()) |