diff options
author | Steven Knight <knight@baldmt.com> | 2009-02-09 21:09:43 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2009-02-09 21:09:43 (GMT) |
commit | a21a4aa4056e379660f86570d939a75b4e6c5872 (patch) | |
tree | 7ba7fa02e39ea084fd4ebe450a58639c3a871214 /test/CPPPATH | |
parent | ba21ffe311490bb348716e8e9127109e7fdc2f08 (diff) | |
download | SCons-a21a4aa4056e379660f86570d939a75b4e6c5872.zip SCons-a21a4aa4056e379660f86570d939a75b4e6c5872.tar.gz SCons-a21a4aa4056e379660f86570d939a75b4e6c5872.tar.bz2 |
Handle finding implicit dependents defined with doubled path
separators, as can happen on Windows systems when the backslashes
in the path name are escaped (e.g. "C:\\some\\include.h").
Diffstat (limited to 'test/CPPPATH')
-rw-r--r-- | test/CPPPATH/absolute-path.py | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/test/CPPPATH/absolute-path.py b/test/CPPPATH/absolute-path.py index 5c60de1..1912f4f 100644 --- a/test/CPPPATH/absolute-path.py +++ b/test/CPPPATH/absolute-path.py @@ -29,22 +29,32 @@ Verify the ability to #include a file with an absolute path name. (Which is not strictly a test of using $CPPPATH, but it's in the ball park...) """ +import os +import string + import TestSCons test = TestSCons.TestSCons() test.subdir('include', 'work') -inc_h = test.workpath('include', 'inc.h') +inc1_h = test.workpath('include', 'inc1.h') +inc2_h = test.workpath('include', 'inc2.h') does_not_exist_h = test.workpath('include', 'does_not_exist.h') +# Verify that including an absolute path still works even if they +# double the separators in the input file. This can happen especially +# on Windows if they use \\ to represent an escaped backslash. +inc2_h = string.replace(inc2_h, os.sep, os.sep+os.sep) + test.write(['work', 'SConstruct'], """\ Program('prog.c') """) test.write(['work', 'prog.c'], """\ #include <stdio.h> -#include "%(inc_h)s" +#include "%(inc1_h)s" +#include "%(inc2_h)s" #if 0 #include "%(does_not_exist_h)s" #endif @@ -53,29 +63,34 @@ int main(int argc, char *argv[]) { argv[argc++] = "--"; - printf("%%s\\n", STRING); + printf("%%s\\n", STRING1); + printf("%%s\\n", STRING2); return 0; } """ % locals()) -test.write(['include', 'inc.h'], """\ -#define STRING "include/inc.h 1\\n" +test.write(['include', 'inc1.h'], """\ +#define STRING1 "include/inc1.h A\\n" +""") + +test.write(['include', 'inc2.h'], """\ +#define STRING2 "include/inc2.h A\\n" """) test.run(chdir = 'work', arguments = '.') test.up_to_date(chdir = 'work', arguments = '.') -test.write(['include', 'inc.h'], """\ -#define STRING "include/inc.h 2\\n" +test.write(['include', 'inc1.h'], """\ +#define STRING1 "include/inc1.h B\\n" """) test.not_up_to_date(chdir = 'work', arguments = '.') -test.pass_test() +test.write(['include', 'inc2.h'], """\ +#define STRING2 "include/inc2.h B\\n" +""") + +test.not_up_to_date(chdir = 'work', arguments = '.') -# Local Variables: -# tab-width:4 -# indent-tabs-mode:nil -# End: -# vim: set expandtab tabstop=4 shiftwidth=4: +test.pass_test() |