|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r79448 - trunk/tools/build/v2/test
From: jurko.gospodnetic_at_[hidden]
Date: 2012-07-12 08:55:32
Author: jurko
Date: 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
New Revision: 79448
URL: http://svn.boost.org/trac/boost/changeset/79448
Log:
Updated the internal Boost Build testing system to use the Python subprocess module (introduced in Python 2.4) for running external processes instead of popen2 (deprecated since Python 2.6). We are already using Python 2.4 features in this codebase so there is no need to support Python releases older than 2.4.
Related changes:
* BoostBuild.Tester & TestCmd.TestCmd interfaces now accept external process parameters as a list of strings, thus avoiding problems with parsing arguments containing spaces.
* Avoided a potential process hang in case an external process being run prints out enough output to fill up the OS's pipe buffer (OS would pause the process until someone read the data from the pipe but the testing framework would not do this until the process in question had terminated).
Text files modified:
trunk/tools/build/v2/test/BoostBuild.py | 34 ++---------
trunk/tools/build/v2/test/TestCmd.py | 108 ++++++---------------------------------
trunk/tools/build/v2/test/alias.py | 4
trunk/tools/build/v2/test/alternatives.py | 12 ++--
trunk/tools/build/v2/test/build_dir.py | 10 +-
trunk/tools/build/v2/test/build_file.py | 12 ++--
trunk/tools/build/v2/test/build_no.py | 2
trunk/tools/build/v2/test/builtin_echo.py | 2
trunk/tools/build/v2/test/builtin_exit.py | 2
trunk/tools/build/v2/test/builtin_split_by_characters.py | 2
trunk/tools/build/v2/test/clean.py | 12 ++--
trunk/tools/build/v2/test/collect_debug_info.py | 10 +-
trunk/tools/build/v2/test/conditionals.py | 6 +-
trunk/tools/build/v2/test/conditionals_multiple.py | 16 ++--
trunk/tools/build/v2/test/configuration.py | 36 +++++++------
trunk/tools/build/v2/test/copy_time.py | 2
trunk/tools/build/v2/test/core_action_output.py | 12 ++--
trunk/tools/build/v2/test/core_action_status.py | 2
trunk/tools/build/v2/test/core_actions_quietly.py | 4
trunk/tools/build/v2/test/core_arguments.py | 2
trunk/tools/build/v2/test/core_at_file.py | 8 +-
trunk/tools/build/v2/test/core_bindrule.py | 2
trunk/tools/build/v2/test/core_d12.py | 8 +-
trunk/tools/build/v2/test/core_delete_module.py | 2
trunk/tools/build/v2/test/core_import_module.py | 2
trunk/tools/build/v2/test/core_language.py | 2
trunk/tools/build/v2/test/core_nt_cmd_line.py | 37 ++++++++-----
trunk/tools/build/v2/test/core_option_d2.py | 2
trunk/tools/build/v2/test/core_option_l.py | 2
trunk/tools/build/v2/test/core_option_n.py | 2
trunk/tools/build/v2/test/core_parallel_actions.py | 2
trunk/tools/build/v2/test/core_parallel_multifile_actions_1.py | 2
trunk/tools/build/v2/test/core_parallel_multifile_actions_2.py | 2
trunk/tools/build/v2/test/core_typecheck.py | 6 +-
trunk/tools/build/v2/test/core_update_now.py | 10 +-
trunk/tools/build/v2/test/core_variables_in_actions.py | 2
trunk/tools/build/v2/test/core_varnames.py | 2
trunk/tools/build/v2/test/default_build.py | 8 +-
trunk/tools/build/v2/test/dependency_property.py | 2
trunk/tools/build/v2/test/direct_request_test.py | 8 +-
trunk/tools/build/v2/test/dll_path.py | 6 +-
trunk/tools/build/v2/test/example_make.py | 2
trunk/tools/build/v2/test/explicit.py | 2
trunk/tools/build/v2/test/free_features_request.py | 2
trunk/tools/build/v2/test/gcc_runtime.py | 4
trunk/tools/build/v2/test/generators_test.py | 2
trunk/tools/build/v2/test/inherit_toolset.py | 4
trunk/tools/build/v2/test/inline.py | 4
trunk/tools/build/v2/test/library_chain.py | 8 +-
trunk/tools/build/v2/test/loop.py | 2
trunk/tools/build/v2/test/make_rule.py | 2
trunk/tools/build/v2/test/module_actions.py | 2
trunk/tools/build/v2/test/ndebug.py | 2
trunk/tools/build/v2/test/notfile.py | 2
trunk/tools/build/v2/test/out_of_tree.py | 2
trunk/tools/build/v2/test/prebuilt.py | 2
trunk/tools/build/v2/test/project_test3.py | 16 ++--
trunk/tools/build/v2/test/property_expansion.py | 2
trunk/tools/build/v2/test/rebuilds.py | 6 +-
trunk/tools/build/v2/test/regression.py | 6 +-
trunk/tools/build/v2/test/rescan_header.py | 12 ++--
trunk/tools/build/v2/test/resolution.py | 2
trunk/tools/build/v2/test/searched_lib.py | 10 +-
trunk/tools/build/v2/test/skipping.py | 2
trunk/tools/build/v2/test/sort_rule.py | 4
trunk/tools/build/v2/test/space_in_path.py | 8 --
trunk/tools/build/v2/test/stage.py | 4
trunk/tools/build/v2/test/startup_v2.py | 2
trunk/tools/build/v2/test/static_and_shared_library.py | 4
trunk/tools/build/v2/test/tag.py | 4
trunk/tools/build/v2/test/test_rc.py | 9 +-
trunk/tools/build/v2/test/test_result_dumping.py | 2
trunk/tools/build/v2/test/timedata.py | 4
trunk/tools/build/v2/test/unit_test.py | 2
trunk/tools/build/v2/test/unit_tests.py | 2
trunk/tools/build/v2/test/unused.py | 4
trunk/tools/build/v2/test/use_requirements.py | 10 +-
77 files changed, 239 insertions(+), 325 deletions(-)
Modified: trunk/tools/build/v2/test/BoostBuild.py
==============================================================================
--- trunk/tools/build/v2/test/BoostBuild.py (original)
+++ trunk/tools/build/v2/test/BoostBuild.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -157,26 +157,6 @@
sequence.remove(r)
-#
-# FIXME: this is copy-pasted from TestSCons.py
-# Should be moved to TestCmd.py?
-#
-if os.name == 'posix':
- def _failed(self, status=0):
- if self.status is None:
- return None
- return _status(self) != status
- def _status(self):
- if os.WIFEXITED(self.status):
- return os.WEXITSTATUS(self.status)
- return -1
-elif os.name == 'nt':
- def _failed(self, status=0):
- return not self.status is None and self.status != status
- def _status(self):
- return self.status
-
-
class Tester(TestCmd.TestCmd):
"""Main tester class for Boost Build.
@@ -222,11 +202,12 @@
system output like the --verbose command
line option does.
"""
- def __init__(self, arguments="", executable="bjam",
+ def __init__(self, arguments=None, executable="bjam",
match=TestCmd.match_exact, boost_build_path=None,
translate_suffixes=True, pass_toolset=True, use_test_config=True,
ignore_toolset_requirements=True, workdir="", pass_d0=True, **keywords):
+ assert arguments.__class__ is not str
self.original_workdir = os.getcwd()
if workdir and not os.path.isabs(workdir):
raise ("Parameter workdir <%s> must point to an absolute "
@@ -315,7 +296,7 @@
if verbosity:
program_list += verbosity
if arguments:
- program_list += arguments.split(" ")
+ program_list += arguments
TestCmd.TestCmd.__init__(self, program=program_list, match=match,
workdir=workdir, inpath=use_default_bjam, **keywords)
@@ -439,11 +420,12 @@
#
# FIXME: Large portion copied from TestSCons.py, should be moved?
#
- def run_build_system(self, extra_args="", subdir="", stdout=None,
+ def run_build_system(self, extra_args=None, subdir="", stdout=None,
stderr="", status=0, match=None, pass_toolset=None,
use_test_config=None, ignore_toolset_requirements=None,
expected_duration=None, **kw):
+ assert extra_args.__class__ is not str
build_time_start = time.time()
try:
@@ -470,7 +452,7 @@
kw['program'] = []
kw['program'] += self.program
if extra_args:
- kw['program'] += extra_args.split(" ")
+ kw['program'] += extra_args
if pass_toolset:
kw['program'].append("toolset=" + self.toolset)
if use_test_config:
@@ -490,13 +472,13 @@
old_last_build_time_finish = self.last_build_time_finish
self.last_build_time_finish = time.time()
- if status is not None and _failed(self, status):
+ if (status and self.status) is not None and self.status != status:
expect = ''
if status != 0:
expect = " (expected %d)" % status
annotation("failure", '"%s" returned %d%s' % (kw['program'],
- _status(self), expect))
+ self.status, expect))
annotation("reason", "unexpected status returned by bjam")
self.fail_test(1)
Modified: trunk/tools/build/v2/test/TestCmd.py
==============================================================================
--- trunk/tools/build/v2/test/TestCmd.py (original)
+++ trunk/tools/build/v2/test/TestCmd.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -58,10 +58,10 @@
import os
import os.path
-import popen2
import re
import shutil
import stat
+import subprocess
import sys
import tempfile
import traceback
@@ -374,20 +374,26 @@
raise ValueError, "mode must begin with 'r'"
return open(file, mode).read()
- def run(self, program=None, arguments=None, chdir=None, stdin=None):
+ def run(self, program=None, arguments=None, chdir=None, stdin=None,
+ universal_newlines=True):
"""
Runs a test of the program or script for the test environment.
Standard output and error output are saved for future retrieval via the
stdout() and stderr() methods.
+ 'universal_newlines' parameter controls how the child process
+ input/output streams are opened as defined for the same named Python
+ subprocess.POpen constructor parameter.
+
"""
if chdir:
- oldcwd = os.getcwd()
if not os.path.isabs(chdir):
chdir = os.path.join(self.workpath(chdir))
if self.verbose:
sys.stderr.write("chdir(" + chdir + ")\n")
- os.chdir(chdir)
+ else:
+ chdir = self.workdir
+
cmd = []
if program and program[0]:
if program[0] != self.program[0] and not os.path.isabs(program[0]):
@@ -400,86 +406,9 @@
if self.verbose:
sys.stderr.write(join(cmd, " ") + "\n")
try:
- p = popen2.Popen3(cmd, 1)
- except AttributeError:
- # We end up here in case the popen2.Popen3 class is not available
- # (e.g. on Windows). We will be using the os.popen3() Python API
- # which takes a string parameter and so needs its executable quoted
- # in case its name contains spaces.
- for i in xrange(len(cmd)):
- if not cmd[i] or '"' in cmd[i]:
- pass
- elif cmd[i][-1] == '\\':
- cmd[i] = '"' + cmd[i] + '\\"'
- else:
- cmd[i] = '"' + cmd[i] + '"'
- command_string = join(cmd, " ")
- if ( os.name == 'nt' ):
- # This is a workaround for a longstanding Python bug on Windows
- # when using os.popen(), os.system() and similar functions to
- # execute a command containing quote characters. The bug seems
- # to be related to the quote stripping functionality used by
- # the Windows cmd.exe interpreter when its /S is not specified.
- #
- # Cleaned up quote from the cmd.exe help screen as displayed on
- # Windows XP SP2:
- #
- # 1. If all of the following conditions are met, then quote
- # characters on the command line are preserved:
- #
- # - no /S switch
- # - exactly two quote characters
- # - no special characters between the two quote
- # characters, where special is one of: &<>()@^|
- # - there are one or more whitespace characters between
- # the two quote characters
- # - the string between the two quote characters is the
- # name of an executable file.
- #
- # 2. Otherwise, old behavior is to see if the first character
- # is a quote character and if so, strip the leading
- # character and remove the last quote character on the
- # command line, preserving any text after the last quote
- # character.
- #
- # This causes some commands containing quotes not to be
- # executed correctly. For example:
- #
- # "\Long folder name\aaa.exe" --name="Foo" --no-surname
- #
- # would get its outermost quotes stripped and would be executed
- # as:
- #
- # \Long folder name\aaa.exe" --name="Foo --no-surname
- #
- # which would report an error about '\Long' not being a valid
- # command.
- #
- # cmd.exe help seems to indicate it would be enough to add an
- # extra space character in front of the command to avoid this
- # but this does not work, most likely due to the shell first
- # stripping all leading whitespace characters from the command.
- #
- # Solution implemented here is to quote the whole command in
- # case it contains any quote characters. Note thought this will
- # not work correctly should Python ever fix this bug.
- # (01.05.2008.) (Jurko)
- if command_string.find('"') != -1:
- command_string = '"%s"' % command_string
- tochild, fromchild, childerr = os.popen3(command_string)
- if stdin:
- if type(stdin) is ListType:
- for line in stdin:
- tochild.write(line)
- else:
- tochild.write(stdin)
- tochild.close()
- self._stdout.append(fromchild.read())
- self._stderr.append(childerr.read())
- fromchild.close()
- self.status = childerr.close()
- if not self.status:
- self.status = 0
+ p = subprocess.Popen(cmd, stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=chdir,
+ universal_newlines=universal_newlines)
except:
raise
else:
@@ -489,18 +418,15 @@
p.tochild.write(line)
else:
p.tochild.write(stdin)
- p.tochild.close()
- self._stdout.append(p.fromchild.read())
- self._stderr.append(p.childerr.read())
- self.status = p.wait()
+ out, err = p.communicate()
+ self._stdout.append(out)
+ self._stderr.append(err)
+ self.status = p.returncode
if self.verbose:
sys.stdout.write(self._stdout[-1])
sys.stderr.write(self._stderr[-1])
- if chdir:
- os.chdir(oldcwd)
-
def stderr(self, run=None):
"""
Returns the error output from the specified run number. If there is
Modified: trunk/tools/build/v2/test/alias.py
==============================================================================
--- trunk/tools/build/v2/test/alias.py (original)
+++ trunk/tools/build/v2/test/alias.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -37,12 +37,12 @@
t.write("s.cpp", "")
# Check that targets to which "bin1" refers are updated, and only those.
- t.run_build_system("bin1")
+ t.run_build_system(["bin1"])
t.expect_addition(BoostBuild.List("bin/$toolset/debug/") * "a.exe a.obj")
t.expect_nothing_more()
# Try again with "bin2"
- t.run_build_system("bin2")
+ t.run_build_system(["bin2"])
t.expect_addition(BoostBuild.List("bin/$toolset/debug/") * "b.exe b.obj")
t.expect_nothing_more()
Modified: trunk/tools/build/v2/test/alternatives.py
==============================================================================
--- trunk/tools/build/v2/test/alternatives.py (original)
+++ trunk/tools/build/v2/test/alternatives.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -24,7 +24,7 @@
t.write("a.cpp", "int main() {}\n")
-t.run_build_system("release")
+t.run_build_system(["release"])
t.expect_addition("bin/$toolset/release/a.exe")
@@ -45,7 +45,7 @@
t.run_build_system()
t.expect_addition("bin/$toolset/debug/b.obj")
-t.run_build_system("X=on")
+t.run_build_system(["X=on"])
t.expect_addition("bin/$toolset/debug/X-on/a.obj")
t.rm("bin")
@@ -67,7 +67,7 @@
exe a : a.cpp : <variant>release ;
""")
-t.run_build_system("release")
+t.run_build_system(["release"])
t.expect_addition("bin/$toolset/release/a.exe")
# Test that free properties do not matter. We really do not want <cxxflags>
@@ -78,7 +78,7 @@
""")
t.rm("bin/$toolset/release/a.exe")
-t.run_build_system("release define=FOO")
+t.run_build_system(["release", "define=FOO"])
t.expect_addition("bin/$toolset/release/a.exe")
# Test that ambiguity is reported correctly.
@@ -86,7 +86,7 @@
exe a : a_empty.cpp ;
exe a : a.cpp ;
""")
-t.run_build_system("--no-error-backtrace", status=None)
+t.run_build_system(["--no-error-backtrace"], status=None)
t.fail_test(string.find(t.stdout(), "No best alternative") == -1)
# Another ambiguity test: two matches properties in one alternative are neither
@@ -96,7 +96,7 @@
exe a : a.cpp : <debug-symbols>on ;
""")
-t.run_build_system("--no-error-backtrace", status=None)
+t.run_build_system(["--no-error-backtrace"], status=None)
t.fail_test(string.find(t.stdout(), "No best alternative") == -1)
# Test that we can have alternative without sources.
Modified: trunk/tools/build/v2/test/build_dir.py
==============================================================================
--- trunk/tools/build/v2/test/build_dir.py (original)
+++ trunk/tools/build/v2/test/build_dir.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -59,7 +59,7 @@
t.write("jamroot.jam", "")
# Test that we get an error when no project id is specified.
-t.run_build_system("--build-dir=foo")
+t.run_build_system(["--build-dir=foo"])
t.fail_test(string.find(t.stdout(),
"warning: the --build-dir option will be ignored") == -1)
@@ -72,7 +72,7 @@
t.write("sub/jamfile.jam", "exe b : b.cpp ;\n")
t.write("sub/b.cpp", "int main() {}\n")
-t.run_build_system("--build-dir=build")
+t.run_build_system(["--build-dir=build"])
t.expect_addition(["build/foo/$toolset/debug/a.exe",
"build/foo/sub/$toolset/debug/b.exe"])
@@ -82,7 +82,7 @@
build-project sub ;
""")
-t.run_build_system("--build-dir=build")
+t.run_build_system(["--build-dir=build"])
t.expect_addition(["build/foo/bin.v2/$toolset/debug/a.exe",
"build/foo/bin.v2/sub/$toolset/debug/b.exe"])
@@ -90,7 +90,7 @@
# 'sub/build'. Today, I am not sure if this is what the user expects, but let
# it be.
t.rm('build')
-t.run_build_system("--build-dir=build", subdir="sub")
+t.run_build_system(["--build-dir=build"], subdir="sub")
t.expect_addition(["sub/build/foo/bin.v2/sub/$toolset/debug/b.exe"])
t.write("jamroot.jam", """\
@@ -99,7 +99,7 @@
build-project sub ;
""" % string.replace(os.getcwd(), '\\', '\\\\'))
-t.run_build_system("--build-dir=build", status=1)
+t.run_build_system(["--build-dir=build"], status=1)
t.fail_test(string.find(t.stdout(),
"Absolute directory specified via 'build-dir' project attribute") == -1)
Modified: trunk/tools/build/v2/test/build_file.py
==============================================================================
--- trunk/tools/build/v2/test/build_file.py (original)
+++ trunk/tools/build/v2/test/build_file.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -35,7 +35,7 @@
""")
t.write("sub/hello.cpp", "int main() {}\n")
- t.run_build_system("sub " + t.adjust_suffix("hello.obj"))
+ t.run_build_system(["sub", t.adjust_suffix("hello.obj")])
t.expect_output_line("*depends on itself*", False)
t.expect_addition("sub/bin/$toolset/debug/hello.obj")
t.expect_nothing_more()
@@ -62,7 +62,7 @@
t.write("hello2.cpp", "int main() {}\n")
t.write("hello3.cpp", "int main() {}\n")
- t.run_build_system("hello1 " + t.adjust_suffix("hello1.obj"))
+ t.run_build_system(["hello1", t.adjust_suffix("hello1.obj")])
t.expect_addition("bin/$toolset/debug/hello1.obj")
t.expect_nothing_more()
@@ -89,7 +89,7 @@
t.write("hello3.cpp", "int main() {}\n")
obj = t.adjust_suffix("hello2.obj")
- t.run_build_system("hello1 " + obj, status=1)
+ t.run_build_system(["hello1", obj], status=1)
t.expect_output_line("don't know how to make*" + obj)
t.expect_nothing_more()
@@ -115,8 +115,8 @@
t.write("hello2.cpp", "int main() {}\n")
t.write("hello3.cpp", "int main() {}\n")
- t.run_build_system(t.adjust_suffix("hello1.obj") + " " + t.adjust_suffix(
- "hello2.obj"))
+ t.run_build_system([t.adjust_suffix("hello1.obj"), t.adjust_suffix(
+ "hello2.obj")])
t.expect_addition("bin/$toolset/debug/hello1.obj")
t.expect_addition("bin/$toolset/debug/hello2.obj")
t.expect_nothing_more()
@@ -147,7 +147,7 @@
""")
t.write("sub/hello.cpp", "int main() {}\n")
- t.run_build_system(t.adjust_suffix("hello.obj"))
+ t.run_build_system([t.adjust_suffix("hello.obj")])
t.expect_output_line("*depends on itself*", False)
t.expect_addition("bin/$toolset/debug/hello.obj")
t.expect_addition("sub/bin/$toolset/debug/hello.obj")
Modified: trunk/tools/build/v2/test/build_no.py
==============================================================================
--- trunk/tools/build/v2/test/build_no.py (original)
+++ trunk/tools/build/v2/test/build_no.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -17,7 +17,7 @@
t.run_build_system()
t.expect_nothing_more()
-t.run_build_system("release")
+t.run_build_system(["release"])
t.expect_addition("bin/$toolset/release/hello.exe")
t.cleanup()
Modified: trunk/tools/build/v2/test/builtin_echo.py
==============================================================================
--- trunk/tools/build/v2/test/builtin_echo.py (original)
+++ trunk/tools/build/v2/test/builtin_echo.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -9,7 +9,7 @@
import BoostBuild
def test_echo(name):
- t = BoostBuild.Tester("-ffile.jam", pass_toolset=0)
+ t = BoostBuild.Tester(["-ffile.jam"], pass_toolset=0)
t.write("file.jam", """\
%s ;
Modified: trunk/tools/build/v2/test/builtin_exit.py
==============================================================================
--- trunk/tools/build/v2/test/builtin_exit.py (original)
+++ trunk/tools/build/v2/test/builtin_exit.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -9,7 +9,7 @@
import BoostBuild
def test_exit(name):
- t = BoostBuild.Tester("-ffile.jam", pass_toolset=0)
+ t = BoostBuild.Tester(["-ffile.jam"], pass_toolset=0)
t.write("file.jam", "%s ;" % name)
t.run_build_system(status=1, stdout="\n")
Modified: trunk/tools/build/v2/test/builtin_split_by_characters.py
==============================================================================
--- trunk/tools/build/v2/test/builtin_split_by_characters.py (original)
+++ trunk/tools/build/v2/test/builtin_split_by_characters.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -11,7 +11,7 @@
def test_invalid(params, expected_error_line):
t = BoostBuild.Tester(pass_toolset=0)
t.write("file.jam", "SPLIT_BY_CHARACTERS %s ;" % params)
- t.run_build_system("-ffile.jam", status=1)
+ t.run_build_system(["-ffile.jam"], status=1)
t.expect_output_line("[*] %s" % expected_error_line)
t.cleanup()
Modified: trunk/tools/build/v2/test/clean.py
==============================================================================
--- trunk/tools/build/v2/test/clean.py (original)
+++ trunk/tools/build/v2/test/clean.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -48,7 +48,7 @@
# 'clean' should not remove files under separate jamroot.jam.
t.run_build_system()
-t.run_build_system("--clean")
+t.run_build_system(["--clean"])
t.expect_removal("bin/$toolset/debug/a.obj")
t.expect_removal("sub1/bin/$toolset/debug/sub1.obj")
t.expect_removal("sub1/bin/$toolset/debug/sub1_2.obj")
@@ -57,7 +57,7 @@
# 'clean-all' removes everything it can reach.
t.run_build_system()
-t.run_build_system("--clean-all")
+t.run_build_system(["--clean-all"])
t.expect_removal("bin/$toolset/debug/a.obj")
t.expect_removal("sub1/bin/$toolset/debug/sub1.obj")
t.expect_removal("sub1/bin/$toolset/debug/sub1_2.obj")
@@ -66,7 +66,7 @@
# 'clean' together with project target removes only under that project.
t.run_build_system()
-t.run_build_system("sub1 --clean")
+t.run_build_system(["sub1", "--clean"])
t.expect_nothing("bin/$toolset/debug/a.obj")
t.expect_removal("sub1/bin/$toolset/debug/sub1.obj")
t.expect_removal("sub1/bin/$toolset/debug/sub1_2.obj")
@@ -75,7 +75,7 @@
# 'clean-all' removes everything.
t.run_build_system()
-t.run_build_system("sub1 --clean-all")
+t.run_build_system(["sub1", "--clean-all"])
t.expect_nothing("bin/$toolset/debug/a.obj")
t.expect_removal("sub1/bin/$toolset/debug/sub1.obj")
t.expect_removal("sub1/bin/$toolset/debug/sub1_2.obj")
@@ -85,7 +85,7 @@
# If main target is explicitly named, we should not remove files from other
# targets.
t.run_build_system()
-t.run_build_system("sub1//sub1 --clean")
+t.run_build_system(["sub1//sub1", "--clean"])
t.expect_removal("sub1/bin/$toolset/debug/sub1.obj")
t.expect_nothing("sub1/bin/$toolset/debug/sub1_2.obj")
t.expect_nothing("sub2/bin/$toolset/debug/sub2.obj")
@@ -98,7 +98,7 @@
cast a cpp : a.h ;
""")
t.write("a.h", "")
-t.run_build_system("--clean")
+t.run_build_system(["--clean"])
t.expect_nothing("a.h")
t.cleanup()
Modified: trunk/tools/build/v2/test/collect_debug_info.py
==============================================================================
--- trunk/tools/build/v2/test/collect_debug_info.py (original)
+++ trunk/tools/build/v2/test/collect_debug_info.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -223,7 +223,7 @@
def _getExternalValues(t, *args):
- t.run_build_system(" ".join("---var-name=%s" % x for x in args))
+ t.run_build_system(["---var-name=%s" % x for x in args])
result = dict()
for x in args:
m = re.search(r"^\*\*\*ENV\*\*\* %s: '(.*)' \*\*\*$" % x, t.stdout(),
@@ -239,7 +239,7 @@
result = []
# JAM version variables.
- t.run_build_system("---version")
+ t.run_build_system(["---version"])
for m in re.finditer(r"^\*\*\*VAR\*\*\* ([^:]*): (.*)\*\*\*$", t.stdout(),
re.MULTILINE):
name = m.group(1)
@@ -254,12 +254,12 @@
result.append("")
# bjam -v output.
- t.run_build_system("-v")
+ t.run_build_system(["-v"])
result.append("--- output for 'bjam -v' ---")
result.append(t.stdout())
# bjam --version output.
- t.run_build_system("--version", status=1)
+ t.run_build_system(["--version"], status=1)
result.append("--- output for 'bjam --version' ---")
result.append(t.stdout())
@@ -269,7 +269,7 @@
def _init():
toolsetName = "__myDummyToolset__"
- t = BoostBuild.Tester("toolset=%s" % toolsetName, pass_toolset=False,
+ t = BoostBuild.Tester(["toolset=%s" % toolsetName], pass_toolset=False,
use_test_config=False)
# Prepare a dummy toolset so we do not get errors in case the default one
Modified: trunk/tools/build/v2/test/conditionals.py
==============================================================================
--- trunk/tools/build/v2/test/conditionals.py (original)
+++ trunk/tools/build/v2/test/conditionals.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -21,7 +21,7 @@
# Test conditionals in target requirements.
t.write("jamroot.jam", "exe a : a.cpp : <link>static:<define>STATIC ;")
-t.run_build_system("link=static")
+t.run_build_system(["link=static"])
t.expect_addition("bin/$toolset/debug/link-static/a.exe")
t.rm("bin")
@@ -30,7 +30,7 @@
project : requirements <link>static:<define>STATIC ;
exe a : a.cpp ;
""")
-t.run_build_system("link=static")
+t.run_build_system(["link=static"])
t.expect_addition("bin/$toolset/debug/link-static/a.exe")
t.rm("bin")
@@ -41,7 +41,7 @@
exe a : a.cpp l ;
""")
t.write("l.cpp", "int i;")
-t.run_build_system("link=static")
+t.run_build_system(["link=static"])
t.expect_addition("bin/$toolset/debug/link-static/a.exe")
t.cleanup()
Modified: trunk/tools/build/v2/test/conditionals_multiple.py
==============================================================================
--- trunk/tools/build/v2/test/conditionals_multiple.py (original)
+++ trunk/tools/build/v2/test/conditionals_multiple.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -20,8 +20,8 @@
def test_multiple_conditions():
"""Basic tests for properties conditioned on multiple other properties."""
- t = BoostBuild.Tester("--user-config= --ignore-site-config "
- "toolset=testToolset", pass_toolset=False, use_test_config=False)
+ t = BoostBuild.Tester(["--user-config=", "--ignore-site-config",
+ "toolset=testToolset"], pass_toolset=False, use_test_config=False)
t.write("testToolset.jam", """\
import feature ;
@@ -69,7 +69,7 @@
<aaa>1,<bbb>1,<ccc>1:<description>a1-b1-c1 ;
""")
- t.run_build_system("aaa=1 bbb=1 ccc=1")
+ t.run_build_system(["aaa=1", "bbb=1", "ccc=1"])
t.expect_output_line("description: /d/" )
t.expect_output_line("description: /a0/" , False)
t.expect_output_line("description: /a1/" )
@@ -84,7 +84,7 @@
t.expect_output_line("description: /a1-b1-c0/", False)
t.expect_output_line("description: /a1-b1-c1/" )
- t.run_build_system("aaa=0 bbb=0 ccc=1")
+ t.run_build_system(["aaa=0", "bbb=0", "ccc=1"])
t.expect_output_line("description: /d/" )
t.expect_output_line("description: /a0/" )
t.expect_output_line("description: /a1/" , False)
@@ -99,7 +99,7 @@
t.expect_output_line("description: /a1-b1-c0/", False)
t.expect_output_line("description: /a1-b1-c1/", False)
- t.run_build_system("aaa=0 bbb=0 ccc=0")
+ t.run_build_system(["aaa=0", "bbb=0", "ccc=0"])
t.expect_output_line("description: /d/" )
t.expect_output_line("description: /a0/" )
t.expect_output_line("description: /a1/" , False)
@@ -132,7 +132,7 @@
"""
toolset = "testToolset" ;
- t = BoostBuild.Tester("--user-config= --ignore-site-config",
+ t = BoostBuild.Tester(["--user-config=", "--ignore-site-config"],
pass_toolset=False, use_test_config=False)
t.write(toolset + ".jam", """\
@@ -221,7 +221,7 @@
<bbb>1,<aaa>1,<toolset>testToolset-1:<description>b1-a1-t1 ;
""")
- t.run_build_system("aaa=1 bbb=1 ccc=1 toolset=%s-0" % toolset)
+ t.run_build_system(["aaa=1", "bbb=1", "ccc=1", "toolset=%s-0" % toolset])
t.expect_output_line("description: /t-a0/" , False)
t.expect_output_line("description: /t-a1/" )
t.expect_output_line("description: /t0-a0/" , False)
@@ -259,7 +259,7 @@
t.expect_output_line("description: /b1-a1-t0/" )
t.expect_output_line("description: /b1-a1-t1/", False)
- t.run_build_system("aaa=1 bbb=1 ccc=1 toolset=%s-1" % toolset)
+ t.run_build_system(["aaa=1", "bbb=1", "ccc=1", "toolset=%s-1" % toolset])
t.expect_output_line("description: /t-a0/" , False)
t.expect_output_line("description: /t-a1/" )
t.expect_output_line("description: /t0-a0/" , False)
Modified: trunk/tools/build/v2/test/configuration.py
==============================================================================
--- trunk/tools/build/v2/test/configuration.py (original)
+++ trunk/tools/build/v2/test/configuration.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -36,8 +36,8 @@
configFileNames = ["ups_lala_1.jam", "ups_lala_2.jam",
os.path.join(subdirName, "ups_lala_3.jam")]
- t = BoostBuild.Tester("toolset=%s --debug-configuration" % toolsetName,
- pass_toolset=False, use_test_config=False)
+ t = BoostBuild.Tester(["toolset=%s" % toolsetName,
+ "--debug-configuration"], pass_toolset=False, use_test_config=False)
for configFileName in configFileNames:
message = "ECHO \"%s\" ;" % testMessage % configFileName
@@ -75,12 +75,14 @@
"- %s" % message)
self.__tester.fail_test(1)
- def __call__(self, test_id, env, extra_args="", *args, **kwargs):
+ def __call__(self, test_id, env, extra_args=None, *args, **kwargs):
if env == "" and not canSetEmptyEnvironmentVariable:
self.__assertionFailure("Can not set empty environment "
"variables on this platform.")
self.__registerTestId(str(test_id))
- extra_args += " ---test-id---=%s" % test_id
+ if extra_args is None:
+ extra_args = []
+ extra_args.append("---test-id---=%s" % test_id)
env_name = "BOOST_BUILD_USER_CONFIG"
previous_env = os.environ.get(env_name)
_env_set(env_name, env)
@@ -104,7 +106,7 @@
t.expect_output_line(testMessage % configFileNames[1], False)
t.expect_output_line(testMessage % configFileNames[2], False)
- test(2, None, "--user-config=")
+ test(2, None, ["--user-config="])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage, False)
t.expect_output_line(disabledConfigLoadMessage)
@@ -112,7 +114,7 @@
t.expect_output_line(testMessage % configFileNames[1], False)
t.expect_output_line(testMessage % configFileNames[2], False)
- test(3, None, '--user-config=""')
+ test(3, None, ['--user-config=""'])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage, False)
t.expect_output_line(disabledConfigLoadMessage)
@@ -120,7 +122,7 @@
t.expect_output_line(testMessage % configFileNames[1], False)
t.expect_output_line(testMessage % configFileNames[2], False)
- test(4, None, '--user-config="%s"' % configFileNames[0])
+ test(4, None, ['--user-config="%s"' % configFileNames[0]])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage)
t.expect_output_line(disabledConfigLoadMessage, False)
@@ -128,7 +130,7 @@
t.expect_output_line(testMessage % configFileNames[1], False)
t.expect_output_line(testMessage % configFileNames[2], False)
- test(5, None, '--user-config="%s"' % configFileNames[2])
+ test(5, None, ['--user-config="%s"' % configFileNames[2]])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage)
t.expect_output_line(disabledConfigLoadMessage, False)
@@ -136,7 +138,7 @@
t.expect_output_line(testMessage % configFileNames[1], False)
t.expect_output_line(testMessage % configFileNames[2])
- test(6, None, '--user-config="%s"' % os.path.abspath(configFileNames[1]))
+ test(6, None, ['--user-config="%s"' % os.path.abspath(configFileNames[1])])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage)
t.expect_output_line(disabledConfigLoadMessage, False)
@@ -144,7 +146,7 @@
t.expect_output_line(testMessage % configFileNames[1])
t.expect_output_line(testMessage % configFileNames[2], False)
- test(7, None, '--user-config="%s"' % os.path.abspath(configFileNames[2]))
+ test(7, None, ['--user-config="%s"' % os.path.abspath(configFileNames[2])])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage)
t.expect_output_line(disabledConfigLoadMessage, False)
@@ -177,7 +179,7 @@
t.expect_output_line(testMessage % configFileNames[1])
t.expect_output_line(testMessage % configFileNames[2], False)
- test(11, configFileNames[1], '--user-config=""')
+ test(11, configFileNames[1], ['--user-config=""'])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage, False)
t.expect_output_line(disabledConfigLoadMessage)
@@ -185,7 +187,7 @@
t.expect_output_line(testMessage % configFileNames[1], False)
t.expect_output_line(testMessage % configFileNames[2], False)
- test(12, configFileNames[1], '--user-config="%s"' % configFileNames[0])
+ test(12, configFileNames[1], ['--user-config="%s"' % configFileNames[0]])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage)
t.expect_output_line(disabledConfigLoadMessage, False)
@@ -194,7 +196,7 @@
t.expect_output_line(testMessage % configFileNames[2], False)
if canSetEmptyEnvironmentVariable:
- test(13, "", '--user-config="%s"' % configFileNames[0])
+ test(13, "", ['--user-config="%s"' % configFileNames[0]])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage)
t.expect_output_line(disabledConfigLoadMessage, False)
@@ -202,7 +204,7 @@
t.expect_output_line(testMessage % configFileNames[1], False)
t.expect_output_line(testMessage % configFileNames[2], False)
- test(14, '""', '--user-config="%s"' % configFileNames[0])
+ test(14, '""', ['--user-config="%s"' % configFileNames[0]])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage)
t.expect_output_line(disabledConfigLoadMessage, False)
@@ -210,7 +212,7 @@
t.expect_output_line(testMessage % configFileNames[1], False)
t.expect_output_line(testMessage % configFileNames[2], False)
- test(15, "invalid", '--user-config="%s"' % configFileNames[0])
+ test(15, "invalid", ['--user-config="%s"' % configFileNames[0]])
t.expect_output_line(implicitConfigLoadMessage, False)
t.expect_output_line(explicitConfigLoadMessage)
t.expect_output_line(disabledConfigLoadMessage, False)
@@ -274,7 +276,7 @@
def _getExternalEnv(name):
toolsetName = "__myDummyToolset__"
- t = BoostBuild.Tester("toolset=%s" % toolsetName, pass_toolset=False,
+ t = BoostBuild.Tester(["toolset=%s" % toolsetName], pass_toolset=False,
use_test_config=False)
try:
# Prepare a dummy toolset so we do not get errors in case the default
@@ -302,7 +304,7 @@
}
""")
- t.run_build_system("---var-name---=%s" % name)
+ t.run_build_system(["---var-name---=%s" % name])
m = re.search("^### %s: '(.*)' ###$" % name, t.stdout(), re.MULTILINE)
if m:
return m.group(1)
Modified: trunk/tools/build/v2/test/copy_time.py
==============================================================================
--- trunk/tools/build/v2/test/copy_time.py (original)
+++ trunk/tools/build/v2/test/copy_time.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -62,7 +62,7 @@
"correctly")
tester.fail_test(1)
-tester.run_build_system("-d1")
+tester.run_build_system(["-d1"])
tester.expect_output_line("common.copy*", expected_to_exist=False)
tester.expect_nothing_more()
Modified: trunk/tools/build/v2/test/core_action_output.py
==============================================================================
--- trunk/tools/build/v2/test/core_action_output.py (original)
+++ trunk/tools/build/v2/test/core_action_output.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -8,7 +8,7 @@
import BoostBuild
-t = BoostBuild.Tester("-d1", pass_d0=False, pass_toolset=False)
+t = BoostBuild.Tester(["-d1"], pass_d0=False, pass_toolset=False)
t.write("file.jam", """\
prefix = "echo \\"" ;
@@ -28,31 +28,31 @@
go all ;
""")
-t.run_build_system("-ffile.jam -sXXX=1", stderr="")
+t.run_build_system(["-ffile.jam", "-sXXX=1"], stderr="")
t.expect_output_line("{{{ 1 }}}")
t.expect_output_line("stdout")
t.expect_output_line("stderr")
t.expect_nothing_more()
-t.run_build_system("-ffile.jam -sXXX=2 -p0", stderr="")
+t.run_build_system(["-ffile.jam", "-sXXX=2", "-p0"], stderr="")
t.expect_output_line("{{{ 2 }}}")
t.expect_output_line("stdout")
t.expect_output_line("stderr")
t.expect_nothing_more()
-t.run_build_system("-ffile.jam -sXXX=3 -p1", stderr="")
+t.run_build_system(["-ffile.jam", "-sXXX=3", "-p1"], stderr="")
t.expect_output_line("{{{ 3 }}}")
t.expect_output_line("stdout")
t.expect_output_line("stderr*", False)
t.expect_nothing_more()
-t.run_build_system("-ffile.jam -sXXX=4 -p2", stderr="stderr\n")
+t.run_build_system(["-ffile.jam", "-sXXX=4", "-p2"], stderr="stderr\n")
t.expect_output_line("{{{ 4 }}}")
t.expect_output_line("stdout*", False)
t.expect_output_line("stderr*", False)
t.expect_nothing_more()
-t.run_build_system("-ffile.jam -sXXX=5 -p3", stderr="stderr\n")
+t.run_build_system(["-ffile.jam", "-sXXX=5", "-p3"], stderr="stderr\n")
t.expect_output_line("{{{ 5 }}}")
t.expect_output_line("stdout")
t.expect_output_line("stderr", False)
Modified: trunk/tools/build/v2/test/core_action_status.py
==============================================================================
--- trunk/tools/build/v2/test/core_action_status.py (original)
+++ trunk/tools/build/v2/test/core_action_status.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -22,6 +22,6 @@
DEPENDS all : subtest_a ;
""")
-t.run_build_system("-ffile.jam -sACTION=invalid", status=1)
+t.run_build_system(["-ffile.jam", "-sACTION=invalid"], status=1)
t.cleanup()
Modified: trunk/tools/build/v2/test/core_actions_quietly.py
==============================================================================
--- trunk/tools/build/v2/test/core_actions_quietly.py (original)
+++ trunk/tools/build/v2/test/core_actions_quietly.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -28,7 +28,7 @@
DEPENDS all : subtest_a subtest_b ;
""")
-t.run_build_system("-ffile.jam -d2", stdout="""\
+t.run_build_system(["-ffile.jam", "-d2"], stdout="""\
...found 4 targets...
...updating 2 targets...
.a. subtest_a
@@ -52,7 +52,7 @@
...updated 2 targets...
""")
-t.run_build_system("-ffile.jam -d1", stdout="""\
+t.run_build_system(["-ffile.jam", "-d1"], stdout="""\
...found 4 targets...
...updating 2 targets...
...updated 2 targets...
Modified: trunk/tools/build/v2/test/core_arguments.py
==============================================================================
--- trunk/tools/build/v2/test/core_arguments.py (original)
+++ trunk/tools/build/v2/test/core_arguments.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -17,7 +17,7 @@
if input: code.append(input)
code.append(";")
t.write("file.jam", " ".join(code))
- t.run_build_system("-ffile.jam", status=status)
+ t.run_build_system(["-ffile.jam"], status=status)
t.expect_output_line(output);
Modified: trunk/tools/build/v2/test/core_at_file.py
==============================================================================
--- trunk/tools/build/v2/test/core_at_file.py (original)
+++ trunk/tools/build/v2/test/core_at_file.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -8,7 +8,7 @@
import BoostBuild
import os
-t = BoostBuild.Tester("-ffile.jam", pass_toolset=0)
+t = BoostBuild.Tester(["-ffile.jam"], pass_toolset=0)
t.write("file.jam", """\
name = n1 n2 ;
@@ -30,7 +30,7 @@
run all ;
""")
-t.run_build_system("-d2")
+t.run_build_system(["-d2"])
t.expect_output_line('echo file: "on1 on2 .txt"');
t.expect_addition("on1 on2 .txt")
t.expect_content("on1 on2 .txt", " test -DM1 -DM2", True)
@@ -45,7 +45,7 @@
run all ;
""")
-t.run_build_system("-d1")
+t.run_build_system(["-d1"])
t.expect_output_line(" test -DM1 -DM2")
t.rm(".")
@@ -57,7 +57,7 @@
run all ;
""")
-t.run_build_system("-d1")
+t.run_build_system(["-d1"])
t.expect_output_line(" test -DM1 -DM2")
t.cleanup()
Modified: trunk/tools/build/v2/test/core_bindrule.py
==============================================================================
--- trunk/tools/build/v2/test/core_bindrule.py (original)
+++ trunk/tools/build/v2/test/core_bindrule.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -36,7 +36,7 @@
DEPENDS all : fake-target ;
""")
-t.run_build_system("-ffile.jam", stdout="""\
+t.run_build_system(["-ffile.jam"], stdout="""\
found: all at all
found: file-to-bind at subdir1%sfile-to-bind
...found 3 targets...
Modified: trunk/tools/build/v2/test/core_d12.py
==============================================================================
--- trunk/tools/build/v2/test/core_d12.py (original)
+++ trunk/tools/build/v2/test/core_d12.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -8,7 +8,7 @@
import BoostBuild
-t = BoostBuild.Tester("-ffile.jam", pass_toolset=0)
+t = BoostBuild.Tester(["-ffile.jam"], pass_toolset=0)
t.write("file.jam", """
actions a { }
@@ -18,13 +18,13 @@
b all ;
""")
-t.run_build_system("-d0", stdout="")
+t.run_build_system(["-d0"], stdout="")
-t.run_build_system("-d1")
+t.run_build_system(["-d1"])
t.expect_output_line("a all")
t.expect_output_line("b all", False)
-t.run_build_system("-d2")
+t.run_build_system(["-d2"])
t.expect_output_line("a all")
t.expect_output_line("b all")
Modified: trunk/tools/build/v2/test/core_delete_module.py
==============================================================================
--- trunk/tools/build/v2/test/core_delete_module.py (original)
+++ trunk/tools/build/v2/test/core_delete_module.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -47,5 +47,5 @@
NOTFILE xx ;
""")
-t.run_build_system("-ffile.jam", status=0)
+t.run_build_system(["-ffile.jam"], status=0)
t.cleanup()
Modified: trunk/tools/build/v2/test/core_import_module.py
==============================================================================
--- trunk/tools/build/v2/test/core_import_module.py (original)
+++ trunk/tools/build/v2/test/core_import_module.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -70,7 +70,7 @@
do-nothing all ;
""")
-t.run_build_system("-fcode", stdout="""\
+t.run_build_system(["-fcode"], stdout="""\
R1
R2
L1
Modified: trunk/tools/build/v2/test/core_language.py
==============================================================================
--- trunk/tools/build/v2/test/core_language.py (original)
+++ trunk/tools/build/v2/test/core_language.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -8,5 +8,5 @@
t = BoostBuild.Tester(pass_toolset=0)
t.set_tree("core-language")
-t.run_build_system("-ftest.jam")
+t.run_build_system(["-ftest.jam"])
t.cleanup()
Modified: trunk/tools/build/v2/test/core_nt_cmd_line.py
==============================================================================
--- trunk/tools/build/v2/test/core_nt_cmd_line.py (original)
+++ trunk/tools/build/v2/test/core_nt_cmd_line.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -38,18 +38,27 @@
# content and always requires at least a single whitespace after the opening
# brace in order to satisfy its Boost Jam language grammar rules.
def test_raw_empty():
- whitespace = " \n\n\r\r\v\v\t\t \t \r\r \n\n"
- t = BoostBuild.Tester("-d2 -d+4", pass_d0=False, pass_toolset=0,
+ whitespace_in = " \n\n\r\r\v\v\t\t \t \r\r \n\n"
+
+ # We tell the testing system to read its child process output as raw
+ # binary data but the bjam process we run will read its input file and
+ # write out its output as text, i.e. convert all of our "\r\n" sequences to
+ # "\n" on input and all of its "\n" characters back to "\r\n" on output.
+ # This means that any lone "\n" input characters not preceded by "\r" will
+ # get an extra "\r" added in front of it on output.
+ whitespace_out = whitespace_in.replace("\r\n", "\n").replace("\n", "\r\n")
+
+ t = BoostBuild.Tester(["-d2", "-d+4"], pass_d0=False, pass_toolset=0,
use_test_config=False)
t.write("file.jam", """\
actions do_empty {%s}
JAMSHELL = %% ;
do_empty all ;
-""" % (whitespace))
- t.run_build_system("-ffile.jam")
+""" % (whitespace_in))
+ t.run_build_system(["-ffile.jam"], universal_newlines=False)
t.expect_output_line("do_empty all")
t.expect_output_line("Executing raw command directly", False)
- if "\n%s\n" % whitespace not in t.stdout():
+ if "\r\n%s\r\n" % whitespace_out not in t.stdout():
BoostBuild.annotation("failure", "Whitespace action content not found "
"on stdout.")
t.fail_test(1, dump_difference=False)
@@ -57,7 +66,7 @@
def test_raw_nt(n=None, error=False):
- t = BoostBuild.Tester("-d1 -d+4", pass_d0=False, pass_toolset=0,
+ t = BoostBuild.Tester(["-d1", "-d+4"], pass_d0=False, pass_toolset=0,
use_test_config=False)
cmd_prefix = "%s -c \"print('XXX: " % executable
@@ -100,7 +109,7 @@
expected_status = 1
else:
expected_status = 0
- t.run_build_system("-ffile.jam", status=expected_status)
+ t.run_build_system(["-ffile.jam"], status=expected_status)
if error:
t.expect_output_line("Executing raw command directly", False)
t.expect_output_line("do_echo action is too long (%d, max 32766):" % n)
@@ -124,7 +133,7 @@
def test_raw_to_shell_fallback_nt():
- t = BoostBuild.Tester("-d1 -d+4", pass_d0=False, pass_toolset=0,
+ t = BoostBuild.Tester(["-d1", "-d+4"], pass_d0=False, pass_toolset=0,
use_test_config=False)
cmd_prefix = '%s -c print(' % executable
@@ -141,7 +150,7 @@
JAMSHELL = % ;
do_multiline all ;
""")
- t.run_build_system("-ffile_multiline.jam")
+ t.run_build_system(["-ffile_multiline.jam"])
t.expect_output_line("do_multiline all")
t.expect_output_line("one")
t.expect_output_line("two")
@@ -154,7 +163,7 @@
JAMSHELL = % ;
do_redirect all ;
""")
- t.run_build_system("-ffile_redirect.jam")
+ t.run_build_system(["-ffile_redirect.jam"])
t.expect_output_line("do_redirect all")
t.expect_output_line("one", False)
t.expect_output_line("Executing raw command directly", False)
@@ -167,7 +176,7 @@
JAMSHELL = % ;
do_pipe all ;
""")
- t.run_build_system("-ffile_pipe.jam")
+ t.run_build_system(["-ffile_pipe.jam"])
t.expect_output_line("do_pipe all")
t.expect_output_line("one", False)
t.expect_output_line("two")
@@ -180,7 +189,7 @@
JAMSHELL = %% ;
do_single_quoted all ;
""" % (cmd_prefix, cmd_suffix))
- t.run_build_system("-ffile_single_quoted.jam")
+ t.run_build_system(["-ffile_single_quoted.jam"])
t.expect_output_line("do_single_quoted all")
t.expect_output_line("5>10")
t.expect_output_line("Executing raw command directly")
@@ -193,7 +202,7 @@
JAMSHELL = %% ;
do_double_quoted all ;
""" % (cmd_prefix, cmd_suffix))
- t.run_build_system("-ffile_double_quoted.jam")
+ t.run_build_system(["-ffile_double_quoted.jam"])
t.expect_output_line("do_double_quoted all")
# The difference between this example and the similar previous one using
# single instead of double quotes stems from how the used Python executable
@@ -209,7 +218,7 @@
JAMSHELL = %% ;
do_escaped_quote all ;
""" % (cmd_prefix, cmd_suffix))
- t.run_build_system("-ffile_escaped_quote.jam")
+ t.run_build_system(["-ffile_escaped_quote.jam"])
t.expect_output_line("do_escaped_quote all")
t.expect_output_line("5>10")
t.expect_output_line("Executing raw command directly", False)
Modified: trunk/tools/build/v2/test/core_option_d2.py
==============================================================================
--- trunk/tools/build/v2/test/core_option_d2.py (original)
+++ trunk/tools/build/v2/test/core_option_d2.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -28,7 +28,7 @@
DEPENDS all : subtest_a subtest_b ;
""")
-t.run_build_system("-ffile.jam -d2", stdout="""\
+t.run_build_system(["-ffile.jam", "-d2"], stdout="""\
...found 4 targets...
...updating 2 targets...
.a. subtest_a
Modified: trunk/tools/build/v2/test/core_option_l.py
==============================================================================
--- trunk/tools/build/v2/test/core_option_l.py (original)
+++ trunk/tools/build/v2/test/core_option_l.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -37,7 +37,7 @@
DEPENDS all : sleeper ;
""")
-t.run_build_system("-ffile.jam -d1 -l2", status=1)
+t.run_build_system(["-ffile.jam", "-d1", "-l2"], status=1)
t.expect_output_line("2 second time limit exceeded")
t.cleanup()
Modified: trunk/tools/build/v2/test/core_option_n.py
==============================================================================
--- trunk/tools/build/v2/test/core_option_n.py (original)
+++ trunk/tools/build/v2/test/core_option_n.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -29,7 +29,7 @@
DEPENDS all : subtest_a subtest_b ;
""")
-t.run_build_system("-ffile.jam -n", stdout="""\
+t.run_build_system(["-ffile.jam", "-n"], stdout="""\
...found 4 targets...
...updating 2 targets...
.a. subtest_a
Modified: trunk/tools/build/v2/test/core_parallel_actions.py
==============================================================================
--- trunk/tools/build/v2/test/core_parallel_actions.py (original)
+++ trunk/tools/build/v2/test/core_parallel_actions.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -62,7 +62,7 @@
DEPENDS all : bottom ;
""")
-t.run_build_system("-ffile.jam -j4", stdout="""\
+t.run_build_system(["-ffile.jam", "-j4"], stdout="""\
...found 12 targets...
...updating 8 targets...
sleeper 1.a
Modified: trunk/tools/build/v2/test/core_parallel_multifile_actions_1.py
==============================================================================
--- trunk/tools/build/v2/test/core_parallel_multifile_actions_1.py (original)
+++ trunk/tools/build/v2/test/core_parallel_multifile_actions_1.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -54,7 +54,7 @@
DEPENDS all : u1.user u2.user ;
""")
-t.run_build_system("-ffile.jam -j2", stdout="""\
+t.run_build_system(["-ffile.jam", "-j2"], stdout="""\
...found 6 targets...
...updating 4 targets...
.gen. g1.generated
Modified: trunk/tools/build/v2/test/core_parallel_multifile_actions_2.py
==============================================================================
--- trunk/tools/build/v2/test/core_parallel_multifile_actions_2.py (original)
+++ trunk/tools/build/v2/test/core_parallel_multifile_actions_2.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -57,7 +57,7 @@
DEPENDS all : lib installed_dll ;
""")
-t.run_build_system("-ffile.jam -j2", stdout="""\
+t.run_build_system(["-ffile.jam", "-j2"], stdout="""\
...found 4 targets...
...updating 3 targets...
link dll
Modified: trunk/tools/build/v2/test/core_typecheck.py
==============================================================================
--- trunk/tools/build/v2/test/core_typecheck.py (original)
+++ trunk/tools/build/v2/test/core_typecheck.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -8,7 +8,7 @@
import BoostBuild
-t = BoostBuild.Tester("-ffile.jam", pass_toolset=0)
+t = BoostBuild.Tester(["-ffile.jam"], pass_toolset=0)
t.write("file.jam", """
module .typecheck
@@ -33,8 +33,8 @@
dummy all ;
""")
-t.run_build_system("-sARGUMENT=::a/b/c")
-t.run_build_system("-sARGUMENT=a/b/c", status=1, stdout="""\
+t.run_build_system(["-sARGUMENT=::a/b/c"])
+t.run_build_system(["-sARGUMENT=a/b/c"], status=1, stdout="""\
Error: a/b/c is not a path
file.jam:18: in module scope
*** argument error
Modified: trunk/tools/build/v2/test/core_update_now.py
==============================================================================
--- trunk/tools/build/v2/test/core_update_now.py (original)
+++ trunk/tools/build/v2/test/core_update_now.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -26,7 +26,7 @@
DEPENDS all : target1 ;
""")
- t.run_build_system("-ffile.jam", stdout="""\
+ t.run_build_system(["-ffile.jam"], stdout="""\
...found 1 target...
...updating 1 target...
do-print target1
@@ -56,7 +56,7 @@
DEPENDS all : target1 ;
""")
- t.run_build_system("-ffile.jam -n", stdout="""\
+ t.run_build_system(["-ffile.jam", "-n"], stdout="""\
...found 1 target...
...updating 1 target...
do-print target1
@@ -98,7 +98,7 @@
DEPENDS all : target1 target2 ;
""")
- t.run_build_system("-ffile.jam -n", stdout="""\
+ t.run_build_system(["-ffile.jam", "-n"], stdout="""\
...found 1 target...
...updating 1 target...
fail target1
@@ -137,7 +137,7 @@
DEPENDS all : target1 target2 ;
""")
- t.run_build_system("-ffile.jam -n", status=1, stdout="""\
+ t.run_build_system(["-ffile.jam", "-n"], status=1, stdout="""\
don't know how to make target1
...found 1 target...
...can't find 1 target...
@@ -174,7 +174,7 @@
DEPENDS all : target1 ;
""")
- t.run_build_system("-ffile.jam -n", stdout="""\
+ t.run_build_system(["-ffile.jam", "-n"], stdout="""\
...found 1 target...
...updating 1 target...
do-print target1
Modified: trunk/tools/build/v2/test/core_variables_in_actions.py
==============================================================================
--- trunk/tools/build/v2/test/core_variables_in_actions.py (original)
+++ trunk/tools/build/v2/test/core_variables_in_actions.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -32,7 +32,7 @@
dummy all ;
""")
-t.run_build_system("-ffile.jam -d1")
+t.run_build_system(["-ffile.jam", "-d1"])
t.expect_output_line("From rule: 1 seconds 2 seconds 3 seconds")
t.expect_output_line('*From action: 1" 2" 3" seconds"*')
t.cleanup()
Modified: trunk/tools/build/v2/test/core_varnames.py
==============================================================================
--- trunk/tools/build/v2/test/core_varnames.py (original)
+++ trunk/tools/build/v2/test/core_varnames.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -33,6 +33,6 @@
NOTFILE xx ;
""")
-t.run_build_system("-ffile.jam", status=0)
+t.run_build_system(["-ffile.jam"], status=0)
t.cleanup()
Modified: trunk/tools/build/v2/test/default_build.py
==============================================================================
--- trunk/tools/build/v2/test/default_build.py (original)
+++ trunk/tools/build/v2/test/default_build.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -21,13 +21,13 @@
# Check that explictly-specified build variant supresses default-build.
t.rm("bin")
-t.run_build_system("release")
+t.run_build_system(["release"])
t.expect_addition(BoostBuild.List("bin/$toolset/release/") * "a.exe a.obj")
t.expect_nothing_more()
# Now check that we can specify explicit build request and default-build will be
# combined with it.
-t.run_build_system("optimization=space")
+t.run_build_system(["optimization=space"])
t.expect_addition("bin/$toolset/debug/optimization-space/a.exe")
t.expect_addition("bin/$toolset/release/optimization-space/a.exe")
@@ -36,7 +36,7 @@
exe a : a.cpp : : debug ;
exe a : b.cpp : : ;
""")
-t.run_build_system("-n --no-error-backtrace", status=1)
+t.run_build_system(["-n", "--no-error-backtrace"], status=1)
t.fail_test(t.stdout().find("default build must be identical in all alternatives") == -1)
# Test that default-build must be identical in all alternatives. No Error case,
@@ -45,7 +45,7 @@
exe a : a.cpp : <variant>debug ;
exe a : b.cpp : <variant>release ;
""")
-t.run_build_system("-n --no-error-backtrace", status=0)
+t.run_build_system(["-n", "--no-error-backtrace"], status=0)
# Now try a harder example: default build which contains <define> should cause
# <define> to be present when "b" is compiled. This happens only if
Modified: trunk/tools/build/v2/test/dependency_property.py
==============================================================================
--- trunk/tools/build/v2/test/dependency_property.py (original)
+++ trunk/tools/build/v2/test/dependency_property.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -30,7 +30,7 @@
void foo() {}
""")
-t.run_build_system("--no-error-backtrace", status=1)
+t.run_build_system(["--no-error-backtrace"], status=1)
t.fail_test(string.find(t.stdout(), "Duplicate name of actual target") == -1)
t.cleanup()
Modified: trunk/tools/build/v2/test/direct_request_test.py
==============================================================================
--- trunk/tools/build/v2/test/direct_request_test.py (original)
+++ trunk/tools/build/v2/test/direct_request_test.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -35,14 +35,14 @@
# endif
""")
-t.run_build_system("define=MACROS")
+t.run_build_system(["define=MACROS"])
t.expect_addition("bin/$toolset/debug/"
* (BoostBuild.List("a.obj b.obj b.dll a.exe")))
# When building a debug version, the 'define' still applies.
t.rm("bin")
-t.run_build_system("debug define=MACROS")
+t.run_build_system(["debug", "define=MACROS"])
t.expect_addition("bin/$toolset/debug/"
* (BoostBuild.List("a.obj b.obj b.dll a.exe")))
@@ -53,7 +53,7 @@
lib b : b.cpp ;
""")
t.rm("bin")
-t.run_build_system("release define=MACROS")
+t.run_build_system(["release", "define=MACROS"])
# Regression test: direct build request was not working when there was more
@@ -63,6 +63,6 @@
t.write("jamfile.jam", "build-project a ;")
t.write("a/jamfile.jam", "build-project b ;")
t.write("a/b/jamfile.jam", "")
-t.run_build_system("release")
+t.run_build_system(["release"])
t.cleanup()
Modified: trunk/tools/build/v2/test/dll_path.py
==============================================================================
--- trunk/tools/build/v2/test/dll_path.py (original)
+++ trunk/tools/build/v2/test/dll_path.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -134,12 +134,12 @@
bar() {}
""")
-t.run_build_system("hardcode-dll-paths=true")
+t.run_build_system(["hardcode-dll-paths=true"])
t.expect_addition("bin/$toolset/debug/mp.pathlist")
-es1 = t.adjust_names(["a/bin/$toolset/debug"])[0]
-es2 = t.adjust_names(["b/bin/$toolset/debug"])[0]
+es1 = t.adjust_names("a/bin/$toolset/debug")[0]
+es2 = t.adjust_names("b/bin/$toolset/debug")[0]
t.expect_content_line("bin/$toolset/debug/mp.pathlist", "*" + es1);
t.expect_content_line("bin/$toolset/debug/mp.pathlist", "*" + es2);
Modified: trunk/tools/build/v2/test/example_make.py
==============================================================================
--- trunk/tools/build/v2/test/example_make.py (original)
+++ trunk/tools/build/v2/test/example_make.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -10,7 +10,7 @@
import BoostBuild
import sys
-t = BoostBuild.Tester('example.python.interpreter="%s"' % sys.executable)
+t = BoostBuild.Tester(['example.python.interpreter=%s' % sys.executable])
t.set_tree("../example/make")
t.run_build_system()
t.expect_addition(["bin/$toolset/debug/main.cpp"])
Modified: trunk/tools/build/v2/test/explicit.py
==============================================================================
--- trunk/tools/build/v2/test/explicit.py (original)
+++ trunk/tools/build/v2/test/explicit.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -22,7 +22,7 @@
[".exe", ".obj"])
t.expect_nothing_more()
-t.run_build_system("hello2")
+t.run_build_system(["hello2"])
t.expect_addition("bin/$toolset/debug/hello2.exe")
t.rm(".")
Modified: trunk/tools/build/v2/test/free_features_request.py
==============================================================================
--- trunk/tools/build/v2/test/free_features_request.py (original)
+++ trunk/tools/build/v2/test/free_features_request.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -35,7 +35,7 @@
# If FOO is not defined when compiling the 'foo' target, we will get a link
# error at this point.
-t.run_build_system("hello define=FOO")
+t.run_build_system(["hello", "define=FOO"])
t.expect_addition("bin/$toolset/debug/hello.exe")
Modified: trunk/tools/build/v2/test/gcc_runtime.py
==============================================================================
--- trunk/tools/build/v2/test/gcc_runtime.py (original)
+++ trunk/tools/build/v2/test/gcc_runtime.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -13,12 +13,12 @@
t.write("jamroot.jam", "lib hello : hello.cpp ;")
t.write("hello.cpp", "int main() {}\n")
-t.run_build_system("runtime-link=static")
+t.run_build_system(["runtime-link=static"])
t.expect_output_line("warning: On gcc, DLLs can not be built with "
"'<runtime-link>static'.")
t.expect_nothing_more()
-t.run_build_system("link=static runtime-link=static")
+t.run_build_system(["link=static", "runtime-link=static"])
binFolder = "bin/$toolset/debug/link-static/runtime-link-static"
t.expect_addition("%s/hello.obj" % binFolder)
t.expect_addition("%s/hello.lib" % binFolder)
Modified: trunk/tools/build/v2/test/generators_test.py
==============================================================================
--- trunk/tools/build/v2/test/generators_test.py (original)
+++ trunk/tools/build/v2/test/generators_test.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -21,7 +21,7 @@
t = BoostBuild.Tester()
t.set_tree("generators-test")
-t.run_build_system("-d1")
+t.run_build_system(["-d1"])
t.expect_addition("bin/$toolset/debug/" * BoostBuild.List("a.my_exe a.my_obj "
"b.my_obj c.tui_h c.cpp c.my_obj d_parser.whl d_lexer.dlp d_parser.cpp "
" d_lexer.cpp d_lexer.my_obj d_parser.lr0 d_parser.h d_parser.my_obj "
Modified: trunk/tools/build/v2/test/inherit_toolset.py
==============================================================================
--- trunk/tools/build/v2/test/inherit_toolset.py (original)
+++ trunk/tools/build/v2/test/inherit_toolset.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -39,13 +39,13 @@
t.write("jamfile.jam", "exe a : a.cpp ;")
t.write("jamroot.jam", "using yfc1 ;")
-t.run_build_system("-n -d2 yfc1")
+t.run_build_system(["-n", "-d2", "yfc1"])
t.fail_test(string.find(t.stdout(), "yfc1-link") == -1)
# Make sure we do not have to explicitly 'use' yfc1.
t.write("jamroot.jam", "using yfc2 ;")
-t.run_build_system("-n -d2 yfc2")
+t.run_build_system(["-n", "-d2", "yfc2"])
t.fail_test(string.find(t.stdout(), "yfc2-link") == -1)
t.cleanup()
Modified: trunk/tools/build/v2/test/inline.py
==============================================================================
--- trunk/tools/build/v2/test/inline.py (original)
+++ trunk/tools/build/v2/test/inline.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -24,7 +24,7 @@
t.expect_addition("bin/$toolset/debug/link-static/a__helper.lib")
t.rm("bin/$toolset/debug/link-static/a__helper.lib")
-t.run_build_system("a__helper")
+t.run_build_system(["a__helper"])
t.expect_addition("bin/$toolset/debug/link-static/a__helper.lib")
t.rm("bin")
@@ -56,7 +56,7 @@
t.run_build_system()
t.expect_nothing_more()
-t.run_build_system("a")
+t.run_build_system(["a"])
t.expect_addition("bin/$toolset/debug/link-static/helper.lib")
t.cleanup()
Modified: trunk/tools/build/v2/test/library_chain.py
==============================================================================
--- trunk/tools/build/v2/test/library_chain.py (original)
+++ trunk/tools/build/v2/test/library_chain.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -53,11 +53,11 @@
t.write("b/jamfile.jam", "lib b : b.cpp ../a//a ;")
-t.run_build_system("-d2", stderr=None)
+t.run_build_system(["-d2"], stderr=None)
t.expect_addition("bin/$toolset/debug/main.exe")
t.rm(["bin", "a/bin", "b/bin"])
-t.run_build_system("link=static")
+t.run_build_system(["link=static"])
t.expect_addition("bin/$toolset/debug/link-static/main.exe")
t.rm(["bin", "a/bin", "b/bin"])
@@ -65,7 +65,7 @@
# Check that <library> works for static linking.
t.write("b/jamfile.jam", "lib b : b.cpp : <library>../a//a ;")
-t.run_build_system("link=static")
+t.run_build_system(["link=static"])
t.expect_addition("bin/$toolset/debug/link-static/main.exe")
t.rm(["bin", "a/bin", "b/bin"])
@@ -85,7 +85,7 @@
lib z : : <name>zzz ;
""")
-t.run_build_system("-a -d+2", status=None, stderr=None)
+t.run_build_system(["-a", "-d+2"], status=None, stderr=None)
# Try to find the "zzz" string either in response file (for Windows compilers),
# or in the standard output.
rsp = t.adjust_names("bin/$toolset/debug/main.exe.rsp")[0]
Modified: trunk/tools/build/v2/test/loop.py
==============================================================================
--- trunk/tools/build/v2/test/loop.py (original)
+++ trunk/tools/build/v2/test/loop.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -17,7 +17,7 @@
t.write("main.cpp", "")
t.write("l.cpp", "")
-t.run_build_system("--no-error-backtrace", status=1)
+t.run_build_system(["--no-error-backtrace"], status=1)
t.fail_test(string.find(t.stdout(),
"error: Recursion in main target references") == -1)
Modified: trunk/tools/build/v2/test/make_rule.py
==============================================================================
--- trunk/tools/build/v2/test/make_rule.py (original)
+++ trunk/tools/build/v2/test/make_rule.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -48,7 +48,7 @@
t.write("dir/hello.cpp", "int main() {}\n")
# Show only action names.
-t.run_build_system("-d1 -n")
+t.run_build_system(["-d1", "-n"])
t.fail_test(t.stdout().count("copy") != 1)
t.cleanup()
Modified: trunk/tools/build/v2/test/module_actions.py
==============================================================================
--- trunk/tools/build/v2/test/module_actions.py (original)
+++ trunk/tools/build/v2/test/module_actions.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -10,7 +10,7 @@
import os
import re
-t = BoostBuild.Tester("-d+1", pass_toolset=0)
+t = BoostBuild.Tester(["-d+1"], pass_toolset=0)
t.set_tree('module-actions')
Modified: trunk/tools/build/v2/test/ndebug.py
==============================================================================
--- trunk/tools/build/v2/test/ndebug.py (original)
+++ trunk/tools/build/v2/test/ndebug.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -28,6 +28,6 @@
# 'release' builds should get the NDEBUG define. We use static linking to avoid
# messing with imports/exports on Windows.
-t.run_build_system("link=static release")
+t.run_build_system(["link=static", "release"])
t.cleanup()
Modified: trunk/tools/build/v2/test/notfile.py
==============================================================================
--- trunk/tools/build/v2/test/notfile.py (original)
+++ trunk/tools/build/v2/test/notfile.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -31,7 +31,7 @@
int main() { std::cout << "Hello!\\n"; }
""")
-t.run_build_system("-n -d+2")
+t.run_build_system(["-n", "-d+2"])
t.fail_test(string.find(t.stdout(), "echo hi") == -1)
Modified: trunk/tools/build/v2/test/out_of_tree.py
==============================================================================
--- trunk/tools/build/v2/test/out_of_tree.py (original)
+++ trunk/tools/build/v2/test/out_of_tree.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -22,7 +22,7 @@
""")
t.write("p2/hello.cpp", "int main() {}\n")
-t.run_build_system("p1 p2//hello3")
+t.run_build_system(["p1", "p2//hello3"])
t.expect_addition("p1/bin/$toolset/debug/hello.exe")
t.expect_addition("p2/bin/$toolset/debug/hello3.exe")
Modified: trunk/tools/build/v2/test/prebuilt.py
==============================================================================
--- trunk/tools/build/v2/test/prebuilt.py (original)
+++ trunk/tools/build/v2/test/prebuilt.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -8,7 +8,7 @@
import BoostBuild
-t = BoostBuild.Tester("debug release")
+t = BoostBuild.Tester(["debug", "release"])
t.set_tree('prebuilt')
Modified: trunk/tools/build/v2/test/project_test3.py
==============================================================================
--- trunk/tools/build/v2/test/project_test3.py (original)
+++ trunk/tools/build/v2/test/project_test3.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -84,13 +84,13 @@
"bin/$toolset/debug/a.exe",
"lib2/bin/$toolset/debug/l.exe"])
-t.run_build_system("release optimization=off,speed")
+t.run_build_system(["release", "optimization=off,speed"])
t.expect_addition(["bin/$toolset/release/a.exe",
"bin/$toolset/release/a.obj",
"bin/$toolset/release/optimization-off/a.exe",
"bin/$toolset/release/optimization-off/a.obj"])
-t.run_build_system("--clean-all")
+t.run_build_system(["--clean-all"])
t.expect_removal(["bin/$toolset/debug/a.obj",
"bin/$toolset/debug/a.exe",
"lib/bin/$toolset/debug/b.obj",
@@ -102,31 +102,31 @@
# Now test target ids in command line.
t.set_tree("project-test3")
-t.run_build_system("lib//b.obj")
+t.run_build_system(["lib//b.obj"])
t.expect_addition("lib/bin/$toolset/debug/b.obj")
t.expect_nothing_more()
-t.run_build_system("--clean lib//b.obj")
+t.run_build_system(["--clean", "lib//b.obj"])
t.expect_removal("lib/bin/$toolset/debug/b.obj")
t.expect_nothing_more()
-t.run_build_system("lib//b.obj")
+t.run_build_system(["lib//b.obj"])
t.expect_addition("lib/bin/$toolset/debug/b.obj")
t.expect_nothing_more()
-t.run_build_system("release lib2/helper//e.obj /lib3//f.obj")
+t.run_build_system(["release", "lib2/helper//e.obj", "/lib3//f.obj"])
t.expect_addition("lib2/helper/bin/$toolset/release/e.obj")
t.expect_addition("lib3/bin/$toolset/release/f.obj")
t.expect_nothing_more()
# Test project ids in command line work as well.
t.set_tree("project-test3")
-t.run_build_system("/lib2")
+t.run_build_system(["/lib2"])
t.expect_addition("lib2/bin/$toolset/debug/" * BoostBuild.List("c.obj d.obj l.exe"))
t.expect_addition("bin/$toolset/debug/a.obj")
t.expect_nothing_more()
-t.run_build_system("lib")
+t.run_build_system(["lib"])
t.expect_addition("lib/bin/$toolset/debug/" * BoostBuild.List("b.obj m.exe"))
t.expect_nothing_more()
Modified: trunk/tools/build/v2/test/property_expansion.py
==============================================================================
--- trunk/tools/build/v2/test/property_expansion.py (original)
+++ trunk/tools/build/v2/test/property_expansion.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -23,6 +23,6 @@
#endif
""")
-t.run_build_system("debug-AA")
+t.run_build_system(["debug-AA"])
t.cleanup()
Modified: trunk/tools/build/v2/test/rebuilds.py
==============================================================================
--- trunk/tools/build/v2/test/rebuilds.py (original)
+++ trunk/tools/build/v2/test/rebuilds.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -6,7 +6,7 @@
import BoostBuild
-t = BoostBuild.Tester("-ffile.jam", pass_toolset=0)
+t = BoostBuild.Tester(["-ffile.jam"], pass_toolset=0)
t.write("file.jam", """\
rule make
@@ -29,12 +29,12 @@
t.write("baz", "nothing")
-t.run_build_system("bar")
+t.run_build_system(["bar"])
t.expect_addition("bar")
t.expect_nothing_more()
t.wait_for_time_change_since_last_build()
-t.run_build_system("foo")
+t.run_build_system(["foo"])
t.expect_touch("bar")
t.expect_addition("foo")
t.expect_nothing_more()
Modified: trunk/tools/build/v2/test/regression.py
==============================================================================
--- trunk/tools/build/v2/test/regression.py (original)
+++ trunk/tools/build/v2/test/regression.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -46,7 +46,7 @@
""")
# First test that when outcomes are expected, all .test files are created.
-t.run_build_system("hardcode-dll-paths=false", stderr=None, status=None)
+t.run_build_system(["hardcode-dll-paths=false"], stderr=None, status=None)
t.expect_addition("bin/c.test/$toolset/debug/c.test")
t.expect_addition("bin/c-f.test/$toolset/debug/c-f.test")
t.expect_addition("bin/r.test/$toolset/debug/r.test")
@@ -83,7 +83,7 @@
time compilation : c-obj ;
""")
-t.run_build_system("hardcode-dll-paths=false")
+t.run_build_system(["hardcode-dll-paths=false"])
t.expect_content("bin/r.test/$toolset/debug/r.output", """\
test input
EXIT STATUS: 0
@@ -104,7 +104,7 @@
t.touch(BoostBuild.List("c.cpp c-f.cpp r.cpp r-f.cpp"))
-t.run_build_system("hardcode-dll-paths=false", stderr=None, status=1)
+t.run_build_system(["hardcode-dll-paths=false"], stderr=None, status=1)
t.expect_removal("bin/c.test/$toolset/debug/c.test")
t.expect_removal("bin/c-f.test/$toolset/debug/c-f.test")
t.expect_removal("bin/r.test/$toolset/debug/r.test")
Modified: trunk/tools/build/v2/test/rescan_header.py
==============================================================================
--- trunk/tools/build/v2/test/rescan_header.py (original)
+++ trunk/tools/build/v2/test/rescan_header.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -34,7 +34,7 @@
obj test : test.cpp : <implicit-dependency>header3.h ;
""")
-t.run_build_system("-j2")
+t.run_build_system(["-j2"])
t.expect_addition("bin/$toolset/debug/header3.h")
t.expect_addition("bin/$toolset/debug/test.obj")
t.expect_nothing_more()
@@ -71,7 +71,7 @@
<implicit-dependency>header3.h ;
""")
-t.run_build_system("-j2 test")
+t.run_build_system(["-j2", "test"])
t.expect_addition("bin/$toolset/debug/header1.h")
t.expect_addition("bin/$toolset/debug/header2.h")
t.expect_addition("bin/$toolset/debug/header3.h")
@@ -121,7 +121,7 @@
<implicit-dependency>header3.h ;
""")
-t.run_build_system("-j2 test")
+t.run_build_system(["-j2", "test"])
t.expect_addition("bin/$toolset/debug/header1.h")
t.expect_addition("bin/$toolset/debug/header2.h")
t.expect_addition("bin/$toolset/debug/header3.h")
@@ -183,7 +183,7 @@
exe test : test2.cpp test1.cpp : <implicit-dependency>header3.h ;
""")
-t.run_build_system("-j2 test")
+t.run_build_system(["-j2", "test"])
t.expect_addition("bin/$toolset/debug/header3.h")
t.expect_addition("bin/$toolset/debug/test1.obj")
t.expect_addition("bin/$toolset/debug/test2.obj")
@@ -191,7 +191,7 @@
t.expect_nothing_more()
t.touch("header3.in")
-t.run_build_system("-j2 test")
+t.run_build_system(["-j2", "test"])
t.expect_touch("bin/$toolset/debug/header3.h")
t.expect_touch("bin/$toolset/debug/test1.obj")
t.expect_touch("bin/$toolset/debug/test2.obj")
@@ -255,7 +255,7 @@
exe test : test2.cpp test1.cpp : <implicit-dependency>header2.h <include>. ;
""")
-t.run_build_system("-j2 test")
+t.run_build_system(["-j2", "test"])
t.expect_addition("bin/$toolset/debug/header2.h")
t.expect_addition("bin/$toolset/debug/test1.obj")
t.expect_addition("bin/$toolset/debug/test2.obj")
Modified: trunk/tools/build/v2/test/resolution.py
==============================================================================
--- trunk/tools/build/v2/test/resolution.py (original)
+++ trunk/tools/build/v2/test/resolution.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -27,7 +27,7 @@
t.expect_addition("bin/$toolset/debug/hello.obj")
t.touch("hello.cpp")
-t.run_build_system("s")
+t.run_build_system(["s"])
# If 'hello' in the 's' target resolved to file in the current dir, nothing
# will be rebuilt.
t.expect_touch("bin/$toolset/debug/hello.obj")
Modified: trunk/tools/build/v2/test/searched_lib.py
==============================================================================
--- trunk/tools/build/v2/test/searched_lib.py (original)
+++ trunk/tools/build/v2/test/searched_lib.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -64,7 +64,7 @@
helper() { foo(); }
""")
-t.run_build_system("-d2")
+t.run_build_system(["-d2"])
t.expect_addition("bin/$toolset/debug/main.exe")
t.rm("bin/$toolset/debug/main.exe")
@@ -142,7 +142,7 @@
lib l : : <name>l_r <variant>release ;
""")
-t.run_build_system("-n")
+t.run_build_system(["-n"])
# A regression test. Two virtual target with the same properties were created
@@ -157,7 +157,7 @@
lib l : : <name>l_f ;
""")
-t.run_build_system("-n")
+t.run_build_system(["-n"])
# Make sure plain "lib foobar ; " works.
@@ -166,7 +166,7 @@
lib foobar ;
""")
-t.run_build_system("-n -d2")
+t.run_build_system(["-n", "-d2"])
t.fail_test(string.find(t.stdout(), "foobar") == -1)
@@ -176,7 +176,7 @@
lib foo bar ;
""")
-t.run_build_system("-n -d2")
+t.run_build_system(["-n", "-d2"])
t.fail_test(string.find(t.stdout(), "foo") == -1)
t.fail_test(string.find(t.stdout(), "bar") == -1)
Modified: trunk/tools/build/v2/test/skipping.py
==============================================================================
--- trunk/tools/build/v2/test/skipping.py (original)
+++ trunk/tools/build/v2/test/skipping.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -22,6 +22,6 @@
exe c : c.cpp ;
""")
-t.run_build_system("foo=1")
+t.run_build_system(["foo=1"])
t.cleanup()
Modified: trunk/tools/build/v2/test/sort_rule.py
==============================================================================
--- trunk/tools/build/v2/test/sort_rule.py (original)
+++ trunk/tools/build/v2/test/sort_rule.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -19,7 +19,7 @@
def testSORTCorrectness():
"""Testing that Boost Jam's SORT builtin rule actually sorts correctly."""
- t = BoostBuild.Tester("-ftest.jam -d1", pass_toolset=False,
+ t = BoostBuild.Tester(["-ftest.jam", "-d1"], pass_toolset=False,
use_test_config=False)
t.write("test.jam", """\
@@ -59,7 +59,7 @@
quadratic behaviour again in this use case.
"""
- t = BoostBuild.Tester("-ftest.jam -d1", pass_toolset=False,
+ t = BoostBuild.Tester(["-ftest.jam", "-d1"], pass_toolset=False,
use_test_config=False)
f = open(t.workpath("test.jam"), "w")
Modified: trunk/tools/build/v2/test/space_in_path.py
==============================================================================
--- trunk/tools/build/v2/test/space_in_path.py (original)
+++ trunk/tools/build/v2/test/space_in_path.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -8,12 +8,6 @@
import BoostBuild
-class unsplit(object):
- def __init__(self, value):
- self.value = value
- def split(self, ignored):
- return self.value
-
t = BoostBuild.Tester()
t.write("has space/jamroot.jam", """\
@@ -22,6 +16,6 @@
""")
t.write("has space/test.cpp", "int main() {}\n")
-t.run_build_system(unsplit(["has space"]))
+t.run_build_system(["has space"])
t.cleanup()
Modified: trunk/tools/build/v2/test/stage.py
==============================================================================
--- trunk/tools/build/v2/test/stage.py (original)
+++ trunk/tools/build/v2/test/stage.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -50,7 +50,7 @@
t.run_build_system()
t.expect_addition("ds/a.dll")
-t.run_build_system("release")
+t.run_build_system(["release"])
t.expect_addition("rs/a.dll")
@@ -141,7 +141,7 @@
""")
t.write("a1.txt", "")
t.write("a2.txt", "")
-t.run_build_system("a2")
+t.run_build_system(["a2"])
t.expect_addition(["dist/a1.txt", "dist/a2.txt"])
# Regression test: check that <location>. works.
Modified: trunk/tools/build/v2/test/startup_v2.py
==============================================================================
--- trunk/tools/build/v2/test/startup_v2.py (original)
+++ trunk/tools/build/v2/test/startup_v2.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -84,7 +84,7 @@
However, it failed to call the "boost-build" rule""")
# Test bootstrapping based on BOOST_BUILD_PATH.
-t.run_build_system("-sBOOST_BUILD_PATH=../boost-root/build",
+t.run_build_system(["-sBOOST_BUILD_PATH=../boost-root/build"],
subdir="bootstrap-env", stdout="build system bootstrapped")
# Test bootstrapping based on an explicit path in boost-build.jam.
Modified: trunk/tools/build/v2/test/static_and_shared_library.py
==============================================================================
--- trunk/tools/build/v2/test/static_and_shared_library.py (original)
+++ trunk/tools/build/v2/test/static_and_shared_library.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -24,13 +24,13 @@
t.expect_nothing_more()
reset()
-t.run_build_system("link=shared", subdir="lib")
+t.run_build_system(["link=shared"], subdir="lib")
t.expect_addition("lib/bin/$toolset/debug/" * BoostBuild.List("c.obj "
"auxilliary1.lib auxilliary2.dll"))
t.expect_nothing_more()
reset()
-t.run_build_system("link=static", subdir="lib")
+t.run_build_system(["link=static"], subdir="lib")
t.expect_addition("lib/bin/$toolset/debug/link-static/" * BoostBuild.List(
"c.obj auxilliary1.lib auxilliary2.lib"))
t.expect_nothing_more()
Modified: trunk/tools/build/v2/test/tag.py
==============================================================================
--- trunk/tools/build/v2/test/tag.py (original)
+++ trunk/tools/build/v2/test/tag.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -98,12 +98,12 @@
BoostBuild.List("bin/$toolset/release/link-static/b_rt.lib") +
BoostBuild.List("c/a_rt.exe"))
- variants = "debug release link=static,shared"
+ variants = ["debug", "release", "link=static,shared"]
t.run_build_system(variants)
t.expect_addition(file_list)
- t.run_build_system(variants + " clean")
+ t.run_build_system(variants + ["clean"])
t.expect_removal(file_list)
Modified: trunk/tools/build/v2/test/test_rc.py
==============================================================================
--- trunk/tools/build/v2/test/test_rc.py (original)
+++ trunk/tools/build/v2/test/test_rc.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -31,9 +31,10 @@
# Disable reading any external Boost Build configuration. This test is
# self sufficient so these options protect it from being adversly
# affected by any local (mis)configuration..
- t = BoostBuild.Tester("-d4 --debug-configuration --ignore-site-config "
- "--user-config= toolset=%s" % toolsetName, pass_d0=False,
- pass_toolset=False, use_test_config=False, translate_suffixes=False)
+ t = BoostBuild.Tester(["-d4", "--debug-configuration",
+ "--ignore-site-config", "--user-config=", "toolset=%s" % toolsetName],
+ pass_d0=False, pass_toolset=False, use_test_config=False,
+ translate_suffixes=False)
# Prepare a dummy toolset so we do not get errors in case the default one
# is not found and that we can test rc.jam functionality without having to
@@ -84,7 +85,7 @@
if noexec:
params.append("-n")
params.append("-sNOEXEC=NOEXEC")
- t.run_build_system(" ".join(params))
+ t.run_build_system(params)
t.expect_output_line("*NOEXEC*", noexec)
obj_file = "xxx_res.obj"
t.expect_output_line("compile.resource.dummy *%s" % obj_file, expect)
Modified: trunk/tools/build/v2/test/test_result_dumping.py
==============================================================================
--- trunk/tools/build/v2/test/test_result_dumping.py (original)
+++ trunk/tools/build/v2/test/test_result_dumping.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -16,7 +16,7 @@
#
###############################################################################
-t = BoostBuild.Tester("--dump-tests")
+t = BoostBuild.Tester(["--dump-tests"])
t.write("TestBuild/jamroot.jam", """\
import testing ;
Modified: trunk/tools/build/v2/test/timedata.py
==============================================================================
--- trunk/tools/build/v2/test/timedata.py (original)
+++ trunk/tools/build/v2/test/timedata.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -83,8 +83,8 @@
\.\.\.updated 2 targets\.\.\.$
"""
- t.run_build_system("-ffile.jam -d+1", stdout=expected_output, match=lambda
- actual, expected: re.search(expected, actual, re.DOTALL))
+ t.run_build_system(["-ffile.jam", "-d+1"], stdout=expected_output,
+ match=lambda actual, expected: re.search(expected, actual, re.DOTALL))
t.expect_addition("foo")
t.expect_addition("bar")
t.expect_nothing_more()
Modified: trunk/tools/build/v2/test/unit_test.py
==============================================================================
--- trunk/tools/build/v2/test/unit_test.py (original)
+++ trunk/tools/build/v2/test/unit_test.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -30,7 +30,7 @@
helper() {}
""")
-t.run_build_system("link=static")
+t.run_build_system(["link=static"])
t.expect_addition("bin/$toolset/debug/link-static/test.passed")
t.cleanup()
Modified: trunk/tools/build/v2/test/unit_tests.py
==============================================================================
--- trunk/tools/build/v2/test/unit_tests.py (original)
+++ trunk/tools/build/v2/test/unit_tests.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -7,5 +7,5 @@
import BoostBuild
t = BoostBuild.Tester(pass_toolset=0)
-t.run_build_system("--debug --build-system=test/test")
+t.run_build_system(["--debug", "--build-system=test/test"])
t.cleanup()
Modified: trunk/tools/build/v2/test/unused.py
==============================================================================
--- trunk/tools/build/v2/test/unused.py (original)
+++ trunk/tools/build/v2/test/unused.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -19,11 +19,11 @@
# easy to check if a warning was issued or not.
t.run_build_system(stdout="")
-t.run_build_system("-sGENERATE_ONLY_UNUSABLE=1", stdout="")
+t.run_build_system(["-sGENERATE_ONLY_UNUSABLE=1"], stdout="")
# Now check that even if main target generates nothing, its usage requirements
# are still propagated to dependants.
t.write("a.cpp", "int main() {}\n")
-t.run_build_system("-sGENERATE_NOTHING=1")
+t.run_build_system(["-sGENERATE_NOTHING=1"])
t.cleanup()
Modified: trunk/tools/build/v2/test/use_requirements.py
==============================================================================
--- trunk/tools/build/v2/test/use_requirements.py (original)
+++ trunk/tools/build/v2/test/use_requirements.py 2012-07-12 08:55:25 EDT (Thu, 12 Jul 2012)
@@ -51,7 +51,7 @@
""")
t.run_build_system()
-t.run_build_system("--clean")
+t.run_build_system(["--clean"])
# Test that use requirements on main target work, when they are referred using
@@ -78,7 +78,7 @@
""")
t.run_build_system()
-t.run_build_system("--clean")
+t.run_build_system(["--clean"])
# Test that usage requirements on a project work.
@@ -132,7 +132,7 @@
""")
t.run_build_system()
-t.run_build_system("--clean")
+t.run_build_system(["--clean"])
# Test that we correctly handle dependency features in usage requirements on
@@ -170,7 +170,7 @@
""")
t.run_build_system()
-t.run_build_system("--clean")
+t.run_build_system(["--clean"])
# Test correct handling of dependency features in project requirements.
@@ -249,7 +249,7 @@
foo() {}
""")
-t.run_build_system("link=static")
+t.run_build_system(["link=static"])
t.expect_addition("libs/bin/$toolset/debug/link-static/a_d.obj")
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk