More doc infrastructure enhancements towards putting the function
[scons.git] / src / test_strings.py
index b609f595d6ba37a309f96cea381573be3462d846..4ca2245e63222368908297f528cadacb072d62a6 100644 (file)
@@ -54,18 +54,28 @@ build_local     = build_path('scons-local', 'scons-local-'+scons_version)
 build_src       = build_path('scons-src')
 
 class Checker:
-    def __init__(self, directory, search_list = [], remove_list=[]):
+    def __init__(self, directory,
+                 search_list = [],
+                 remove_list = [],
+                 remove_patterns = []):
         self.directory = directory
         self.search_list = search_list
         self.remove_dict = {}
         for r in remove_list:
             self.remove_dict[os.path.join(directory, r)] = 1
+        self.remove_patterns = remove_patterns
 
     def directory_exists(self):
         return os.path.exists(self.directory)
 
-    def remove_path(self, path):
-        return self.remove_dict.get(path)
+    def remove_this(self, name, path):
+        if self.remove_dict.get(path):
+            return 1
+        else:
+            for pattern in self.remove_patterns:
+                if fnmatch.fnmatch(name, pattern):
+                    return 1
+        return 0
 
     def search_this(self, path):
         if self.search_list:
@@ -79,7 +89,7 @@ class Checker:
     def visit(self, result, dirname, names):
         make_path_tuple = lambda n, d=dirname: (n, os.path.join(d, n))
         for name, path in map(make_path_tuple, names):
-            if self.remove_path(path):
+            if self.remove_this(name, path):
                 names.remove(name)
             elif self.search_this(path):
                 body = open(path, 'r').read()
@@ -101,6 +111,13 @@ class CheckUnexpandedStrings(Checker):
     def must_be_built(self):
         return None
 
+class CheckPassTest(Checker):
+    expressions = [
+        re.compile(r'\.pass_test()'),
+    ]
+    def must_be_built(self):
+        return None
+
 class CheckExpandedCopyright(Checker):
     expressions = [
         re.compile('Copyright.*The SCons Foundation'),
@@ -114,12 +131,14 @@ check_list = [
         'src',
         search_list = [ '*.py' ],
         remove_list = [
-            'engine/SCons/compat/_sets.py',
-            'engine/SCons/compat/_sets15.py',
-            'engine/SCons/compat/_subprocess.py',
+            'engine/SCons/compat/_scons_optparse.py',
+            'engine/SCons/compat/_scons_sets.py',
+            'engine/SCons/compat/_scons_sets15.py',
+            'engine/SCons/compat/_scons_shlex.py',
+            'engine/SCons/compat/_scons_subprocess.py',
+            'engine/SCons/compat/_scons_textwrap.py',
             'engine/SCons/Conftest.py',
             'engine/SCons/dblite.py',
-            'engine/SCons/Optik',
         ],
     ),
 
@@ -128,6 +147,14 @@ check_list = [
         search_list = [ '*.py' ],
     ),
 
+    CheckPassTest(
+        'test',
+        search_list = [ '*.py' ],
+        remove_list = [
+            'Fortran/common.py',
+        ],
+    ),
+
     CheckExpandedCopyright(
         build_scons,
         remove_list = [
@@ -137,33 +164,43 @@ check_list = [
             'debian',
             'dist',
             'gentoo',
-            'engine/SCons/compat/_sets.py',
-            'engine/SCons/compat/_sets15.py',
-            'engine/SCons/compat/_subprocess.py',
+            'engine/SCons/compat/_scons_optparse.py',
+            'engine/SCons/compat/_scons_sets.py',
+            'engine/SCons/compat/_scons_sets15.py',
+            'engine/SCons/compat/_scons_shlex.py',
+            'engine/SCons/compat/_scons_subprocess.py',
+            'engine/SCons/compat/_scons_textwrap.py',
             'engine/SCons/Conftest.py',
             'engine/SCons/dblite.py',
-            'engine/SCons/Optik',
             'MANIFEST',
             'os_spawnv_fix.diff',
             'setup.cfg',
         ],
+        # We run epydoc on the *.py files, which generates *.pyc files.
+        remove_patterns = [
+            '*.pyc',
+        ]
     ),
 
     CheckExpandedCopyright(
         build_local,
         remove_list = [
-            'SCons/compat/_sets.py',
-            'SCons/compat/_sets15.py',
-            'SCons/compat/_subprocess.py',
+            'SCons/compat/_scons_optparse.py',
+            'SCons/compat/_scons_sets.py',
+            'SCons/compat/_scons_sets15.py',
+            'SCons/compat/_scons_shlex.py',
+            'SCons/compat/_scons_subprocess.py',
+            'SCons/compat/_scons_textwrap.py',
             'SCons/Conftest.py',
             'SCons/dblite.py',
-            'SCons/Optik',
+            'scons-%s.egg-info' % scons_version,
         ],
     ),
 
     CheckExpandedCopyright(
         build_src,
         remove_list = [
+            'bench/timeit.py',
             'bin',
             'config',
             'debian',
@@ -180,6 +217,7 @@ check_list = [
             'doc/user/SCons-win32-install-2.jpg',
             'doc/user/SCons-win32-install-3.jpg',
             'doc/user/SCons-win32-install-4.jpg',
+            'examples',
             'gentoo',
             'QMTest/classes.qmc',
             'QMTest/configuration',
@@ -192,15 +230,24 @@ check_list = [
             'src/engine/MANIFEST.in',
             'src/engine/MANIFEST-xml.in',
             'src/engine/setup.cfg',
-            'src/engine/SCons/compat/_sets.py',
-            'src/engine/SCons/compat/_sets15.py',
-            'src/engine/SCons/compat/_subprocess.py',
+            'src/engine/SCons/compat/_scons_optparse.py',
+            'src/engine/SCons/compat/_scons_sets.py',
+            'src/engine/SCons/compat/_scons_sets15.py',
+            'src/engine/SCons/compat/_scons_shlex.py',
+            'src/engine/SCons/compat/_scons_subprocess.py',
+            'src/engine/SCons/compat/_scons_textwrap.py',
             'src/engine/SCons/Conftest.py',
             'src/engine/SCons/dblite.py',
-            'src/engine/SCons/Optik',
             'src/script/MANIFEST.in',
             'src/script/setup.cfg',
+            'test/Fortran/.exclude_tests',
+            'timings/changelog.html',
+            'timings/graph.html',
+            'timings/index.html',
         ],
+        remove_patterns = [
+            '*.js',
+        ]
     ),
 
 ]
@@ -225,3 +272,9 @@ if not_built:
     test.no_result(1)
 
 test.pass_test()
+
+# Local Variables:
+# tab-width:4
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=4 shiftwidth=4: