def __delitem__(self,key):
del self.Dictionary()[key]
-global my_normpath
-my_normpath = os.path.normpath
if os.path.normcase('foo') == os.path.normcase('FOO'):
- global my_normpath
my_normpath = os.path.normcase
+else:
+ my_normpath = os.path.normpath
def deps_match(self, deps, headers):
+ global my_normpath
scanned = map(my_normpath, map(str, deps))
expect = map(my_normpath, headers)
self.failUnless(scanned == expect, "expect %s != scanned %s" % (expect, scanned))
deps = s(make_node('f5.c'), env, path)
headers = ['f5a.h', 'f5b.h']
deps_match(self, deps, map(test.workpath, headers))
-
+
+class CScannerTestCase15(unittest.TestCase):
+ def runTest(self):
+ env = DummyEnvironment([])
+ s = SCons.Scanner.C.CScan()
+ suffixes = [".c", ".C", ".cxx", ".cpp", ".c++", ".cc",
+ ".h", ".H", ".hxx", ".hpp", ".hh",
+ ".F", ".fpp", ".FPP",
+ ".S", ".spp", ".SPP"]
+ for suffix in suffixes:
+ assert suffix in s.skeys, "%s not in skeys" % suffix
+
+
def suite():
suite = unittest.TestSuite()
suite.addTest(CScannerTestCase12())
suite.addTest(CScannerTestCase13())
suite.addTest(CScannerTestCase14())
+ suite.addTest(CScannerTestCase15())
return suite
if __name__ == "__main__":
if as and x86:
- test.write("wrapper.py",
-"""import os
+ test.write("wrapper.py", """\
+import os
import string
import sys
-open('%s', 'wb').write("wrapper.py\\n")
-os.system(string.join(sys.argv[1:], " "))
+open('%s', 'wb').write("wrapper.py: %%s\\n" %% sys.argv[-1])
+cmd = string.join(sys.argv[1:])
+os.system(cmd)
""" % string.replace(test.workpath('wrapper.out'), '\\', '\\\\'))
- test.write('SConstruct', """
+ test.write('SConstruct', """\
aaa = Environment()
bbb = aaa.Copy(AS = r'%s wrapper.py ' + WhereIs('as'))
+ccc = aaa.Copy(CPPPATH=['.'])
aaa.Program(target = 'aaa', source = ['aaa.s', 'aaa_main.c'])
bbb.Program(target = 'bbb', source = ['bbb.s', 'bbb_main.c'])
+ccc.Program(target = 'ccc', source = ['ccc.S', 'ccc_main.c'])
""" % python)
test.write('aaa.s',
.byte 0
""")
- test.write('bbb.s',
-""" .file "bbb.s"
+ test.write('bbb.s', """\
+.file "bbb.s"
.data
.align 4
.globl name
.byte 0
""")
+ test.write('ccc.h', """\
+#define STRING "ccc.S"
+""")
+
+ test.write('ccc.S', """\
+#include <ccc.h>
+.file STRING
+.data
+.align 4
+.globl name
+name:
+ .ascii STRING
+ .byte 0
+""")
+
test.write('aaa_main.c', r"""
extern char name[];
}
""")
- test.run(arguments = 'aaa' + _exe, stderr = None)
+ test.write('ccc_main.c', r"""
+extern char name[];
- test.run(program = test.workpath('aaa'), stdout = "aaa_main.c aaa.s\n")
+int
+main(int argc, char *argv[])
+{
+ argv[argc++] = "--";
+ printf("ccc_main.c %s\n", name);
+ exit (0);
+}
+""")
- test.fail_test(os.path.exists(test.workpath('wrapper.out')))
+ test.write('ddd_main.c', r"""
+extern char name[];
- test.run(arguments = 'bbb' + _exe)
+int
+main(int argc, char *argv[])
+{
+ argv[argc++] = "--";
+ printf("ddd_main.c %s\n", name);
+ exit (0);
+}
+""")
+
+ test.run()
+ test.run(program = test.workpath('aaa'), stdout = "aaa_main.c aaa.s\n")
test.run(program = test.workpath('bbb'), stdout = "bbb_main.c bbb.s\n")
+ test.run(program = test.workpath('ccc'), stdout = "ccc_main.c ccc.S\n")
- test.fail_test(test.read('wrapper.out') != "wrapper.py\n")
+ test.fail_test(test.read('wrapper.out') != "wrapper.py: bbb.s\n")
+
+ test.write("ccc.h", """\
+#define STRING "ccc.S 2"
+""")
+
+ test.run()
+ test.run(program = test.workpath('ccc'), stdout = "ccc_main.c ccc.S 2\n")
test.unlink('wrapper.out')