summaryrefslogtreecommitdiffstats
path: root/test/sconsign-script.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-09-02 03:11:08 (GMT)
committerSteven Knight <knight@baldmt.com>2003-09-02 03:11:08 (GMT)
commitf1d7f1dc87300ea5c905c648c39aeee031100c8c (patch)
treea2c5f530c8b783381fb7b1aec8a2ef1590936abe /test/sconsign-script.py
parentdc59d7046d9705c6b6f7bd6aa88a6a8b620c66f2 (diff)
downloadSCons-f1d7f1dc87300ea5c905c648c39aeee031100c8c.zip
SCons-f1d7f1dc87300ea5c905c648c39aeee031100c8c.tar.gz
SCons-f1d7f1dc87300ea5c905c648c39aeee031100c8c.tar.bz2
Support using a single .sconsign file. (Stephen Kennedy)
Diffstat (limited to 'test/sconsign-script.py')
-rw-r--r--test/sconsign-script.py279
1 files changed, 257 insertions, 22 deletions
diff --git a/test/sconsign-script.py b/test/sconsign-script.py
index eac6ab3..a5c0aa7 100644
--- a/test/sconsign-script.py
+++ b/test/sconsign-script.py
@@ -26,6 +26,7 @@ __revision__ = "/home/scons/scons/branch.0/baseline/test/sconsign.py 0.90.D001 2
import os.path
import string
+import time
import TestCmd
import TestSCons
@@ -49,16 +50,20 @@ def sort_match(test, lines, expect):
test = TestSCons.TestSCons(match = TestCmd.match_re)
-test.subdir('sub1', 'sub2')
-test.write('SConstruct', """
+
+
+test.subdir('work1', ['work1', 'sub1'], ['work1', 'sub2'],
+ 'work2', ['work2', 'sub1'], ['work2', 'sub2'])
+
+test.write(['work1', 'SConstruct'], """
env1 = Environment(PROGSUFFIX = '.exe', OBJSUFFIX = '.obj')
env1.Program('sub1/hello.c')
env2 = env1.Copy(CPPPATH = ['sub2'])
env2.Program('sub2/hello.c')
""")
-test.write(['sub1', 'hello.c'], r"""\
+test.write(['work1', 'sub1', 'hello.c'], r"""\
int
main(int argc, char *argv[])
{
@@ -68,7 +73,7 @@ main(int argc, char *argv[])
}
""")
-test.write(['sub2', 'hello.c'], r"""\
+test.write(['work1', 'sub2', 'hello.c'], r"""\
#include <inc1.h>
#include <inc2.h>
int
@@ -80,19 +85,19 @@ main(int argc, char *argv[])
}
""")
-test.write(['sub2', 'inc1.h'], r"""\
+test.write(['work1', 'sub2', 'inc1.h'], r"""\
#define STRING1 "inc1.h"
""")
-test.write(['sub2', 'inc2.h'], r"""\
+test.write(['work1', 'sub2', 'inc2.h'], r"""\
#define STRING2 "inc2.h"
""")
-test.run(arguments = '--implicit-cache .')
+test.run(chdir = 'work1', arguments = '--implicit-cache .')
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "sub1/.sconsign",
+ arguments = "work1/sub1/.sconsign",
stdout = """\
hello.exe: None \S+ None
hello.obj: None \S+ None
@@ -100,7 +105,7 @@ hello.obj: None \S+ None
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "-v sub1/.sconsign",
+ arguments = "-v work1/sub1/.sconsign",
stdout = """\
hello.exe:
timestamp: None
@@ -114,7 +119,7 @@ hello.obj:
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "-b -v sub1/.sconsign",
+ arguments = "-b -v work1/sub1/.sconsign",
stdout = """\
hello.exe:
bsig: \S+
@@ -124,7 +129,7 @@ hello.obj:
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "-c -v sub1/.sconsign",
+ arguments = "-c -v work1/sub1/.sconsign",
stdout = """\
hello.exe:
csig: None
@@ -134,14 +139,14 @@ hello.obj:
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "-e hello.obj sub1/.sconsign",
+ arguments = "-e hello.obj work1/sub1/.sconsign",
stdout = """\
hello.obj: None \S+ None
""")
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "-e hello.obj -e hello.exe -e hello.obj sub1/.sconsign",
+ arguments = "-e hello.obj -e hello.exe -e hello.obj work1/sub1/.sconsign",
stdout = """\
hello.obj: None \S+ None
hello.exe: None \S+ None
@@ -150,7 +155,7 @@ hello.obj: None \S+ None
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "sub2/.sconsign",
+ arguments = "work1/sub2/.sconsign",
stdout = """\
hello.exe: None \S+ None
hello.obj: None \S+ None
@@ -161,7 +166,7 @@ hello.obj: None \S+ None
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "-i -v sub2/.sconsign",
+ arguments = "-i -v work1/sub2/.sconsign",
stdout = """\
hello.exe:
hello.obj:
@@ -173,7 +178,7 @@ hello.obj:
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "-e hello.obj sub2/.sconsign sub1/.sconsign",
+ arguments = "-e hello.obj work1/sub2/.sconsign work1/sub1/.sconsign",
stdout = """\
hello.obj: None \S+ None
%s
@@ -182,9 +187,9 @@ hello.obj: None \S+ None
""" % (string.replace(os.path.join('sub2', 'inc1.h'), '\\', '\\\\'),
string.replace(os.path.join('sub2', 'inc2.h'), '\\', '\\\\')))
-test.run(arguments = '--clean .')
+test.run(chdir = 'work1', arguments = '--clean .')
-test.write('SConstruct', """
+test.write(['work1', 'SConstruct'], """
SourceSignatures('timestamp')
TargetSignatures('content')
env1 = Environment(PROGSUFFIX = '.exe', OBJSUFFIX = '.obj')
@@ -193,14 +198,13 @@ env2 = env1.Copy(CPPPATH = ['sub2'])
env2.Program('sub2/hello.c')
""")
-import time
time.sleep(1)
-test.run(arguments = '. --max-drift=1')
+test.run(chdir = 'work1', arguments = '. --max-drift=1')
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "sub1/.sconsign")
+ arguments = "work1/sub1/.sconsign")
test.fail_test(not sort_match(test, test.stdout(), """\
hello.exe: None \S+ None
@@ -210,7 +214,7 @@ hello.obj: None \S+ None
test.run(interpreter = TestSCons.python,
program = sconsign,
- arguments = "-r sub1/.sconsign")
+ arguments = "-r work1/sub1/.sconsign")
test.fail_test(not sort_match(test, test.stdout(), """\
hello.exe: None \S+ None
@@ -218,4 +222,235 @@ hello.c: '\S+ \S+ [ \d]\d \d\d:\d\d:\d\d \d\d\d\d' None \d+
hello.obj: None \S+ None
"""))
+
+##############################################################################
+
+test.write(['work2', 'SConstruct'], """
+SConsignFile()
+env1 = Environment(PROGSUFFIX = '.exe', OBJSUFFIX = '.obj')
+env1.Program('sub1/hello.c')
+env2 = env1.Copy(CPPPATH = ['sub2'])
+env2.Program('sub2/hello.c')
+""")
+
+test.write(['work2', 'sub1', 'hello.c'], r"""\
+int
+main(int argc, char *argv[])
+{
+ argv[argc++] = "--";
+ printf("sub1/hello.c\n");
+ exit (0);
+}
+""")
+
+test.write(['work2', 'sub2', 'hello.c'], r"""\
+#include <inc1.h>
+#include <inc2.h>
+int
+main(int argc, char *argv[])
+{
+ argv[argc++] = "--";
+ printf("sub2/goodbye.c\n");
+ exit (0);
+}
+""")
+
+test.write(['work2', 'sub2', 'inc1.h'], r"""\
+#define STRING1 "inc1.h"
+""")
+
+test.write(['work2', 'sub2', 'inc2.h'], r"""\
+#define STRING2 "inc2.h"
+""")
+
+test.run(chdir = 'work2', arguments = '--implicit-cache .')
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "work2/.sconsign.dbm",
+ stdout = """\
+=== sub1:
+hello.exe: None \S+ None
+hello.obj: None \S+ None
+=== sub2:
+hello.exe: None \S+ None
+hello.obj: None \S+ None
+ %s
+ %s
+""" % (string.replace(os.path.join('sub2', 'inc1.h'), '\\', '\\\\'),
+ string.replace(os.path.join('sub2', 'inc2.h'), '\\', '\\\\')))
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-v work2/.sconsign.dbm",
+ stdout = """\
+=== sub1:
+hello.exe:
+ timestamp: None
+ bsig: \S+
+ csig: None
+hello.obj:
+ timestamp: None
+ bsig: \S+
+ csig: None
+=== sub2:
+hello.exe:
+ timestamp: None
+ bsig: \S+
+ csig: None
+hello.obj:
+ timestamp: None
+ bsig: \S+
+ csig: None
+ implicit:
+ %s
+ %s
+""" % (string.replace(os.path.join('sub2', 'inc1.h'), '\\', '\\\\'),
+ string.replace(os.path.join('sub2', 'inc2.h'), '\\', '\\\\')))
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-b -v work2/.sconsign.dbm",
+ stdout = """\
+=== sub1:
+hello.exe:
+ bsig: \S+
+hello.obj:
+ bsig: \S+
+=== sub2:
+hello.exe:
+ bsig: \S+
+hello.obj:
+ bsig: \S+
+""")
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-c -v work2/.sconsign.dbm",
+ stdout = """\
+=== sub1:
+hello.exe:
+ csig: None
+hello.obj:
+ csig: None
+=== sub2:
+hello.exe:
+ csig: None
+hello.obj:
+ csig: None
+""")
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-e hello.obj work2/.sconsign.dbm",
+ stdout = """\
+=== sub1:
+hello.obj: None \S+ None
+=== sub2:
+hello.obj: None \S+ None
+ %s
+ %s
+""" % (string.replace(os.path.join('sub2', 'inc1.h'), '\\', '\\\\'),
+ string.replace(os.path.join('sub2', 'inc2.h'), '\\', '\\\\')))
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-e hello.obj -e hello.exe -e hello.obj work2/.sconsign.dbm",
+ stdout = """\
+=== sub1:
+hello.obj: None \S+ None
+hello.exe: None \S+ None
+hello.obj: None \S+ None
+=== sub2:
+hello.obj: None \S+ None
+ %s
+ %s
+hello.exe: None \S+ None
+hello.obj: None \S+ None
+ %s
+ %s
+""" % (string.replace(os.path.join('sub2', 'inc1.h'), '\\', '\\\\'),
+ string.replace(os.path.join('sub2', 'inc2.h'), '\\', '\\\\'),
+ string.replace(os.path.join('sub2', 'inc1.h'), '\\', '\\\\'),
+ string.replace(os.path.join('sub2', 'inc2.h'), '\\', '\\\\')))
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-i -v work2/.sconsign.dbm",
+ stdout = """\
+=== sub1:
+hello.exe:
+hello.obj:
+=== sub2:
+hello.exe:
+hello.obj:
+ implicit:
+ %s
+ %s
+""" % (string.replace(os.path.join('sub2', 'inc1.h'), '\\', '\\\\'),
+ string.replace(os.path.join('sub2', 'inc2.h'), '\\', '\\\\')))
+
+test.run(chdir = 'work2', arguments = '--clean .')
+
+test.write(['work2','SConstruct'], """
+SConsignFile('my_sconsign')
+SourceSignatures('timestamp')
+TargetSignatures('content')
+env1 = Environment(PROGSUFFIX = '.exe', OBJSUFFIX = '.obj')
+env1.Program('sub1/hello.c')
+env2 = env1.Copy(CPPPATH = ['sub2'])
+env2.Program('sub2/hello.c')
+""")
+
+time.sleep(1)
+
+test.run(chdir = 'work2', arguments = '. --max-drift=1')
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-d sub1 -f dbm work2/my_sconsign")
+
+test.fail_test(not sort_match(test, test.stdout(), """\
+=== sub1:
+hello.exe: None \S+ None
+hello.obj: None \S+ None
+hello.c: \d+ None \d+
+"""))
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-r -d sub1 -f dbm work2/my_sconsign")
+
+test.fail_test(not sort_match(test, test.stdout(), """\
+=== sub1:
+hello.exe: None \S+ None
+hello.obj: None \S+ None
+hello.c: '\S+ \S+ [ \d]\d \d\d:\d\d:\d\d \d\d\d\d' None \d+
+"""))
+
+##############################################################################
+
+test.write('bad_sconsign', "bad_sconsign\n")
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-f dbm no_sconsign",
+ stderr = "sconsign: \[Errno 2\] No such file or directory: 'no_sconsign'\n")
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-f dbm bad_sconsign",
+ stderr = "sconsign: ignoring invalid .sconsign.dbm file `bad_sconsign': db type could not be determined\n")
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-f sconsign no_sconsign",
+ stderr = "sconsign: \[Errno 2\] No such file or directory: 'no_sconsign'\n")
+
+test.run(interpreter = TestSCons.python,
+ program = sconsign,
+ arguments = "-f sconsign bad_sconsign",
+ stderr = "sconsign: ignoring invalid .sconsign file `bad_sconsign'\n")
+
+
test.pass_test()