blob: 4f7ebdd9fc1b1e3bcd36730d277244ce561c637d [file] [log] [blame]
Tarek Ziadé0eb13042009-04-12 14:57:46 +00001"""Tests for distutils.command.config."""
2import unittest
3import os
Tarek Ziadéf1f003c2009-04-13 12:59:03 +00004import sys
Éric Araujob344dd02011-02-02 21:38:37 +00005from test.support import run_unittest
Tarek Ziadé0eb13042009-04-12 14:57:46 +00006
Tarek Ziadéfd39b7a2009-04-12 16:34:34 +00007from distutils.command.config import dump_file, config
Tarek Ziadé0eb13042009-04-12 14:57:46 +00008from distutils.tests import support
9from distutils import log
10
11class ConfigTestCase(support.LoggingSilencer,
12 support.TempdirManager,
13 unittest.TestCase):
14
Tarek Ziadéfd39b7a2009-04-12 16:34:34 +000015 def _info(self, msg, *args):
Tarek Ziadé0eb13042009-04-12 14:57:46 +000016 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')
Ezio Melotti19f2aeb2010-11-21 01:30:29 +000038 self.assertEqual(len(self._logs), numlines+1)
Tarek Ziadé0eb13042009-04-12 14:57:46 +000039
Tarek Ziadéfd39b7a2009-04-12 16:34:34 +000040 def test_search_cpp(self):
Tarek Ziadéf1f003c2009-04-13 12:59:03 +000041 if sys.platform == 'win32':
42 return
Tarek Ziadéfd39b7a2009-04-12 16:34:34 +000043 pkg_dir, dist = self.create_dist()
44 cmd = config(dist)
45
46 # simple pattern searches
47 match = cmd.search_cpp(pattern='xxx', body='// xxx')
Ezio Melotti19f2aeb2010-11-21 01:30:29 +000048 self.assertEqual(match, 0)
Tarek Ziadéfd39b7a2009-04-12 16:34:34 +000049
Tarek Ziadé81623822009-04-29 08:07:44 +000050 match = cmd.search_cpp(pattern='_configtest', body='// xxx')
Ezio Melotti19f2aeb2010-11-21 01:30:29 +000051 self.assertEqual(match, 1)
Tarek Ziadéfd39b7a2009-04-12 16:34:34 +000052
Tarek Ziadébccb0c92009-04-12 16:49:20 +000053 def test_finalize_options(self):
54 # finalize_options does a bit of transformation
55 # on options
56 pkg_dir, dist = self.create_dist()
57 cmd = config(dist)
58 cmd.include_dirs = 'one%stwo' % os.pathsep
59 cmd.libraries = 'one'
60 cmd.library_dirs = 'three%sfour' % os.pathsep
61 cmd.ensure_finalized()
62
Ezio Melotti19f2aeb2010-11-21 01:30:29 +000063 self.assertEqual(cmd.include_dirs, ['one', 'two'])
64 self.assertEqual(cmd.libraries, ['one'])
65 self.assertEqual(cmd.library_dirs, ['three', 'four'])
Tarek Ziadébccb0c92009-04-12 16:49:20 +000066
Tarek Ziadé865a7142009-04-12 17:04:39 +000067 def test_clean(self):
68 # _clean removes files
69 tmp_dir = self.mkdtemp()
70 f1 = os.path.join(tmp_dir, 'one')
71 f2 = os.path.join(tmp_dir, 'two')
72
73 self.write_file(f1, 'xxx')
74 self.write_file(f2, 'xxx')
75
76 for f in (f1, f2):
Georg Brandlab91fde2009-08-13 08:51:18 +000077 self.assertTrue(os.path.exists(f))
Tarek Ziadé865a7142009-04-12 17:04:39 +000078
79 pkg_dir, dist = self.create_dist()
80 cmd = config(dist)
81 cmd._clean(f1, f2)
82
83 for f in (f1, f2):
Georg Brandlab91fde2009-08-13 08:51:18 +000084 self.assertTrue(not os.path.exists(f))
Tarek Ziadébccb0c92009-04-12 16:49:20 +000085
Tarek Ziadé0eb13042009-04-12 14:57:46 +000086def test_suite():
87 return unittest.makeSuite(ConfigTestCase)
88
89if __name__ == "__main__":
Éric Araujob344dd02011-02-02 21:38:37 +000090 run_unittest(test_suite())