| 
									
										
										
										
											2009-04-05 21:49:36 +00:00
										 |  |  | """Tests for distutils.filelist.""" | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | import re | 
					
						
							| 
									
										
										
										
											2009-04-05 21:49:36 +00:00
										 |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | from distutils import debug | 
					
						
							|  |  |  | from distutils.log import WARN | 
					
						
							|  |  |  | from distutils.errors import DistutilsTemplateError | 
					
						
							|  |  |  | from distutils.filelist import glob_to_re, translate_pattern, FileList | 
					
						
							| 
									
										
										
										
											2009-09-21 13:01:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-06 02:44:43 +00:00
										 |  |  | from test.support import captured_stdout, run_unittest | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | from distutils.tests import support | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  | MANIFEST_IN = """\
 | 
					
						
							|  |  |  | include ok | 
					
						
							|  |  |  | include xo | 
					
						
							|  |  |  | exclude xo | 
					
						
							|  |  |  | include foo.tmp | 
					
						
							|  |  |  | include buildout.cfg | 
					
						
							|  |  |  | global-include *.x | 
					
						
							|  |  |  | global-include *.txt | 
					
						
							|  |  |  | global-exclude *.tmp | 
					
						
							|  |  |  | recursive-include f *.oo | 
					
						
							|  |  |  | recursive-exclude global *.x | 
					
						
							|  |  |  | graft dir | 
					
						
							|  |  |  | prune dir3 | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def make_local_path(s): | 
					
						
							|  |  |  |     """Converts '/' in a string to os.sep""" | 
					
						
							|  |  |  |     return s.replace('/', os.sep) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class FileListTestCase(support.LoggingSilencer, | 
					
						
							|  |  |  |                        unittest.TestCase): | 
					
						
							| 
									
										
										
										
											2009-08-18 08:23:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |     def assertNoWarnings(self): | 
					
						
							|  |  |  |         self.assertEqual(self.get_logs(WARN), []) | 
					
						
							|  |  |  |         self.clear_logs() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def assertWarnings(self): | 
					
						
							|  |  |  |         self.assertGreater(len(self.get_logs(WARN)), 0) | 
					
						
							|  |  |  |         self.clear_logs() | 
					
						
							| 
									
										
										
										
											2009-04-05 21:49:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def test_glob_to_re(self): | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         sep = os.sep | 
					
						
							|  |  |  |         if os.sep == '\\': | 
					
						
							|  |  |  |             sep = re.escape(os.sep) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for glob, regex in ( | 
					
						
							|  |  |  |             # simple cases | 
					
						
							|  |  |  |             ('foo*', r'foo[^%(sep)s]*\Z(?ms)'), | 
					
						
							|  |  |  |             ('foo?', r'foo[^%(sep)s]\Z(?ms)'), | 
					
						
							|  |  |  |             ('foo??', r'foo[^%(sep)s][^%(sep)s]\Z(?ms)'), | 
					
						
							|  |  |  |             # special cases | 
					
						
							|  |  |  |             (r'foo\\*', r'foo\\\\[^%(sep)s]*\Z(?ms)'), | 
					
						
							|  |  |  |             (r'foo\\\*', r'foo\\\\\\[^%(sep)s]*\Z(?ms)'), | 
					
						
							|  |  |  |             ('foo????', r'foo[^%(sep)s][^%(sep)s][^%(sep)s][^%(sep)s]\Z(?ms)'), | 
					
						
							|  |  |  |             (r'foo\\??', r'foo\\\\[^%(sep)s][^%(sep)s]\Z(?ms)')): | 
					
						
							|  |  |  |             regex = regex % {'sep': sep} | 
					
						
							|  |  |  |             self.assertEqual(glob_to_re(glob), regex) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_process_template_line(self): | 
					
						
							|  |  |  |         # testing  all MANIFEST.in template patterns | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         l = make_local_path | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # simulated file list | 
					
						
							|  |  |  |         file_list.allfiles = ['foo.tmp', 'ok', 'xo', 'four.txt', | 
					
						
							|  |  |  |                               'buildout.cfg', | 
					
						
							|  |  |  |                               # filelist does not filter out VCS directories, | 
					
						
							|  |  |  |                               # it's sdist that does | 
					
						
							|  |  |  |                               l('.hg/last-message.txt'), | 
					
						
							|  |  |  |                               l('global/one.txt'), | 
					
						
							|  |  |  |                               l('global/two.txt'), | 
					
						
							|  |  |  |                               l('global/files.x'), | 
					
						
							|  |  |  |                               l('global/here.tmp'), | 
					
						
							|  |  |  |                               l('f/o/f.oo'), | 
					
						
							|  |  |  |                               l('dir/graft-one'), | 
					
						
							|  |  |  |                               l('dir/dir2/graft2'), | 
					
						
							|  |  |  |                               l('dir3/ok'), | 
					
						
							|  |  |  |                               l('dir3/sub/ok.txt'), | 
					
						
							|  |  |  |                              ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for line in MANIFEST_IN.split('\n'): | 
					
						
							|  |  |  |             if line.strip() == '': | 
					
						
							|  |  |  |                 continue | 
					
						
							|  |  |  |             file_list.process_template_line(line) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         wanted = ['ok', | 
					
						
							|  |  |  |                   'buildout.cfg', | 
					
						
							|  |  |  |                   'four.txt', | 
					
						
							|  |  |  |                   l('.hg/last-message.txt'), | 
					
						
							|  |  |  |                   l('global/one.txt'), | 
					
						
							|  |  |  |                   l('global/two.txt'), | 
					
						
							|  |  |  |                   l('f/o/f.oo'), | 
					
						
							|  |  |  |                   l('dir/graft-one'), | 
					
						
							|  |  |  |                   l('dir/dir2/graft2'), | 
					
						
							|  |  |  |                  ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertEqual(file_list.files, wanted) | 
					
						
							| 
									
										
										
										
											2009-04-05 21:49:36 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-21 13:01:54 +00:00
										 |  |  |     def test_debug_print(self): | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         with captured_stdout() as stdout: | 
					
						
							|  |  |  |             file_list.debug_print('xxx') | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertEqual(stdout.getvalue(), '') | 
					
						
							| 
									
										
										
										
											2009-09-21 13:01:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         debug.DEBUG = True | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             with captured_stdout() as stdout: | 
					
						
							|  |  |  |                 file_list.debug_print('xxx') | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |             self.assertEqual(stdout.getvalue(), 'xxx\n') | 
					
						
							| 
									
										
										
										
											2009-09-21 13:01:54 +00:00
										 |  |  |         finally: | 
					
						
							|  |  |  |             debug.DEBUG = False | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |     def test_set_allfiles(self): | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         files = ['a', 'b', 'c'] | 
					
						
							|  |  |  |         file_list.set_allfiles(files) | 
					
						
							|  |  |  |         self.assertEqual(file_list.allfiles, files) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_remove_duplicates(self): | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         file_list.files = ['a', 'b', 'a', 'g', 'c', 'g'] | 
					
						
							|  |  |  |         # files must be sorted beforehand (sdist does it) | 
					
						
							|  |  |  |         file_list.sort() | 
					
						
							|  |  |  |         file_list.remove_duplicates() | 
					
						
							|  |  |  |         self.assertEqual(file_list.files, ['a', 'b', 'c', 'g']) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_translate_pattern(self): | 
					
						
							|  |  |  |         # not regex | 
					
						
							|  |  |  |         self.assertTrue(hasattr( | 
					
						
							|  |  |  |             translate_pattern('a', anchor=True, is_regex=False), | 
					
						
							|  |  |  |             'search')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # is a regex | 
					
						
							|  |  |  |         regex = re.compile('a') | 
					
						
							|  |  |  |         self.assertEqual( | 
					
						
							|  |  |  |             translate_pattern(regex, anchor=True, is_regex=True), | 
					
						
							|  |  |  |             regex) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # plain string flagged as regex | 
					
						
							|  |  |  |         self.assertTrue(hasattr( | 
					
						
							|  |  |  |             translate_pattern('a', anchor=True, is_regex=True), | 
					
						
							|  |  |  |             'search')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # glob support | 
					
						
							|  |  |  |         self.assertTrue(translate_pattern( | 
					
						
							|  |  |  |             '*.py', anchor=True, is_regex=False).search('filelist.py')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_exclude_pattern(self): | 
					
						
							|  |  |  |         # return False if no match | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         self.assertFalse(file_list.exclude_pattern('*.py')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # return True if files match | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         file_list.files = ['a.py', 'b.py'] | 
					
						
							|  |  |  |         self.assertTrue(file_list.exclude_pattern('*.py')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # test excludes | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         file_list.files = ['a.py', 'a.txt'] | 
					
						
							|  |  |  |         file_list.exclude_pattern('*.py') | 
					
						
							|  |  |  |         self.assertEqual(file_list.files, ['a.txt']) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_include_pattern(self): | 
					
						
							|  |  |  |         # return False if no match | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         file_list.set_allfiles([]) | 
					
						
							|  |  |  |         self.assertFalse(file_list.include_pattern('*.py')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # return True if files match | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         file_list.set_allfiles(['a.py', 'b.txt']) | 
					
						
							|  |  |  |         self.assertTrue(file_list.include_pattern('*.py')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # test * matches all files | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         self.assertIsNone(file_list.allfiles) | 
					
						
							|  |  |  |         file_list.set_allfiles(['a.py', 'b.txt']) | 
					
						
							|  |  |  |         file_list.include_pattern('*') | 
					
						
							|  |  |  |         self.assertEqual(file_list.allfiles, ['a.py', 'b.txt']) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_process_template(self): | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         l = make_local_path | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         # invalid lines | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							|  |  |  |         for action in ('include', 'exclude', 'global-include', | 
					
						
							|  |  |  |                        'global-exclude', 'recursive-include', | 
					
						
							|  |  |  |                        'recursive-exclude', 'graft', 'prune', 'blarg'): | 
					
						
							|  |  |  |             self.assertRaises(DistutilsTemplateError, | 
					
						
							|  |  |  |                               file_list.process_template_line, action) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # include | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         file_list.set_allfiles(['a.py', 'b.txt', l('d/c.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('include *.py') | 
					
						
							|  |  |  |         self.assertEqual(file_list.files, ['a.py']) | 
					
						
							|  |  |  |         self.assertNoWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('include *.rb') | 
					
						
							|  |  |  |         self.assertEqual(file_list.files, ['a.py']) | 
					
						
							|  |  |  |         self.assertWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # exclude | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         file_list.files = ['a.py', 'b.txt', l('d/c.py')] | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('exclude *.py') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, ['b.txt', l('d/c.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertNoWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('exclude *.rb') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, ['b.txt', l('d/c.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # global-include | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         file_list.set_allfiles(['a.py', 'b.txt', l('d/c.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('global-include *.py') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, ['a.py', l('d/c.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertNoWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('global-include *.rb') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, ['a.py', l('d/c.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # global-exclude | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         file_list.files = ['a.py', 'b.txt', l('d/c.py')] | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('global-exclude *.py') | 
					
						
							|  |  |  |         self.assertEqual(file_list.files, ['b.txt']) | 
					
						
							|  |  |  |         self.assertNoWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('global-exclude *.rb') | 
					
						
							|  |  |  |         self.assertEqual(file_list.files, ['b.txt']) | 
					
						
							|  |  |  |         self.assertWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # recursive-include | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         file_list.set_allfiles(['a.py', l('d/b.py'), l('d/c.txt'), | 
					
						
							|  |  |  |                                 l('d/d/e.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('recursive-include d *.py') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertNoWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('recursive-include e *.py') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # recursive-exclude | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         file_list.files = ['a.py', l('d/b.py'), l('d/c.txt'), l('d/d/e.py')] | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('recursive-exclude d *.py') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, ['a.py', l('d/c.txt')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertNoWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('recursive-exclude e *.py') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, ['a.py', l('d/c.txt')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # graft | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         file_list.set_allfiles(['a.py', l('d/b.py'), l('d/d/e.py'), | 
					
						
							|  |  |  |                                 l('f/f.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('graft d') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertNoWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('graft e') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, [l('d/b.py'), l('d/d/e.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # prune | 
					
						
							|  |  |  |         file_list = FileList() | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         file_list.files = ['a.py', l('d/b.py'), l('d/d/e.py'), l('f/f.py')] | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('prune d') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, ['a.py', l('f/f.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertNoWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         file_list.process_template_line('prune e') | 
					
						
							| 
									
										
										
										
											2012-02-25 16:28:05 +01:00
										 |  |  |         self.assertEqual(file_list.files, ['a.py', l('f/f.py')]) | 
					
						
							| 
									
										
										
										
											2011-10-11 02:45:51 +02:00
										 |  |  |         self.assertWarnings() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-05 21:49:36 +00:00
										 |  |  | def test_suite(): | 
					
						
							|  |  |  |     return unittest.makeSuite(FileListTestCase) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							| 
									
										
										
										
											2010-11-06 02:44:43 +00:00
										 |  |  |     run_unittest(test_suite()) |