diff options
author | Steven Knight <knight@baldmt.com> | 2008-05-18 05:12:35 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2008-05-18 05:12:35 (GMT) |
commit | 61173c84a9f0535b47b21b9c2623dc5f853d9ca0 (patch) | |
tree | 97e2df9b08fd971d661d41e0ce1bc169c4d7efa7 /QMTest | |
parent | 64daa285c6d9089cd74a988d5512f2007bf7254f (diff) | |
download | SCons-61173c84a9f0535b47b21b9c2623dc5f853d9ca0.zip SCons-61173c84a9f0535b47b21b9c2623dc5f853d9ca0.tar.gz SCons-61173c84a9f0535b47b21b9c2623dc5f853d9ca0.tar.bz2 |
Merged revisions 2928-2932,2934-2946 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core
........
r2932 | garyo | 2008-04-30 09:14:38 -0700 (Wed, 30 Apr 2008) | 1 line
Add doc for site_scons dir and related options. Closes issue #1996.
........
r2934 | stevenknight | 2008-04-30 22:05:38 -0700 (Wed, 30 Apr 2008) | 3 lines
Issue 2039: Fix a syntax error in Intel C compiler support on Windows.
(Jonas Olsson)
........
r2935 | belley | 2008-05-01 06:59:21 -0700 (Thu, 01 May 2008) | 10 lines
test/KeyboardInterrupt.py no longer hangs under Cygwin.
There seems to be a bug on Cygwin where the compiler process hangs
after sending the SIGINT signal to the process group. It is probably a
bug in cygwin1.dll, or maybe in the Python 'C' code or the Python
subprocess module. We therefore do not use 'killpg' on Cygwin.
Benoit
........
r2936 | belley | 2008-05-01 07:10:23 -0700 (Thu, 01 May 2008) | 12 lines
cell_contents not defined in python < 2.5. [Issue 2035]
Some versions of Python supports lexical scoping of local variables
(aka closures) but not the cell_contents attribute that would allow
the FunctionAction signature that take the content of these closure
cells into account. The access to the cell_contents attribute is now
protected with a try/except AttributeError so that at least the other
parts of the function signature are properly computed.
Benoit
........
r2937 | stevenknight | 2008-05-01 12:08:25 -0700 (Thu, 01 May 2008) | 3 lines
When running tests, allow the user to set the $SCONSIGN variable to pick a
specific sconsign script to execute.
........
r2938 | stevenknight | 2008-05-02 19:13:14 -0700 (Fri, 02 May 2008) | 2 lines
Set svn:ignore to '*.py[co]'.
........
r2939 | stevenknight | 2008-05-08 21:07:18 -0700 (Thu, 08 May 2008) | 4 lines
Issue 2033: Fix excessive memory use when a Python Value node's
representation is stored in a .sconsign file and then re-stored
after being interpreted with escaped backslashes and quotes.
........
r2940 | cournape | 2008-05-16 03:56:49 -0700 (Fri, 16 May 2008) | 1 line
Fix issue 2054.
........
r2941 | stevenknight | 2008-05-16 12:02:45 -0700 (Fri, 16 May 2008) | 8 lines
Issue 2045: After a Node has failed its build and we're propagating
the failure to other Nodes on the candidate list, don't marke candidate
Nodes as FAILED if they've already been visited and been determined
to be up-to-date. This avoids problems with Configure tests not
running because failure of an earlier Configure tests caused (e.g.)
/usr/bin/g++ to get marked as FAILED, making SCons think it doesn't
need to bother trying to rebuild anything that will use it...
........
r2942 | stevenknight | 2008-05-16 12:10:14 -0700 (Fri, 16 May 2008) | 8 lines
Improve the regular expressions used by the test infrastructure to
examine SCons output to decide if a list of targets are considered
up-to-date or not. The new code uses the re.escape() function instead
of hand-escaping '.' and '\n'. This required a little restructuring in
the not_up_to_date() method to escape the characters within the arguments
themselves, but not the surrounding characters we use to construct the
regex that makes sure those strings *don't* exist in the output.
........
r2943 | stevenknight | 2008-05-16 14:04:23 -0700 (Fri, 16 May 2008) | 3 lines
Issue 2049: Handle multiple pipe-separated values in Visual Studio for
INCLUDE, LIB and PATH. Still only uses Win32, not any other values.
........
r2944 | stevenknight | 2008-05-16 18:36:27 -0700 (Fri, 16 May 2008) | 2 lines
Record changes by David Cournapeau and Benoit Belley.
........
r2945 | stevenknight | 2008-05-17 07:13:46 -0700 (Sat, 17 May 2008) | 3 lines
Pass in dc as a keyword argument to _smartLink for older Python versions
without nested scopes.
........
r2946 | stevenknight | 2008-05-17 07:14:01 -0700 (Sat, 17 May 2008) | 3 lines
Expect a warning about shadowing global variables on Python 2.1.
(This code can go away after we release 1.0.)
........
Diffstat (limited to 'QMTest')
-rw-r--r-- | QMTest/TestSCons.py | 17 | ||||
-rw-r--r-- | QMTest/TestSConsign.py | 24 |
2 files changed, 25 insertions, 16 deletions
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py index 1277af5..cfcbfb1 100644 --- a/QMTest/TestSCons.py +++ b/QMTest/TestSCons.py @@ -338,9 +338,8 @@ class TestSCons(TestCommon): if options: arguments = options + " " + arguments kw['arguments'] = arguments - kw['stdout'] = self.wrap_stdout(read_str = read_str, build_str = s) - kw['stdout'] = string.replace(kw['stdout'],'\n','\\n') - kw['stdout'] = string.replace(kw['stdout'],'.','\\.') + stdout = self.wrap_stdout(read_str = read_str, build_str = s) + kw['stdout'] = re.escape(stdout) kw['match'] = self.match_re_dotall apply(self.run, [], kw) @@ -350,14 +349,14 @@ class TestSCons(TestCommon): This function is most useful in conjunction with the -n option. """ s = "" - for arg in string.split(arguments): - s = s + "(?!scons: `%s' is up to date.)" % arg + for arg in string.split(arguments): + s = s + "(?!scons: `%s' is up to date.)" % re.escape(arg) if options: arguments = options + " " + arguments + s = '('+s+'[^\n]*\n)*' kw['arguments'] = arguments - kw['stdout'] = self.wrap_stdout(build_str="("+s+"[^\n]*\n)*") - kw['stdout'] = string.replace(kw['stdout'],'\n','\\n') - kw['stdout'] = string.replace(kw['stdout'],'.','\\.') + stdout = re.escape(self.wrap_stdout(build_str='ARGUMENTSGOHERE')) + kw['stdout'] = string.replace(stdout, 'ARGUMENTSGOHERE', s) kw['match'] = self.match_re_dotall apply(self.run, [], kw) @@ -833,7 +832,7 @@ print "self._msvs_versions =", str(env['MSVS']['VERSIONS']) def __init__(self, p): self.pos = p - def matchPart(log, logfile, lastEnd): + def matchPart(log, logfile, lastEnd, NoMatch=NoMatch): m = re.match(log, logfile[lastEnd:]) if not m: raise NoMatch, lastEnd diff --git a/QMTest/TestSConsign.py b/QMTest/TestSConsign.py index d144040..fd8ef30 100644 --- a/QMTest/TestSConsign.py +++ b/QMTest/TestSConsign.py @@ -54,13 +54,23 @@ class TestSConsign(TestSCons): 'interpreter' : python, # imported from TestSCons } - if os.path.exists(self.script_path('sconsign.py')): - sconsign = 'sconsign.py' - elif os.path.exists(self.script_path('sconsign')): - sconsign = 'sconsign' - else: - print "Can find neither 'sconsign.py' nor 'sconsign' scripts." - self.no_result() + if not kw.has_key('program'): + kw['program'] = os.environ.get('SCONS') + if not kw['program']: + if os.path.exists('scons'): + kw['program'] = 'scons' + else: + kw['program'] = 'scons.py' + + sconsign = os.environ.get('SCONSIGN') + if not sconsign: + if os.path.exists(self.script_path('sconsign.py')): + sconsign = 'sconsign.py' + elif os.path.exists(self.script_path('sconsign')): + sconsign = 'sconsign' + else: + print "Can find neither 'sconsign.py' nor 'sconsign' scripts." + self.no_result() self.set_sconsign(sconsign) def script_path(self, script): |