• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""Tests for distutils.command.config."""
2import unittest
3import os
4import sys
5from test.test_support import run_unittest
6
7from distutils.command.config import dump_file, config
8from distutils.tests import support
9from distutils import log
10
11class ConfigTestCase(support.LoggingSilencer,
12                     support.TempdirManager,
13                     unittest.TestCase):
14
15    def _info(self, msg, *args):
16        for line in msg.splitlines():
17            self._logs.append(line)
18
19    def setUp(self):
20        super(ConfigTestCase, self).setUp()
21        self._logs = []
22        self.old_log = log.info
23        log.info = self._info
24
25    def tearDown(self):
26        log.info = self.old_log
27        super(ConfigTestCase, self).tearDown()
28
29    def test_dump_file(self):
30        this_file = os.path.splitext(__file__)[0] + '.py'
31        f = open(this_file)
32        try:
33            numlines = len(f.readlines())
34        finally:
35            f.close()
36
37        dump_file(this_file, 'I am the header')
38        self.assertEqual(len(self._logs), numlines+1)
39
40    @unittest.skipIf(sys.platform == 'win32', "can't test on Windows")
41    def test_search_cpp(self):
42        pkg_dir, dist = self.create_dist()
43        cmd = config(dist)
44
45        # simple pattern searches
46        match = cmd.search_cpp(pattern='xxx', body='/* xxx */')
47        self.assertEqual(match, 0)
48
49        match = cmd.search_cpp(pattern='_configtest', body='/* xxx */')
50        self.assertEqual(match, 1)
51
52    def test_finalize_options(self):
53        # finalize_options does a bit of transformation
54        # on options
55        pkg_dir, dist = self.create_dist()
56        cmd = config(dist)
57        cmd.include_dirs = 'one%stwo' % os.pathsep
58        cmd.libraries = 'one'
59        cmd.library_dirs = 'three%sfour' % os.pathsep
60        cmd.ensure_finalized()
61
62        self.assertEqual(cmd.include_dirs, ['one', 'two'])
63        self.assertEqual(cmd.libraries, ['one'])
64        self.assertEqual(cmd.library_dirs, ['three', 'four'])
65
66    def test_clean(self):
67        # _clean removes files
68        tmp_dir = self.mkdtemp()
69        f1 = os.path.join(tmp_dir, 'one')
70        f2 = os.path.join(tmp_dir, 'two')
71
72        self.write_file(f1, 'xxx')
73        self.write_file(f2, 'xxx')
74
75        for f in (f1, f2):
76            self.assertTrue(os.path.exists(f))
77
78        pkg_dir, dist = self.create_dist()
79        cmd = config(dist)
80        cmd._clean(f1, f2)
81
82        for f in (f1, f2):
83            self.assertFalse(os.path.exists(f))
84
85def test_suite():
86    return unittest.makeSuite(ConfigTestCase)
87
88if __name__ == "__main__":
89    run_unittest(test_suite())
90