From b70731ca1c406687d1f53d7ff2ed357072e40e85 Mon Sep 17 00:00:00 2001 From: anatoly techtonik Date: Fri, 14 Dec 2012 16:09:03 +0300 Subject: CHANGES.txt: clean up after which Python 2.3 is unlikely to work --- src/CHANGES.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 6136f81..18b2c18 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -10,6 +10,8 @@ RELEASE 2.X.X - - Added ability to run scripts/scons.py directly from source checkout - Hide deprecated --debug={dtree,stree,tree} from --help output - Error messages from option parser now include hints about valid choices + - Cleaned up some Python 1.5 and pre-2.3 code, so don't expect SCons + to run on anything less than Python 2.4 anymore From Juan Lang: - Fix WiX Tool to use .wixobj rather than .wxiobj for compiler output -- cgit v0.12 From cab504dd1de67c0eaeb8f7f4553826937303a3e6 Mon Sep 17 00:00:00 2001 From: anatoly techtonik Date: Fri, 14 Dec 2012 16:09:38 +0300 Subject: runtest.py: Gradually moving from getopt to optparse --- runtest.py | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/runtest.py b/runtest.py index 3af7766..d6af07e 100644 --- a/runtest.py +++ b/runtest.py @@ -94,7 +94,6 @@ import time cwd = os.getcwd() -all = 0 baseline = 0 builddir = os.path.join(cwd, 'build') external = 0 @@ -171,9 +170,37 @@ Environment Variables: PRESERVE, PRESERVE_{PASS,FAIL,NO_RESULT}: preserve test subdirs TESTCMD_VERBOSE: turn on verbosity in TestCommand """ - -opts, args = getopt.getopt(sys.argv[1:], "3ab:def:hklno:P:p:qsv:Xx:t", - ['all', 'baseline=', 'builddir=', + + +# "Pass-through" option parsing -- an OptionParser that ignores +# unknown options and lets them pile up in the leftover argument +# list. Useful to gradually port getopt to optparse. + +from optparse import OptionParser, BadOptionError + +class PassThroughOptionParser(OptionParser): + def _process_long_opt(self, rargs, values): + try: + OptionParser._process_long_opt(self, rargs, values) + except BadOptionError, err: + self.largs.append(err.opt_str) + def _process_short_opts(self, rargs, values): + try: + OptionParser._process_short_opts(self, rargs, values) + except BadOptionError, err: + self.largs.append(err.opt_str) + +parser = PassThroughOptionParser(add_help_option=False) +parser.add_option('-a', '--all', action='store_true', + help="Run all tests.") +(options, args) = parser.parse_args() + +#print "options:", options +#print "args:", args + + +opts, args = getopt.getopt(args, "3b:def:hklno:P:p:qsv:Xx:t", + ['baseline=', 'builddir=', 'debug', 'external', 'file=', 'help', 'no-progress', 'list', 'no-exec', 'noqmtest', 'nopipefiles', 'output=', 'package=', 'passed', 'python=', 'qmtest', @@ -184,8 +211,6 @@ opts, args = getopt.getopt(sys.argv[1:], "3ab:def:hklno:P:p:qsv:Xx:t", for o, a in opts: if o in ['-3']: python3incompatibilities = 1 - elif o in ['-a', '--all']: - all = 1 elif o in ['-b', '--baseline']: baseline = a elif o in ['--builddir']: @@ -254,7 +279,7 @@ for o, a in opts: elif o in ['--xml']: format = o -if not args and not all and not testlistfile: +if not args and not options.all and not testlistfile: sys.stderr.write("""\ runtest.py: No tests were specified. List one or more tests on the command line, use the @@ -649,7 +674,7 @@ elif testlistfile: tests = [x for x in tests if x[0] != '#'] tests = [x[:-1] for x in tests] tests = [x.strip() for x in tests] -elif all and not qmtest: +elif options.all and not qmtest: # Find all of the SCons functional tests in the local directory # tree. This is anything under the 'src' subdirectory that ends # with 'Tests.py', or any Python script (*.py) under the 'test' -- cgit v0.12 From 7911aed366660c73c2d348d31e1657ed73372540 Mon Sep 17 00:00:00 2001 From: anatoly techtonik Date: Sat, 15 Dec 2012 16:51:47 +0300 Subject: runtest.py: Turn on unbuffered output ASAP. --- runtest.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/runtest.py b/runtest.py index d6af07e..e482dc6 100644 --- a/runtest.py +++ b/runtest.py @@ -289,6 +289,23 @@ runtest.py: No tests were specified. """) sys.exit(1) + +# --- setup stdout/stderr --- +class Unbuffered(object): + def __init__(self, file): + self.file = file + self.softspace = 0 ## backward compatibility; not supported in Py3k + def write(self, arg): + self.file.write(arg) + self.file.flush() + def __getattr__(self, attr): + return getattr(self.file, attr) + +sys.stdout = Unbuffered(sys.stdout) +sys.stderr = Unbuffered(sys.stderr) + + +# --- define helpers ---- if sys.platform in ('win32', 'cygwin'): def whereis(file): @@ -488,6 +505,7 @@ format_class = { Test = format_class[format] +# --- start processing --- if package: dir = { @@ -746,19 +764,6 @@ if qmtest: tests = [Test(t) for t in tests] -class Unbuffered(object): - def __init__(self, file): - self.file = file - self.softspace = 0 ## backward compatibility; not supported in Py3k - def write(self, arg): - self.file.write(arg) - self.file.flush() - def __getattr__(self, attr): - return getattr(self.file, attr) - -sys.stdout = Unbuffered(sys.stdout) -sys.stderr = Unbuffered(sys.stderr) - if list_only: for t in tests: sys.stdout.write(t.path + "\n") -- cgit v0.12