def Default(*targets):
for t in targets:
- for s in string.split(t):
- default_targets.append(s)
+ if isinstance(t, SCons.Node.Node):
+ default_targets.append(t)
+ else:
+ for s in string.split(t):
+ default_targets.append(s)
def Help(text):
global help_option
if not targets:
targets = default_targets
-
- nodes = map(lambda x: SCons.Node.FS.default_fs.Entry(x), targets)
+
+ def Entry(x):
+ if isinstance(x, SCons.Node.Node):
+ return x
+ else:
+ return SCons.Node.FS.default_fs.Entry(x)
+
+ nodes = map(Entry, targets)
if not calc:
calc = SCons.Sig.Calculator(SCons.Sig.MD5)
test = TestSCons.TestSCons()
-test.subdir('one', 'two', 'three')
+test.subdir('one', 'two', 'three', 'four')
test.write('build.py', r"""
import sys
Default('foo.out bar.out')
""" % python)
-for dir in ['one', 'two', 'three']:
+test.write(['four', 'SConstruct'], """
+B = Builder(name = 'B', action = r'%s ../build.py $TARGET $SOURCES')
+env = Environment(BUILDERS = [B])
+Default(env.B(target = 'foo.out', source = 'foo.in'))
+Default(env.B(target = 'bar.out', source = 'bar.in'))
+""" % python)
+
+
+for dir in ['one', 'two', 'three', 'four']:
foo_in = os.path.join(dir, 'foo.in')
bar_in = os.path.join(dir, 'bar.in')
test.fail_test(test.read(test.workpath('three', 'foo.out')) != "three/foo.in\n")
test.fail_test(test.read(test.workpath('three', 'bar.out')) != "three/bar.in\n")
+test.fail_test(test.read(test.workpath('four', 'foo.out')) != "four/foo.in\n")
+test.fail_test(test.read(test.workpath('four', 'bar.out')) != "four/bar.in\n")
+
+
test.pass_test()