Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 1 | """Tests for distutils.dist.""" |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 2 | import os |
Guido van Rossum | 34d1928 | 2007-08-09 01:03:29 +0000 | [diff] [blame] | 3 | import io |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 4 | import sys |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 5 | import unittest |
Tarek Ziadé | 4450dcf | 2008-12-29 22:38:38 +0000 | [diff] [blame] | 6 | import warnings |
Tarek Ziadé | df872d4 | 2009-12-06 09:28:17 +0000 | [diff] [blame] | 7 | import textwrap |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 8 | |
Tarek Ziadé | 3679727 | 2010-07-22 12:50:05 +0000 | [diff] [blame] | 9 | from distutils.dist import Distribution, fix_help_options |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 10 | from distutils.cmd import Command |
| 11 | |
Éric Araujo | 70ec44a | 2010-11-06 02:44:43 +0000 | [diff] [blame] | 12 | from test.support import TESTFN, captured_stdout, run_unittest |
Tarek Ziadé | c1375d5 | 2009-02-14 14:35:51 +0000 | [diff] [blame] | 13 | from distutils.tests import support |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 14 | |
| 15 | |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 16 | class test_dist(Command): |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 17 | """Sample distutils extension command.""" |
| 18 | |
| 19 | user_options = [ |
| 20 | ("sample-option=", "S", "help text"), |
| 21 | ] |
| 22 | |
| 23 | def initialize_options(self): |
| 24 | self.sample_option = None |
| 25 | |
| 26 | |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 27 | class TestDistribution(Distribution): |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 28 | """Distribution subclasses that avoids the default search for |
| 29 | configuration files. |
| 30 | |
| 31 | The ._config_files attribute must be set before |
| 32 | .parse_config_files() is called. |
| 33 | """ |
| 34 | |
| 35 | def find_config_files(self): |
| 36 | return self._config_files |
| 37 | |
| 38 | |
Tarek Ziadé | 3679727 | 2010-07-22 12:50:05 +0000 | [diff] [blame] | 39 | class DistributionTestCase(support.LoggingSilencer, |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 40 | support.EnvironGuard, |
Tarek Ziadé | f11be75 | 2009-06-01 22:36:26 +0000 | [diff] [blame] | 41 | unittest.TestCase): |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 42 | |
| 43 | def setUp(self): |
Tarek Ziadé | bbf1f18 | 2009-05-10 12:20:44 +0000 | [diff] [blame] | 44 | super(DistributionTestCase, self).setUp() |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 45 | self.argv = sys.argv, sys.argv[:] |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 46 | del sys.argv[1:] |
| 47 | |
| 48 | def tearDown(self): |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 49 | sys.argv = self.argv[0] |
| 50 | sys.argv[:] = self.argv[1] |
Tarek Ziadé | bbf1f18 | 2009-05-10 12:20:44 +0000 | [diff] [blame] | 51 | super(DistributionTestCase, self).tearDown() |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 52 | |
| 53 | def create_distribution(self, configfiles=()): |
| 54 | d = TestDistribution() |
| 55 | d._config_files = configfiles |
| 56 | d.parse_config_files() |
| 57 | d.parse_command_line() |
| 58 | return d |
| 59 | |
| 60 | def test_command_packages_unspecified(self): |
| 61 | sys.argv.append("build") |
| 62 | d = self.create_distribution() |
| 63 | self.assertEqual(d.get_command_packages(), ["distutils.command"]) |
| 64 | |
| 65 | def test_command_packages_cmdline(self): |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 66 | from distutils.tests.test_dist import test_dist |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 67 | sys.argv.extend(["--command-packages", |
| 68 | "foo.bar,distutils.tests", |
| 69 | "test_dist", |
| 70 | "-Ssometext", |
| 71 | ]) |
| 72 | d = self.create_distribution() |
| 73 | # let's actually try to load our test command: |
| 74 | self.assertEqual(d.get_command_packages(), |
| 75 | ["distutils.command", "foo.bar", "distutils.tests"]) |
| 76 | cmd = d.get_command_obj("test_dist") |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 77 | self.assertTrue(isinstance(cmd, test_dist)) |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 78 | self.assertEqual(cmd.sample_option, "sometext") |
| 79 | |
| 80 | def test_command_packages_configfile(self): |
| 81 | sys.argv.append("build") |
Éric Araujo | bee5cef | 2010-11-05 23:51:56 +0000 | [diff] [blame] | 82 | self.addCleanup(os.unlink, TESTFN) |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 83 | f = open(TESTFN, "w") |
| 84 | try: |
Guido van Rossum | be19ed7 | 2007-02-09 05:37:30 +0000 | [diff] [blame] | 85 | print("[global]", file=f) |
| 86 | print("command_packages = foo.bar, splat", file=f) |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 87 | finally: |
Éric Araujo | bee5cef | 2010-11-05 23:51:56 +0000 | [diff] [blame] | 88 | f.close() |
| 89 | |
| 90 | d = self.create_distribution([TESTFN]) |
| 91 | self.assertEqual(d.get_command_packages(), |
| 92 | ["distutils.command", "foo.bar", "splat"]) |
| 93 | |
| 94 | # ensure command line overrides config: |
| 95 | sys.argv[1:] = ["--command-packages", "spork", "build"] |
| 96 | d = self.create_distribution([TESTFN]) |
| 97 | self.assertEqual(d.get_command_packages(), |
| 98 | ["distutils.command", "spork"]) |
| 99 | |
| 100 | # Setting --command-packages to '' should cause the default to |
| 101 | # be used even if a config file specified something else: |
| 102 | sys.argv[1:] = ["--command-packages", "", "build"] |
| 103 | d = self.create_distribution([TESTFN]) |
| 104 | self.assertEqual(d.get_command_packages(), ["distutils.command"]) |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 105 | |
Tarek Ziadé | 4450dcf | 2008-12-29 22:38:38 +0000 | [diff] [blame] | 106 | def test_empty_options(self): |
| 107 | # an empty options dictionary should not stay in the |
| 108 | # list of attributes |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 109 | klass = Distribution |
Tarek Ziadé | 4450dcf | 2008-12-29 22:38:38 +0000 | [diff] [blame] | 110 | |
| 111 | # catching warnings |
| 112 | warns = [] |
| 113 | def _warn(msg): |
| 114 | warns.append(msg) |
| 115 | |
| 116 | old_warn = warnings.warn |
| 117 | warnings.warn = _warn |
| 118 | try: |
| 119 | dist = klass(attrs={'author': 'xxx', |
| 120 | 'name': 'xxx', |
| 121 | 'version': 'xxx', |
| 122 | 'url': 'xxxx', |
| 123 | 'options': {}}) |
| 124 | finally: |
| 125 | warnings.warn = old_warn |
| 126 | |
| 127 | self.assertEquals(len(warns), 0) |
| 128 | |
Tarek Ziadé | f11be75 | 2009-06-01 22:36:26 +0000 | [diff] [blame] | 129 | def test_finalize_options(self): |
| 130 | |
| 131 | attrs = {'keywords': 'one,two', |
| 132 | 'platforms': 'one,two'} |
| 133 | |
| 134 | dist = Distribution(attrs=attrs) |
| 135 | dist.finalize_options() |
| 136 | |
| 137 | # finalize_option splits platforms and keywords |
| 138 | self.assertEquals(dist.metadata.platforms, ['one', 'two']) |
| 139 | self.assertEquals(dist.metadata.keywords, ['one', 'two']) |
| 140 | |
Tarek Ziadé | f11be75 | 2009-06-01 22:36:26 +0000 | [diff] [blame] | 141 | def test_get_command_packages(self): |
| 142 | dist = Distribution() |
| 143 | self.assertEquals(dist.command_packages, None) |
| 144 | cmds = dist.get_command_packages() |
| 145 | self.assertEquals(cmds, ['distutils.command']) |
| 146 | self.assertEquals(dist.command_packages, |
| 147 | ['distutils.command']) |
| 148 | |
| 149 | dist.command_packages = 'one,two' |
| 150 | cmds = dist.get_command_packages() |
| 151 | self.assertEquals(cmds, ['distutils.command', 'one', 'two']) |
| 152 | |
| 153 | |
Tarek Ziadé | 31d4607 | 2009-09-21 13:55:19 +0000 | [diff] [blame] | 154 | def test_announce(self): |
| 155 | # make sure the level is known |
| 156 | dist = Distribution() |
| 157 | args = ('ok',) |
| 158 | kwargs = {'level': 'ok2'} |
| 159 | self.assertRaises(ValueError, dist.announce, args, kwargs) |
| 160 | |
Tarek Ziadé | bbf1f18 | 2009-05-10 12:20:44 +0000 | [diff] [blame] | 161 | class MetadataTestCase(support.TempdirManager, support.EnvironGuard, |
| 162 | unittest.TestCase): |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 163 | |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 164 | def setUp(self): |
| 165 | super(MetadataTestCase, self).setUp() |
| 166 | self.argv = sys.argv, sys.argv[:] |
| 167 | |
| 168 | def tearDown(self): |
| 169 | sys.argv = self.argv[0] |
| 170 | sys.argv[:] = self.argv[1] |
| 171 | super(MetadataTestCase, self).tearDown() |
| 172 | |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 173 | def test_simple_metadata(self): |
| 174 | attrs = {"name": "package", |
| 175 | "version": "1.0"} |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 176 | dist = Distribution(attrs) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 177 | meta = self.format_metadata(dist) |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 178 | self.assertTrue("Metadata-Version: 1.0" in meta) |
| 179 | self.assertTrue("provides:" not in meta.lower()) |
| 180 | self.assertTrue("requires:" not in meta.lower()) |
| 181 | self.assertTrue("obsoletes:" not in meta.lower()) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 182 | |
| 183 | def test_provides(self): |
| 184 | attrs = {"name": "package", |
| 185 | "version": "1.0", |
| 186 | "provides": ["package", "package.sub"]} |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 187 | dist = Distribution(attrs) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 188 | self.assertEqual(dist.metadata.get_provides(), |
| 189 | ["package", "package.sub"]) |
| 190 | self.assertEqual(dist.get_provides(), |
| 191 | ["package", "package.sub"]) |
| 192 | meta = self.format_metadata(dist) |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 193 | self.assertTrue("Metadata-Version: 1.1" in meta) |
| 194 | self.assertTrue("requires:" not in meta.lower()) |
| 195 | self.assertTrue("obsoletes:" not in meta.lower()) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 196 | |
| 197 | def test_provides_illegal(self): |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 198 | self.assertRaises(ValueError, Distribution, |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 199 | {"name": "package", |
| 200 | "version": "1.0", |
| 201 | "provides": ["my.pkg (splat)"]}) |
| 202 | |
| 203 | def test_requires(self): |
| 204 | attrs = {"name": "package", |
| 205 | "version": "1.0", |
| 206 | "requires": ["other", "another (==1.0)"]} |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 207 | dist = Distribution(attrs) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 208 | self.assertEqual(dist.metadata.get_requires(), |
| 209 | ["other", "another (==1.0)"]) |
| 210 | self.assertEqual(dist.get_requires(), |
| 211 | ["other", "another (==1.0)"]) |
| 212 | meta = self.format_metadata(dist) |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 213 | self.assertTrue("Metadata-Version: 1.1" in meta) |
| 214 | self.assertTrue("provides:" not in meta.lower()) |
| 215 | self.assertTrue("Requires: other" in meta) |
| 216 | self.assertTrue("Requires: another (==1.0)" in meta) |
| 217 | self.assertTrue("obsoletes:" not in meta.lower()) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 218 | |
| 219 | def test_requires_illegal(self): |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 220 | self.assertRaises(ValueError, Distribution, |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 221 | {"name": "package", |
| 222 | "version": "1.0", |
| 223 | "requires": ["my.pkg (splat)"]}) |
| 224 | |
| 225 | def test_obsoletes(self): |
| 226 | attrs = {"name": "package", |
| 227 | "version": "1.0", |
| 228 | "obsoletes": ["other", "another (<1.0)"]} |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 229 | dist = Distribution(attrs) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 230 | self.assertEqual(dist.metadata.get_obsoletes(), |
| 231 | ["other", "another (<1.0)"]) |
| 232 | self.assertEqual(dist.get_obsoletes(), |
| 233 | ["other", "another (<1.0)"]) |
| 234 | meta = self.format_metadata(dist) |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 235 | self.assertTrue("Metadata-Version: 1.1" in meta) |
| 236 | self.assertTrue("provides:" not in meta.lower()) |
| 237 | self.assertTrue("requires:" not in meta.lower()) |
| 238 | self.assertTrue("Obsoletes: other" in meta) |
| 239 | self.assertTrue("Obsoletes: another (<1.0)" in meta) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 240 | |
| 241 | def test_obsoletes_illegal(self): |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 242 | self.assertRaises(ValueError, Distribution, |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 243 | {"name": "package", |
| 244 | "version": "1.0", |
| 245 | "obsoletes": ["my.pkg (splat)"]}) |
Tim Peters | eba28be | 2005-03-28 01:08:02 +0000 | [diff] [blame] | 246 | |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 247 | def format_metadata(self, dist): |
Guido van Rossum | 34d1928 | 2007-08-09 01:03:29 +0000 | [diff] [blame] | 248 | sio = io.StringIO() |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 249 | dist.metadata.write_pkg_file(sio) |
| 250 | return sio.getvalue() |
| 251 | |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 252 | def test_custom_pydistutils(self): |
| 253 | # fixes #2166 |
| 254 | # make sure pydistutils.cfg is found |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 255 | if os.name == 'posix': |
| 256 | user_filename = ".pydistutils.cfg" |
| 257 | else: |
| 258 | user_filename = "pydistutils.cfg" |
| 259 | |
Tarek Ziadé | c1375d5 | 2009-02-14 14:35:51 +0000 | [diff] [blame] | 260 | temp_dir = self.mkdtemp() |
| 261 | user_filename = os.path.join(temp_dir, user_filename) |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 262 | f = open(user_filename, 'w') |
Éric Araujo | bee5cef | 2010-11-05 23:51:56 +0000 | [diff] [blame] | 263 | try: |
| 264 | f.write('.') |
| 265 | finally: |
| 266 | f.close() |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 267 | |
| 268 | try: |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 269 | dist = Distribution() |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 270 | |
| 271 | # linux-style |
| 272 | if sys.platform in ('linux', 'darwin'): |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 273 | os.environ['HOME'] = temp_dir |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 274 | files = dist.find_config_files() |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 275 | self.assertTrue(user_filename in files) |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 276 | |
| 277 | # win32-style |
| 278 | if sys.platform == 'win32': |
| 279 | # home drive should be found |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 280 | os.environ['HOME'] = temp_dir |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 281 | files = dist.find_config_files() |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 282 | self.assertTrue(user_filename in files, |
Alexandre Vassalotti | 8ae3e05 | 2008-05-16 00:41:41 +0000 | [diff] [blame] | 283 | '%r not found in %r' % (user_filename, files)) |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 284 | finally: |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 285 | os.remove(user_filename) |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 286 | |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 287 | def test_fix_help_options(self): |
| 288 | help_tuples = [('a', 'b', 'c', 'd'), (1, 2, 3, 4)] |
| 289 | fancy_options = fix_help_options(help_tuples) |
| 290 | self.assertEquals(fancy_options[0], ('a', 'b', 'c')) |
| 291 | self.assertEquals(fancy_options[1], (1, 2, 3)) |
| 292 | |
| 293 | def test_show_help(self): |
| 294 | # smoke test, just makes sure some help is displayed |
| 295 | dist = Distribution() |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 296 | sys.argv = [] |
Tarek Ziadé | 430fb63 | 2009-10-18 11:34:51 +0000 | [diff] [blame] | 297 | dist.help = 1 |
| 298 | dist.script_name = 'setup.py' |
| 299 | with captured_stdout() as s: |
| 300 | dist.parse_command_line() |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 301 | |
| 302 | output = [line for line in s.getvalue().split('\n') |
| 303 | if line.strip() != ''] |
Benjamin Peterson | c9c0f20 | 2009-06-30 23:06:06 +0000 | [diff] [blame] | 304 | self.assertTrue(len(output) > 0) |
Tarek Ziadé | d2dd51d | 2009-05-17 10:50:24 +0000 | [diff] [blame] | 305 | |
Tarek Ziadé | df872d4 | 2009-12-06 09:28:17 +0000 | [diff] [blame] | 306 | def test_long_description(self): |
| 307 | long_desc = textwrap.dedent("""\ |
| 308 | example:: |
| 309 | We start here |
| 310 | and continue here |
| 311 | and end here.""") |
| 312 | attrs = {"name": "package", |
| 313 | "version": "1.0", |
| 314 | "long_description": long_desc} |
| 315 | |
Tarek Ziadé | 3679727 | 2010-07-22 12:50:05 +0000 | [diff] [blame] | 316 | dist = Distribution(attrs) |
Tarek Ziadé | df872d4 | 2009-12-06 09:28:17 +0000 | [diff] [blame] | 317 | meta = self.format_metadata(dist) |
| 318 | meta = meta.replace('\n' + 8 * ' ', '\n') |
| 319 | self.assertTrue(long_desc in meta) |
| 320 | |
Fred Drake | d04573f | 2004-08-03 16:37:40 +0000 | [diff] [blame] | 321 | def test_suite(): |
Fred Drake | db7b002 | 2005-03-20 22:19:47 +0000 | [diff] [blame] | 322 | suite = unittest.TestSuite() |
| 323 | suite.addTest(unittest.makeSuite(DistributionTestCase)) |
| 324 | suite.addTest(unittest.makeSuite(MetadataTestCase)) |
| 325 | return suite |
Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 326 | |
| 327 | if __name__ == "__main__": |
Éric Araujo | 70ec44a | 2010-11-06 02:44:43 +0000 | [diff] [blame] | 328 | run_unittest(test_suite()) |