diff options
author | Steven Knight <knight@baldmt.com> | 2003-09-02 03:11:08 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2003-09-02 03:11:08 (GMT) |
commit | f1d7f1dc87300ea5c905c648c39aeee031100c8c (patch) | |
tree | a2c5f530c8b783381fb7b1aec8a2ef1590936abe /test/sconsign-script.py | |
parent | dc59d7046d9705c6b6f7bd6aa88a6a8b620c66f2 (diff) | |
download | SCons-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.py | 279 |
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() |