summaryrefslogtreecommitdiff
path: root/test/Glob
diff options
context:
space:
mode:
authorFlorian Miedniak <florian.miedniak@web.de>2015-09-22 10:47:29 +0200
committerFlorian Miedniak <florian.miedniak@web.de>2015-09-22 10:47:29 +0200
commitc43131149ad76ce96209773e7945099aa841d113 (patch)
tree581374b134eebe16ba4c1d62b9f2f9ad6b067b2d /test/Glob
parent55e8c833ea3e52f6be7cc661924f953def7c6296 (diff)
downloadscons-c43131149ad76ce96209773e7945099aa841d113.tar.gz
Fixed #3011: Glob() called with exclude didn't work when called from a SConscript that is executed with variant_dir set and duplicate=0
Diffstat (limited to 'test/Glob')
-rw-r--r--test/Glob/VariantDir.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/Glob/VariantDir.py b/test/Glob/VariantDir.py
index 175e5b9c..c9c1d076 100644
--- a/test/Glob/VariantDir.py
+++ b/test/Glob/VariantDir.py
@@ -34,6 +34,7 @@ import TestSCons
test = TestSCons.TestSCons()
test.subdir('src')
+test.subdir('src/sub1')
test.write('SConstruct', """\
VariantDir('var1', 'src')
@@ -41,6 +42,9 @@ VariantDir('var2', 'src')
SConscript('var1/SConscript')
SConscript('var2/SConscript')
+SConscript('var1/sub1/SConscript')
+SConscript('var2/sub1/SConscript')
+SConscript('src/sub1/SConscript', src_dir = 'src', variant_dir = 'var3', duplicate=0)
""")
test.write(['src', 'SConscript'], """\
@@ -55,16 +59,46 @@ def concatenate(target, source, env):
env['BUILDERS']['Concatenate'] = Builder(action=concatenate)
env.Concatenate('f.out', sorted(Glob('f*.in'), key=lambda t: t.name))
+env.Concatenate('fex.out', sorted(Glob('f*.in', exclude = 'f1.in'), key=lambda t: t.name))
+""")
+
+test.write(['src', 'sub1', 'SConscript'], """\
+env = Environment()
+
+def concatenate(target, source, env):
+ fp = open(str(target[0]), 'wb')
+ for s in source:
+ fp.write(open(str(s), 'rb').read())
+ fp.close()
+
+env['BUILDERS']['Concatenate'] = Builder(action=concatenate)
+
+env.Concatenate('f.out', sorted(Glob('f*.in'), key=lambda t: t.name))
+env.Concatenate('fex.out', sorted(Glob('f*.in', exclude = 'f1.in'), key=lambda t: t.name))
""")
test.write(['src', 'f1.in'], "src/f1.in\n")
test.write(['src', 'f2.in'], "src/f2.in\n")
test.write(['src', 'f3.in'], "src/f3.in\n")
+test.write(['src', 'sub1', 'f1.in'], "src/sub1/f1.in\n")
+test.write(['src', 'sub1', 'f2.in'], "src/sub1/f2.in\n")
+test.write(['src', 'sub1', 'f3.in'], "src/sub1/f3.in\n")
+
test.run(arguments = '.')
test.must_match(['var1', 'f.out'], "src/f1.in\nsrc/f2.in\nsrc/f3.in\n")
test.must_match(['var2', 'f.out'], "src/f1.in\nsrc/f2.in\nsrc/f3.in\n")
+test.must_match(['var1', 'fex.out'], "src/f2.in\nsrc/f3.in\n")
+test.must_match(['var2', 'fex.out'], "src/f2.in\nsrc/f3.in\n")
+
+test.must_match(['var1', 'sub1', 'f.out'], "src/sub1/f1.in\nsrc/sub1/f2.in\nsrc/sub1/f3.in\n")
+test.must_match(['var2', 'sub1', 'f.out'], "src/sub1/f1.in\nsrc/sub1/f2.in\nsrc/sub1/f3.in\n")
+test.must_match(['var1', 'sub1', 'fex.out'], "src/sub1/f2.in\nsrc/sub1/f3.in\n")
+test.must_match(['var2', 'sub1', 'fex.out'], "src/sub1/f2.in\nsrc/sub1/f3.in\n")
+
+test.must_match(['var3', 'sub1', 'f.out'], "src/sub1/f1.in\nsrc/sub1/f2.in\nsrc/sub1/f3.in\n")
+test.must_match(['var3', 'sub1', 'fex.out'], "src/sub1/f2.in\nsrc/sub1/f3.in\n")
test.pass_test()