Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r79701 - trunk/tools/build/v2/test
From: jurko.gospodnetic_at_[hidden]
Date: 2012-07-23 14:10:38


Author: jurko
Date: 2012-07-23 14:10:36 EDT (Mon, 23 Jul 2012)
New Revision: 79701
URL: http://svn.boost.org/trac/boost/changeset/79701

Log:
Updated Boost Build's internal testing system to allow for more detailed output and file content line testing - can now test for multiple lines in sequence, with or without having other lines in between.
Text files modified:
   trunk/tools/build/v2/test/BoostBuild.py | 138 +++++++++++++++++++---
   trunk/tools/build/v2/test/build_file.py | 6
   trunk/tools/build/v2/test/builtin_split_by_characters.py | 2
   trunk/tools/build/v2/test/conditionals_multiple.py | 234 ++++++++++++++++++++--------------------
   trunk/tools/build/v2/test/configuration.py | 178 +++++++++++++++---------------
   trunk/tools/build/v2/test/copy_time.py | 2
   trunk/tools/build/v2/test/core_action_output.py | 30 ++--
   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_d12.py | 8
   trunk/tools/build/v2/test/core_nt_cmd_line.py | 67 +++++-----
   trunk/tools/build/v2/test/core_option_l.py | 2
   trunk/tools/build/v2/test/core_source_line_tracking.py | 12 +-
   trunk/tools/build/v2/test/core_variables_in_actions.py | 4
   trunk/tools/build/v2/test/default_toolset.py | 20 +-
   trunk/tools/build/v2/test/dll_path.py | 4
   trunk/tools/build/v2/test/double_loading.py | 2
   trunk/tools/build/v2/test/gcc_runtime.py | 2
   trunk/tools/build/v2/test/generator_selection.py | 2
   trunk/tools/build/v2/test/generators_test.py | 10
   trunk/tools/build/v2/test/load_order.py | 2
   trunk/tools/build/v2/test/notfile.py | 2
   trunk/tools/build/v2/test/project_glob.py | 2
   trunk/tools/build/v2/test/sort_rule.py | 10
   trunk/tools/build/v2/test/tag.py | 2
   trunk/tools/build/v2/test/test_rc.py | 4
   trunk/tools/build/v2/test/test_result_dumping.py | 2
   trunk/tools/build/v2/test/timedata.py | 8
   28 files changed, 429 insertions(+), 336 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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -722,32 +722,52 @@
             annotation("unexpected changes", output.getvalue())
             self.fail_test(1)
 
- def __expect_line(self, content, expected, expected_to_exist):
- expected = expected.strip()
- lines = content.splitlines()
- found = False
- for line in lines:
- line = line.strip()
- if fnmatch.fnmatch(line, expected):
- found = True
- break
-
- if expected_to_exist and not found:
- annotation("failure",
- "Did not find expected line:\n%s\nin output:\n%s" %
- (expected, content))
- self.fail_test(1)
- if not expected_to_exist and found:
- annotation("failure",
- "Found an unexpected line:\n%s\nin output:\n%s" %
- (expected, content))
+ def __expect_lines(self, data, lines, expected):
+ # str.splitlines() trims at most one trailing newline while we want the
+ # trailing newline to indicate that there should be an extra empty line
+ # at the end.
+ splitlines = lambda x : (x + "\n").splitlines()
+
+ if data is None:
+ data = []
+ elif data.__class__ is str:
+ data = splitlines(data)
+
+ if lines.__class__ is str:
+ lines = [splitlines(lines)]
+ else:
+ expanded = []
+ for x in lines:
+ if x.__class__ is str:
+ expanded.extend(splitlines(x))
+ else:
+ expanded.append(x)
+ lines = expanded
+
+ if _contains_lines(data, lines) != bool(expected):
+ output = []
+ if expected:
+ output = ["Did not find expected lines:"]
+ else:
+ output = ["Found unexpected lines:"]
+ first = True
+ for line_sequence in lines:
+ if line_sequence:
+ if first:
+ first = False
+ else:
+ output.append("...")
+ output.extend(" > " + line for line in line_sequence)
+ output.append("in output:")
+ output.extend(" > " + line for line in data)
+ annotation("failure", "\n".join(output))
             self.fail_test(1)
 
- def expect_output_line(self, line, expected=True):
- self.__expect_line(self.stdout(), line, expected)
+ def expect_output_lines(self, lines, expected=True):
+ self.__expect_lines(self.stdout(), lines, expected)
 
- def expect_content_line(self, filename, line, expected=True):
- self.__expect_line(self.__read_file(filename), line, expected)
+ def expect_content_lines(self, filename, line, expected=True):
+ self.__expect_lines(self.__read_file(filename), line, expected)
 
     def __read_file(self, name, exact=False):
         name = self.adjust_names(name)[0]
@@ -974,8 +994,80 @@
         return result
 
 
+def _contains_lines(data, lines):
+ data_line_count = len(data)
+ expected_line_count = reduce(lambda x, y: x + len(y), lines, 0)
+ index = 0
+ for expected in lines:
+ if expected_line_count > data_line_count - index:
+ return False
+ expected_line_count -= len(expected)
+ index = __match_line_sequence(data, index, data_line_count -
+ expected_line_count, expected)
+ if index < 0:
+ return False
+ return True
+
+
+def __match_line_sequence(data, start, end, lines):
+ if not lines:
+ return start
+ for index in xrange(start, end - len(lines) + 1):
+ data_index = index
+ for expected in lines:
+ if not fnmatch.fnmatch(data[data_index], expected):
+ break;
+ data_index += 1
+ else:
+ return data_index
+ return -1
+
+
 # Quickie tests. Should use doctest instead.
 if __name__ == "__main__":
     assert str(List("foo bar") * "/baz") == "['foo/baz', 'bar/baz']"
     assert repr("foo/" * List("bar baz")) == "__main__.List('foo/bar foo/baz')"
+
+ assert _contains_lines([], [])
+ assert _contains_lines([], [[]])
+ assert _contains_lines([], [[], []])
+ assert _contains_lines([], [[], [], []])
+ assert not _contains_lines([], [[""]])
+ assert not _contains_lines([], [["a"]])
+
+ assert _contains_lines([""], [])
+ assert _contains_lines(["a"], [])
+ assert _contains_lines(["a", "b"], [])
+ assert _contains_lines(["a", "b"], [[], [], []])
+
+ assert _contains_lines([""], [[""]])
+ assert not _contains_lines([""], [["a"]])
+ assert not _contains_lines(["a"], [[""]])
+ assert _contains_lines(["a", "", "b", ""], [["a"]])
+ assert _contains_lines(["a", "", "b", ""], [[""]])
+ assert _contains_lines(["a", "", "b"], [["b"]])
+ assert not _contains_lines(["a", "b"], [[""]])
+ assert not _contains_lines(["a", "", "b", ""], [["c"]])
+ assert _contains_lines(["a", "", "b", "x"], [["x"]])
+
+ data = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
+ assert _contains_lines(data, [["1", "2"]])
+ assert not _contains_lines(data, [["2", "1"]])
+ assert not _contains_lines(data, [["1", "3"]])
+ assert not _contains_lines(data, [["1", "3"]])
+ assert _contains_lines(data, [["1"], ["2"]])
+ assert _contains_lines(data, [["1"], [], [], [], ["2"]])
+ assert _contains_lines(data, [["1"], ["3"]])
+ assert not _contains_lines(data, [["3"], ["1"]])
+ assert _contains_lines(data, [["3"], ["7"], ["8"]])
+ assert not _contains_lines(data, [["1"], ["3", "5"]])
+ assert not _contains_lines(data, [["1"], [""], ["5"]])
+ assert not _contains_lines(data, [["1"], ["5"], ["3"]])
+ assert not _contains_lines(data, [["1"], ["5", "3"]])
+
+ assert not _contains_lines(data, [[" 3"]])
+ assert not _contains_lines(data, [["3 "]])
+ assert not _contains_lines(data, [["3", ""]])
+ assert not _contains_lines(data, [["", "3"]])
+
     print("tests passed")

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -36,7 +36,7 @@
     t.write("sub/hello.cpp", "int main() {}\n")
 
     t.run_build_system(["sub", t.adjust_suffix("hello.obj")])
- t.expect_output_line("*depends on itself*", False)
+ t.expect_output_lines("*depends on itself*", False)
     t.expect_addition("sub/bin/$toolset/debug/hello.obj")
     t.expect_nothing_more()
 
@@ -90,7 +90,7 @@
 
     obj = t.adjust_suffix("hello2.obj")
     t.run_build_system(["hello1", obj], status=1)
- t.expect_output_line("don't know how to make*" + obj)
+ t.expect_output_lines("don't know how to make*" + obj)
     t.expect_nothing_more()
 
     t.cleanup()
@@ -148,7 +148,7 @@
     t.write("sub/hello.cpp", "int main() {}\n")
 
     t.run_build_system([t.adjust_suffix("hello.obj")])
- t.expect_output_line("*depends on itself*", False)
+ t.expect_output_lines("*depends on itself*", False)
     t.expect_addition("bin/$toolset/debug/hello.obj")
     t.expect_addition("sub/bin/$toolset/debug/hello.obj")
     t.expect_nothing_more()

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -13,7 +13,7 @@
     t = BoostBuild.Tester(pass_toolset=0)
     t.write("file.jam", "SPLIT_BY_CHARACTERS %s ;" % params)
     t.run_build_system(["-ffile.jam"], status=1)
- t.expect_output_line("[*] %s" % expected_error_line)
+ t.expect_output_lines("[*] %s" % expected_error_line)
     t.cleanup()
 
 def test_valid():

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -11,12 +11,12 @@
 import BoostBuild
 
 
-################################################################################
+###############################################################################
 #
 # test_multiple_conditions()
 # --------------------------
 #
-################################################################################
+###############################################################################
 
 def test_multiple_conditions():
     """Basic tests for properties conditioned on multiple other properties."""
@@ -71,59 +71,59 @@
 """)
 
     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/" )
- t.expect_output_line("description: /a0-b0/" , False)
- t.expect_output_line("description: /a0-b1/" , False)
- t.expect_output_line("description: /a1-b0/" , False)
- t.expect_output_line("description: /a1-b1/" )
- t.expect_output_line("description: /a0-b0-c0/", False)
- t.expect_output_line("description: /a0-b0-c1/", False)
- t.expect_output_line("description: /a0-b1-c1/", False)
- t.expect_output_line("description: /a1-b0-c1/", False)
- t.expect_output_line("description: /a1-b1-c0/", False)
- t.expect_output_line("description: /a1-b1-c1/" )
+ t.expect_output_lines("description: /d/" )
+ t.expect_output_lines("description: /a0/" , False)
+ t.expect_output_lines("description: /a1/" )
+ t.expect_output_lines("description: /a0-b0/" , False)
+ t.expect_output_lines("description: /a0-b1/" , False)
+ t.expect_output_lines("description: /a1-b0/" , False)
+ t.expect_output_lines("description: /a1-b1/" )
+ t.expect_output_lines("description: /a0-b0-c0/", False)
+ t.expect_output_lines("description: /a0-b0-c1/", False)
+ t.expect_output_lines("description: /a0-b1-c1/", False)
+ t.expect_output_lines("description: /a1-b0-c1/", False)
+ t.expect_output_lines("description: /a1-b1-c0/", False)
+ t.expect_output_lines("description: /a1-b1-c1/" )
 
     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)
- t.expect_output_line("description: /a0-b0/" )
- t.expect_output_line("description: /a0-b1/" , False)
- t.expect_output_line("description: /a1-b0/" , False)
- t.expect_output_line("description: /a1-b1/" , False)
- t.expect_output_line("description: /a0-b0-c0/", False)
- t.expect_output_line("description: /a0-b0-c1/" )
- t.expect_output_line("description: /a0-b1-c1/", False)
- t.expect_output_line("description: /a1-b0-c1/", False)
- t.expect_output_line("description: /a1-b1-c0/", False)
- t.expect_output_line("description: /a1-b1-c1/", False)
+ t.expect_output_lines("description: /d/" )
+ t.expect_output_lines("description: /a0/" )
+ t.expect_output_lines("description: /a1/" , False)
+ t.expect_output_lines("description: /a0-b0/" )
+ t.expect_output_lines("description: /a0-b1/" , False)
+ t.expect_output_lines("description: /a1-b0/" , False)
+ t.expect_output_lines("description: /a1-b1/" , False)
+ t.expect_output_lines("description: /a0-b0-c0/", False)
+ t.expect_output_lines("description: /a0-b0-c1/" )
+ t.expect_output_lines("description: /a0-b1-c1/", False)
+ t.expect_output_lines("description: /a1-b0-c1/", False)
+ t.expect_output_lines("description: /a1-b1-c0/", False)
+ t.expect_output_lines("description: /a1-b1-c1/", False)
 
     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)
- t.expect_output_line("description: /a0-b0/" )
- t.expect_output_line("description: /a0-b1/" , False)
- t.expect_output_line("description: /a1-b0/" , False)
- t.expect_output_line("description: /a1-b1/" , False)
- t.expect_output_line("description: /a0-b0-c0/" )
- t.expect_output_line("description: /a0-b0-c1/", False)
- t.expect_output_line("description: /a0-b1-c1/", False)
- t.expect_output_line("description: /a1-b0-c1/", False)
- t.expect_output_line("description: /a1-b1-c0/", False)
- t.expect_output_line("description: /a1-b1-c1/", False)
+ t.expect_output_lines("description: /d/" )
+ t.expect_output_lines("description: /a0/" )
+ t.expect_output_lines("description: /a1/" , False)
+ t.expect_output_lines("description: /a0-b0/" )
+ t.expect_output_lines("description: /a0-b1/" , False)
+ t.expect_output_lines("description: /a1-b0/" , False)
+ t.expect_output_lines("description: /a1-b1/" , False)
+ t.expect_output_lines("description: /a0-b0-c0/" )
+ t.expect_output_lines("description: /a0-b0-c1/", False)
+ t.expect_output_lines("description: /a0-b1-c1/", False)
+ t.expect_output_lines("description: /a1-b0-c1/", False)
+ t.expect_output_lines("description: /a1-b1-c0/", False)
+ t.expect_output_lines("description: /a1-b1-c1/", False)
 
     t.cleanup()
 
 
-################################################################################
+###############################################################################
 #
 # test_multiple_conditions_with_toolset_version()
 # -----------------------------------------------
 #
-################################################################################
+###############################################################################
 
 def test_multiple_conditions_with_toolset_version():
     """
@@ -223,90 +223,90 @@
 """)
 
     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)
- t.expect_output_line("description: /t0-a1/" )
- t.expect_output_line("description: /t1-a0/" , False)
- t.expect_output_line("description: /t1-a1/" , False)
- t.expect_output_line("description: /t-a0-b0/" , False)
- t.expect_output_line("description: /t-a0-b1/" , False)
- t.expect_output_line("description: /t-a1-b0/" , False)
- t.expect_output_line("description: /t-a1-b1/" )
- t.expect_output_line("description: /a0-t-b0/" , False)
- t.expect_output_line("description: /a0-t-b1/" , False)
- t.expect_output_line("description: /a1-t-b0/" , False)
- t.expect_output_line("description: /a1-t-b1/" )
- t.expect_output_line("description: /a0-b0-t/" , False)
- t.expect_output_line("description: /a0-b1-t/" , False)
- t.expect_output_line("description: /a1-b0-t/" , False)
- t.expect_output_line("description: /a1-b1-t/" )
- t.expect_output_line("description: /t0-a0-b0/", False)
- t.expect_output_line("description: /t0-a0-b1/", False)
- t.expect_output_line("description: /t0-a1-b0/", False)
- t.expect_output_line("description: /t0-a1-b1/" )
- t.expect_output_line("description: /t1-a0-b0/", False)
- t.expect_output_line("description: /t1-a0-b1/", False)
- t.expect_output_line("description: /t1-a1-b0/", False)
- t.expect_output_line("description: /t1-a1-b1/", False)
- t.expect_output_line("description: /a0-t1-b0/", False)
- t.expect_output_line("description: /a0-t1-b1/", False)
- t.expect_output_line("description: /a1-t0-b0/", False)
- t.expect_output_line("description: /a1-t0-b1/" )
- t.expect_output_line("description: /b0-a1-t0/", False)
- t.expect_output_line("description: /b0-a0-t1/", False)
- t.expect_output_line("description: /b0-a1-t1/", False)
- t.expect_output_line("description: /b1-a0-t1/", False)
- t.expect_output_line("description: /b1-a1-t0/" )
- t.expect_output_line("description: /b1-a1-t1/", False)
+ t.expect_output_lines("description: /t-a0/" , False)
+ t.expect_output_lines("description: /t-a1/" )
+ t.expect_output_lines("description: /t0-a0/" , False)
+ t.expect_output_lines("description: /t0-a1/" )
+ t.expect_output_lines("description: /t1-a0/" , False)
+ t.expect_output_lines("description: /t1-a1/" , False)
+ t.expect_output_lines("description: /t-a0-b0/" , False)
+ t.expect_output_lines("description: /t-a0-b1/" , False)
+ t.expect_output_lines("description: /t-a1-b0/" , False)
+ t.expect_output_lines("description: /t-a1-b1/" )
+ t.expect_output_lines("description: /a0-t-b0/" , False)
+ t.expect_output_lines("description: /a0-t-b1/" , False)
+ t.expect_output_lines("description: /a1-t-b0/" , False)
+ t.expect_output_lines("description: /a1-t-b1/" )
+ t.expect_output_lines("description: /a0-b0-t/" , False)
+ t.expect_output_lines("description: /a0-b1-t/" , False)
+ t.expect_output_lines("description: /a1-b0-t/" , False)
+ t.expect_output_lines("description: /a1-b1-t/" )
+ t.expect_output_lines("description: /t0-a0-b0/", False)
+ t.expect_output_lines("description: /t0-a0-b1/", False)
+ t.expect_output_lines("description: /t0-a1-b0/", False)
+ t.expect_output_lines("description: /t0-a1-b1/" )
+ t.expect_output_lines("description: /t1-a0-b0/", False)
+ t.expect_output_lines("description: /t1-a0-b1/", False)
+ t.expect_output_lines("description: /t1-a1-b0/", False)
+ t.expect_output_lines("description: /t1-a1-b1/", False)
+ t.expect_output_lines("description: /a0-t1-b0/", False)
+ t.expect_output_lines("description: /a0-t1-b1/", False)
+ t.expect_output_lines("description: /a1-t0-b0/", False)
+ t.expect_output_lines("description: /a1-t0-b1/" )
+ t.expect_output_lines("description: /b0-a1-t0/", False)
+ t.expect_output_lines("description: /b0-a0-t1/", False)
+ t.expect_output_lines("description: /b0-a1-t1/", False)
+ t.expect_output_lines("description: /b1-a0-t1/", False)
+ t.expect_output_lines("description: /b1-a1-t0/" )
+ t.expect_output_lines("description: /b1-a1-t1/", False)
 
     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)
- t.expect_output_line("description: /t0-a1/" , False)
- t.expect_output_line("description: /t1-a0/" , False)
- t.expect_output_line("description: /t1-a1/" )
- t.expect_output_line("description: /t-a0-b0/" , False)
- t.expect_output_line("description: /t-a0-b1/" , False)
- t.expect_output_line("description: /t-a1-b0/" , False)
- t.expect_output_line("description: /t-a1-b1/" )
- t.expect_output_line("description: /a0-t-b0/" , False)
- t.expect_output_line("description: /a0-t-b1/" , False)
- t.expect_output_line("description: /a1-t-b0/" , False)
- t.expect_output_line("description: /a1-t-b1/" )
- t.expect_output_line("description: /a0-b0-t/" , False)
- t.expect_output_line("description: /a0-b1-t/" , False)
- t.expect_output_line("description: /a1-b0-t/" , False)
- t.expect_output_line("description: /a1-b1-t/" )
- t.expect_output_line("description: /t0-a0-b0/", False)
- t.expect_output_line("description: /t0-a0-b1/", False)
- t.expect_output_line("description: /t0-a1-b0/", False)
- t.expect_output_line("description: /t0-a1-b1/", False)
- t.expect_output_line("description: /t1-a0-b0/", False)
- t.expect_output_line("description: /t1-a0-b1/", False)
- t.expect_output_line("description: /t1-a1-b0/", False)
- t.expect_output_line("description: /t1-a1-b1/" )
- t.expect_output_line("description: /a0-t1-b0/", False)
- t.expect_output_line("description: /a0-t1-b1/", False)
- t.expect_output_line("description: /a1-t0-b0/", False)
- t.expect_output_line("description: /a1-t0-b1/", False)
- t.expect_output_line("description: /b0-a1-t0/", False)
- t.expect_output_line("description: /b0-a0-t1/", False)
- t.expect_output_line("description: /b0-a1-t1/", False)
- t.expect_output_line("description: /b1-a0-t1/", False)
- t.expect_output_line("description: /b1-a1-t0/", False)
- t.expect_output_line("description: /b1-a1-t1/" )
+ t.expect_output_lines("description: /t-a0/" , False)
+ t.expect_output_lines("description: /t-a1/" )
+ t.expect_output_lines("description: /t0-a0/" , False)
+ t.expect_output_lines("description: /t0-a1/" , False)
+ t.expect_output_lines("description: /t1-a0/" , False)
+ t.expect_output_lines("description: /t1-a1/" )
+ t.expect_output_lines("description: /t-a0-b0/" , False)
+ t.expect_output_lines("description: /t-a0-b1/" , False)
+ t.expect_output_lines("description: /t-a1-b0/" , False)
+ t.expect_output_lines("description: /t-a1-b1/" )
+ t.expect_output_lines("description: /a0-t-b0/" , False)
+ t.expect_output_lines("description: /a0-t-b1/" , False)
+ t.expect_output_lines("description: /a1-t-b0/" , False)
+ t.expect_output_lines("description: /a1-t-b1/" )
+ t.expect_output_lines("description: /a0-b0-t/" , False)
+ t.expect_output_lines("description: /a0-b1-t/" , False)
+ t.expect_output_lines("description: /a1-b0-t/" , False)
+ t.expect_output_lines("description: /a1-b1-t/" )
+ t.expect_output_lines("description: /t0-a0-b0/", False)
+ t.expect_output_lines("description: /t0-a0-b1/", False)
+ t.expect_output_lines("description: /t0-a1-b0/", False)
+ t.expect_output_lines("description: /t0-a1-b1/", False)
+ t.expect_output_lines("description: /t1-a0-b0/", False)
+ t.expect_output_lines("description: /t1-a0-b1/", False)
+ t.expect_output_lines("description: /t1-a1-b0/", False)
+ t.expect_output_lines("description: /t1-a1-b1/" )
+ t.expect_output_lines("description: /a0-t1-b0/", False)
+ t.expect_output_lines("description: /a0-t1-b1/", False)
+ t.expect_output_lines("description: /a1-t0-b0/", False)
+ t.expect_output_lines("description: /a1-t0-b1/", False)
+ t.expect_output_lines("description: /b0-a1-t0/", False)
+ t.expect_output_lines("description: /b0-a0-t1/", False)
+ t.expect_output_lines("description: /b0-a1-t1/", False)
+ t.expect_output_lines("description: /b1-a0-t1/", False)
+ t.expect_output_lines("description: /b1-a1-t0/", False)
+ t.expect_output_lines("description: /b1-a1-t1/" )
 
     t.cleanup()
 
 
-################################################################################
+###############################################################################
 #
 # main()
 # ------
 #
-################################################################################
+###############################################################################
 
 test_multiple_conditions()
 test_multiple_conditions_with_toolset_version()

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -104,125 +104,125 @@
     test = LocalTester(t)
 
     test(1, None)
- t.expect_output_line(explicitConfigLoadMessage, False)
- t.expect_output_line(disabledConfigLoadMessage, False)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(explicitConfigLoadMessage, False)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     test(2, None, ["--user-config="])
- t.expect_output_line(implicitConfigLoadMessage, False)
- t.expect_output_line(explicitConfigLoadMessage, False)
- t.expect_output_line(disabledConfigLoadMessage)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage, False)
+ t.expect_output_lines(disabledConfigLoadMessage)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     test(3, None, ['--user-config=""'])
- t.expect_output_line(implicitConfigLoadMessage, False)
- t.expect_output_line(explicitConfigLoadMessage, False)
- t.expect_output_line(disabledConfigLoadMessage)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage, False)
+ t.expect_output_lines(disabledConfigLoadMessage)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     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)
- t.expect_output_line(testMessage % configFileNames[0])
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0])
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     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)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2])
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2])
 
     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)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1])
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1])
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     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)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2])
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2])
 
     if canSetEmptyEnvironmentVariable:
         test(8, "")
- t.expect_output_line(implicitConfigLoadMessage, False)
- t.expect_output_line(explicitConfigLoadMessage, False)
- t.expect_output_line(disabledConfigLoadMessage, True)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage, False)
+ t.expect_output_lines(disabledConfigLoadMessage, True)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     test(9, '""')
- t.expect_output_line(implicitConfigLoadMessage, False)
- t.expect_output_line(explicitConfigLoadMessage, False)
- t.expect_output_line(disabledConfigLoadMessage)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage, False)
+ t.expect_output_lines(disabledConfigLoadMessage)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     test(10, configFileNames[1])
- t.expect_output_line(implicitConfigLoadMessage, False)
- t.expect_output_line(explicitConfigLoadMessage)
- t.expect_output_line(disabledConfigLoadMessage, False)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1])
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1])
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     test(11, configFileNames[1], ['--user-config=""'])
- t.expect_output_line(implicitConfigLoadMessage, False)
- t.expect_output_line(explicitConfigLoadMessage, False)
- t.expect_output_line(disabledConfigLoadMessage)
- t.expect_output_line(testMessage % configFileNames[0], False)
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage, False)
+ t.expect_output_lines(disabledConfigLoadMessage)
+ t.expect_output_lines(testMessage % configFileNames[0], False)
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     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)
- t.expect_output_line(testMessage % configFileNames[0])
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0])
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     if canSetEmptyEnvironmentVariable:
         test(13, "", ['--user-config="%s"' % configFileNames[0]])
- t.expect_output_line(implicitConfigLoadMessage, False)
- t.expect_output_line(explicitConfigLoadMessage)
- t.expect_output_line(disabledConfigLoadMessage, False)
- t.expect_output_line(testMessage % configFileNames[0])
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0])
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     test(14, '""', ['--user-config="%s"' % configFileNames[0]])
- t.expect_output_line(implicitConfigLoadMessage, False)
- t.expect_output_line(explicitConfigLoadMessage)
- t.expect_output_line(disabledConfigLoadMessage, False)
- t.expect_output_line(testMessage % configFileNames[0])
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0])
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     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)
- t.expect_output_line(testMessage % configFileNames[0])
- t.expect_output_line(testMessage % configFileNames[1], False)
- t.expect_output_line(testMessage % configFileNames[2], False)
+ t.expect_output_lines(implicitConfigLoadMessage, False)
+ t.expect_output_lines(explicitConfigLoadMessage)
+ t.expect_output_lines(disabledConfigLoadMessage, False)
+ t.expect_output_lines(testMessage % configFileNames[0])
+ t.expect_output_lines(testMessage % configFileNames[1], False)
+ t.expect_output_lines(testMessage % configFileNames[2], False)
 
     t.cleanup()
 

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -63,7 +63,7 @@
     tester.fail_test(1)
 
 tester.run_build_system(["-d1"])
-tester.expect_output_line("common.copy*", False)
+tester.expect_output_lines("common.copy*", False)
 tester.expect_nothing_more()
 
 tester.cleanup()

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -30,33 +30,33 @@
 """)
 
 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_output_lines("{{{ 1 }}}")
+t.expect_output_lines("stdout")
+t.expect_output_lines("stderr")
 t.expect_nothing_more()
 
 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_output_lines("{{{ 2 }}}")
+t.expect_output_lines("stdout")
+t.expect_output_lines("stderr")
 t.expect_nothing_more()
 
 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_output_lines("{{{ 3 }}}")
+t.expect_output_lines("stdout")
+t.expect_output_lines("stderr*", False)
 t.expect_nothing_more()
 
 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_output_lines("{{{ 4 }}}")
+t.expect_output_lines("stdout*", False)
+t.expect_output_lines("stderr*", False)
 t.expect_nothing_more()
 
 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)
+t.expect_output_lines("{{{ 5 }}}")
+t.expect_output_lines("stdout")
+t.expect_output_lines("stderr", False)
 t.expect_nothing_more()
 
 t.cleanup()

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -19,7 +19,7 @@
     code.append(";")
     t.write("file.jam", " ".join(code))
     t.run_build_system(["-ffile.jam"], status=status)
- t.expect_output_line(output);
+ t.expect_output_lines(output);
 
 
 def test_args(t, *args, **kwargs):

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -17,7 +17,7 @@
 """)
 
 t.run_build_system()
-t.expect_output_line("file: on1 on2 .txt");
+t.expect_output_lines("file: on1 on2 .txt");
 t.expect_addition("on1 on2 .txt")
 t.expect_content("on1 on2 .txt", " test -DM1 -DM2", True)
 
@@ -31,7 +31,7 @@
 """)
 
 t.run_build_system(["-d2"])
-t.expect_output_line(' echo file: "on1 on2 .txt" ');
+t.expect_output_lines(' echo file: "on1 on2 .txt" ');
 t.expect_addition("on1 on2 .txt")
 t.expect_content("on1 on2 .txt", " test -DM1 -DM2", True)
 
@@ -46,7 +46,7 @@
 """)
 
 t.run_build_system(["-d1"])
-t.expect_output_line(" test -DM1 -DM2")
+t.expect_output_lines(" test -DM1 -DM2")
 
 t.rm(".")
 
@@ -58,6 +58,6 @@
 """)
 
 t.run_build_system(["-d1"])
-t.expect_output_line(" test -DM1 -DM2")
+t.expect_output_lines(" test -DM1 -DM2")
 
 t.cleanup()

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -22,11 +22,11 @@
 t.run_build_system(["-d0"], stdout="")
 
 t.run_build_system(["-d1"])
-t.expect_output_line("a all")
-t.expect_output_line("b all", False)
+t.expect_output_lines("a all")
+t.expect_output_lines("b all", False)
 
 t.run_build_system(["-d2"])
-t.expect_output_line("a all")
-t.expect_output_line("b all")
+t.expect_output_lines("a all")
+t.expect_output_lines("b all")
 
 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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -57,8 +57,8 @@
 do_empty all ;
 """ % (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)
+ t.expect_output_lines("do_empty all")
+ t.expect_output_lines("Executing raw command directly", False)
     if "\r\n%s\r\n" % whitespace_out not in t.stdout():
         BoostBuild.annotation("failure", "Whitespace action content not found "
             "on stdout.")
@@ -112,12 +112,13 @@
         expected_status = 0
     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)
- t.expect_output_line("XXX: *", False)
+ t.expect_output_lines("Executing raw command directly", False)
+ t.expect_output_lines("do_echo action is too long (%d, max 32766):" % n
+ )
+ t.expect_output_lines("XXX: *", False)
     else:
- t.expect_output_line("Executing raw command directly")
- t.expect_output_line("do_echo action is too long*", False)
+ t.expect_output_lines("Executing raw command directly")
+ t.expect_output_lines("do_echo action is too long*", False)
 
         m = re.search("^XXX: (.*)$", t.stdout(), re.MULTILINE)
         if not m:
@@ -152,11 +153,11 @@
 do_multiline all ;
 """)
     t.run_build_system(["-ffile_multiline.jam"])
- t.expect_output_line("do_multiline all")
- t.expect_output_line("one")
- t.expect_output_line("two")
- t.expect_output_line("Executing raw command directly", False)
- t.expect_output_line("Executing using a command file and the shell: "
+ t.expect_output_lines("do_multiline all")
+ t.expect_output_lines("one")
+ t.expect_output_lines("two")
+ t.expect_output_lines("Executing raw command directly", False)
+ t.expect_output_lines("Executing using a command file and the shell: "
         "cmd.exe /Q/C")
 
     t.write("file_redirect.jam", """\
@@ -165,10 +166,10 @@
 do_redirect all ;
 """)
     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)
- t.expect_output_line("Executing using a command file and the shell: "
+ t.expect_output_lines("do_redirect all")
+ t.expect_output_lines("one", False)
+ t.expect_output_lines("Executing raw command directly", False)
+ t.expect_output_lines("Executing using a command file and the shell: "
         "cmd.exe /Q/C")
     t.expect_addition("two.txt")
 
@@ -181,11 +182,11 @@
 do_pipe all ;
 """)
     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")
- t.expect_output_line("Executing raw command directly", False)
- t.expect_output_line("Executing using a command file and the shell: "
+ t.expect_output_lines("do_pipe all")
+ t.expect_output_lines("one*", False)
+ t.expect_output_lines("two")
+ t.expect_output_lines("Executing raw command directly", False)
+ t.expect_output_lines("Executing using a command file and the shell: "
         "cmd.exe /Q/C")
 
     t.write("file_single_quoted.jam", """\
@@ -194,10 +195,10 @@
 do_single_quoted all ;
 """ % (cmd_prefix, cmd_suffix))
     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")
- t.expect_output_line("Executing using a command file and the shell: "
+ t.expect_output_lines("do_single_quoted all")
+ t.expect_output_lines("5>10")
+ t.expect_output_lines("Executing raw command directly")
+ t.expect_output_lines("Executing using a command file and the shell: "
         "cmd.exe /Q/C", False)
     t.expect_nothing_more()
 
@@ -207,13 +208,13 @@
 do_double_quoted all ;
 """ % (cmd_prefix, cmd_suffix))
     t.run_build_system(["-ffile_double_quoted.jam"])
- t.expect_output_line("do_double_quoted all")
+ t.expect_output_lines("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
     # parses the command-line string received from Windows.
- t.expect_output_line("False")
- t.expect_output_line("Executing raw command directly")
- t.expect_output_line("Executing using a command file and the shell: "
+ t.expect_output_lines("False")
+ t.expect_output_lines("Executing raw command directly")
+ t.expect_output_lines("Executing using a command file and the shell: "
         "cmd.exe /Q/C", False)
     t.expect_nothing_more()
 
@@ -223,10 +224,10 @@
 do_escaped_quote all ;
 """ % (cmd_prefix, cmd_suffix))
     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)
- t.expect_output_line("Executing using a command file and the shell: "
+ t.expect_output_lines("do_escaped_quote all")
+ t.expect_output_lines("5>10")
+ t.expect_output_lines("Executing raw command directly", False)
+ t.expect_output_lines("Executing using a command file and the shell: "
         "cmd.exe /Q/C")
     t.expect_nothing_more()
 

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -39,6 +39,6 @@
 """)
 
 t.run_build_system(["-ffile.jam", "-d1", "-l2"], status=1)
-t.expect_output_line("2 second time limit exceeded")
+t.expect_output_lines("2 second time limit exceeded")
 
 t.cleanup()

Modified: trunk/tools/build/v2/test/core_source_line_tracking.py
==============================================================================
--- trunk/tools/build/v2/test/core_source_line_tracking.py (original)
+++ trunk/tools/build/v2/test/core_source_line_tracking.py 2012-07-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -14,8 +14,8 @@
     t = BoostBuild.Tester(pass_toolset=False)
     t.write("file.jam", '\n\n\naaa = "\n\n\n\n\n\n')
     t.run_build_system(["-ffile.jam"], status=1)
- t.expect_output_line('file.jam:4: unmatched " in string at keyword =')
- t.expect_output_line("file.jam:4: syntax error at EOF")
+ t.expect_output_lines('file.jam:4: unmatched " in string at keyword =')
+ t.expect_output_lines("file.jam:4: syntax error at EOF")
     t.cleanup()
 
 
@@ -31,8 +31,8 @@
 rule f ( param ) { }
 f ;%s""" % __trailing_newline(eof))
     t.run_build_system(["-ffile.jam"], status=1)
- t.expect_output_line("file.jam:2: in module scope")
- t.expect_output_line("file.jam:1:see definition of rule 'f' being called")
+ t.expect_output_lines("file.jam:2: in module scope")
+ t.expect_output_lines("file.jam:1:see definition of rule 'f' being called")
     t.cleanup()
 
 
@@ -40,7 +40,7 @@
     t = BoostBuild.Tester(pass_toolset=False)
     t.write("file.jam", "ECHO%s" % __trailing_newline(eof))
     t.run_build_system(["-ffile.jam"], status=1)
- t.expect_output_line("file.jam:1: syntax error at EOF")
+ t.expect_output_lines("file.jam:1: syntax error at EOF")
     t.cleanup()
 
 
@@ -50,7 +50,7 @@
 NOTFILE all ;
 ECHO [ BACKTRACE ] ;""")
     t.run_build_system(["-ffile.jam"])
- t.expect_output_line("file.jam 2 module scope")
+ t.expect_output_lines("file.jam 2 module scope")
     t.cleanup()
 
 

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -34,6 +34,6 @@
 dummy all ;
 """)
 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.expect_output_lines("From rule: 1 seconds 2 seconds 3 seconds")
+t.expect_output_lines('*From action: 1" 2" 3" seconds"*')
 t.cleanup()

Modified: trunk/tools/build/v2/test/default_toolset.py
==============================================================================
--- trunk/tools/build/v2/test/default_toolset.py (original)
+++ trunk/tools/build/v2/test/default_toolset.py 2012-07-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -94,13 +94,13 @@
     'toolset_version_unused': toolset_version_unused})
 
     t.run_build_system()
- t.expect_output_line(configuring_default_toolset_message % toolset_name)
- t.expect_output_line(message_loaded)
- t.expect_output_line(message_initialized)
- t.expect_output_line("descriptions: /stand-alone/ /toolset/ "
+ t.expect_output_lines(configuring_default_toolset_message % toolset_name)
+ t.expect_output_lines(message_loaded)
+ t.expect_output_lines(message_initialized)
+ t.expect_output_lines("descriptions: /stand-alone/ /toolset/ "
         "/toolset-version/")
- t.expect_output_line("toolset: /%s/" % toolset_name)
- t.expect_output_line("toolset-version: /%s/" % toolset_version)
+ t.expect_output_lines("toolset: /%s/" % toolset_name)
+ t.expect_output_lines("toolset-version: /%s/" % toolset_version)
 
     t.cleanup()
 
@@ -129,7 +129,7 @@
     # load missing toolsets might cause random failures with which we are not
     # concerned in this test.
     t.run_build_system(stderr=None)
- t.expect_output_line(configuring_default_toolset_message %
+ t.expect_output_lines(configuring_default_toolset_message %
         expected_toolset)
 
     t.cleanup()
@@ -192,10 +192,10 @@
 """ % {'toolset_name': toolset_name})
 
     t.run_build_system()
- t.expect_output_line(configuring_default_toolset_message % toolset_name)
- t.expect_output_line("descriptions: /conditioned-requirement/ "
+ t.expect_output_lines(configuring_default_toolset_message % toolset_name)
+ t.expect_output_lines("descriptions: /conditioned-requirement/ "
         "/target-requirement/ /toolset-requirement/")
- t.expect_output_line("toolset: /%s/" % toolset_name)
+ t.expect_output_lines("toolset: /%s/" % toolset_name)
 
     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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -141,7 +141,7 @@
 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);
+t.expect_content_lines("bin/$toolset/debug/mp.pathlist", "*" + es1);
+t.expect_content_lines("bin/$toolset/debug/mp.pathlist", "*" + es2);
 
 t.cleanup()

Modified: trunk/tools/build/v2/test/double_loading.py
==============================================================================
--- trunk/tools/build/v2/test/double_loading.py (original)
+++ trunk/tools/build/v2/test/double_loading.py 2012-07-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -15,7 +15,7 @@
 t.write("subdir/jamfile.jam", 'ECHO "Loaded subdir" ;')
 
 t.run_build_system(subdir="subdir")
-t.expect_output_line("Loaded subdir")
+t.expect_output_lines("Loaded subdir")
 
 
 # Regression test for a more contrived case. The top-level Jamfile refers to

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -15,7 +15,7 @@
 t.write("hello.cpp", "int main() {}\n")
 
 t.run_build_system(["runtime-link=static"])
-t.expect_output_line("warning: On gcc, DLLs can not be built with "
+t.expect_output_lines("warning: On gcc, DLLs can not be built with "
     "'<runtime-link>static'.")
 t.expect_nothing_more()
 

Modified: trunk/tools/build/v2/test/generator_selection.py
==============================================================================
--- trunk/tools/build/v2/test/generator_selection.py (original)
+++ trunk/tools/build/v2/test/generator_selection.py 2012-07-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -86,7 +86,7 @@
 """)
 
     t.run_build_system()
- t.expect_output_line("Generating a CPP file...")
+ t.expect_output_lines("Generating a CPP file...")
     t.expect_addition("bin/$toolset/debug/dummy.my_obj")
     t.expect_addition("Other/bin/$toolset/debug/other-obj.cpp")
     t.expect_addition("Other/bin/$toolset/debug/other-obj.my_obj")

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -226,9 +226,9 @@
     t.expect_nothing_more()
 
     folder = "bin/$toolset/debug"
- t.expect_content_line("%s/obj_1.my_obj" % folder, " Sources: 'z.cpp'")
- t.expect_content_line("%s/obj_2.my_obj" % folder, " Sources: 'z.cpp'")
- t.expect_content_line("%s/a.my_obj" % folder, " Sources: 'a.cpp'")
+ t.expect_content_lines("%s/obj_1.my_obj" % folder, " Sources: 'z.cpp'")
+ t.expect_content_lines("%s/obj_2.my_obj" % folder, " Sources: 'z.cpp'")
+ t.expect_content_lines("%s/a.my_obj" % folder, " Sources: 'a.cpp'")
 
     lines = t.stdout().splitlines()
     source_lines = [x for x in lines if re.match("^ Sources: '", x)]
@@ -305,8 +305,8 @@
         t.run_build_system(status=status)
 
         if status:
- t.expect_output_line("*.bbX-to-ccc: source targets have different "
- "names: cannot determine target name")
+ t.expect_output_lines("*.bbX-to-ccc: source targets have "
+ "different names: cannot determine target name")
         else:
             def suffix(rename):
                 if rename: return "_x"

Modified: trunk/tools/build/v2/test/load_order.py
==============================================================================
--- trunk/tools/build/v2/test/load_order.py (original)
+++ trunk/tools/build/v2/test/load_order.py 2012-07-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -66,6 +66,6 @@
 t.write("child/child2/jamfile.jam", "parent-rule ;")
 
 t.run_build_system(subdir="child/child1")
-t.expect_output_line("Running parent-rule")
+t.expect_output_lines("Running parent-rule")
 
 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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -31,6 +31,6 @@
 
 name = t.adjust_names("bin/$toolset/debug/hello.exe")[0]
 name = apply(os.path.join, name.split("/"));
-t.expect_output_line(" valgrind *%s " % name)
+t.expect_output_lines(" valgrind *%s " % name)
 
 t.cleanup()

Modified: trunk/tools/build/v2/test/project_glob.py
==============================================================================
--- trunk/tools/build/v2/test/project_glob.py (original)
+++ trunk/tools/build/v2/test/project_glob.py 2012-07-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -87,7 +87,7 @@
 """)
 
 t.run_build_system(subdir="d1", status=1)
-t.expect_output_line("error: The patterns * may not include directory")
+t.expect_output_lines("error: The patterns * may not include directory")
 
 
 # Test that 'glob' works with absolute names.

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -39,9 +39,9 @@
 """)
 
     t.run_build_system()
- t.expect_output_line("starting up")
- t.expect_output_line("done")
- t.expect_output_line("SORT error", False)
+ t.expect_output_lines("starting up")
+ t.expect_output_lines("done")
+ t.expect_output_lines("SORT error", False)
 
     t.cleanup()
 
@@ -79,8 +79,8 @@
     f.close()
 
     t.run_build_system(expected_duration=1)
- t.expect_output_line("starting up")
- t.expect_output_line("done")
+ t.expect_output_lines("starting up")
+ t.expect_output_lines("done")
 
     t.cleanup()
 

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -35,7 +35,7 @@
 
     t.run_build_system(subdir="version-1.32.0")
     t.expect_addition("version-1.32.0/bin/$toolset/debug/a.exe")
- t.expect_output_line("The tag rule has been invoked.")
+ t.expect_output_lines("The tag rule has been invoked.")
 
 
 ###############################################################################

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -87,9 +87,9 @@
             params.append("-n")
             params.append("-sNOEXEC=NOEXEC")
         t.run_build_system(params)
- t.expect_output_line("*NOEXEC*", noexec)
+ t.expect_output_lines("*NOEXEC*", noexec)
         obj_file = "xxx_res.obj"
- t.expect_output_line("compile.resource.dummy *%s" % obj_file, expect)
+ t.expect_output_lines("compile.resource.dummy *%s" % obj_file, expect)
         if expect and not noexec:
             expect("bin/%s/debug/%s" % (toolsetName, obj_file))
         t.expect_nothing_more()

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -27,7 +27,7 @@
 t.write("TestSource/test.cpp", "int main() {}\n")
 
 t.run_build_system(subdir="TestBuild")
-t.expect_output_line('boost-test(RUN) "*/TestBuild/test" : '
+t.expect_output_lines('boost-test(RUN) "*/TestBuild/test" : '
     '"../TestSource/test.cpp"')
 
 t.cleanup()

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-23 14:10:36 EDT (Mon, 23 Jul 2012)
@@ -121,9 +121,9 @@
     t.expect_addition("bin/$toolset/debug/my-exe.exe")
     t.expect_addition("bin/$toolset/debug/my-time.time")
 
- t.expect_content_line("bin/$toolset/debug/my-time.time",
+ t.expect_content_lines("bin/$toolset/debug/my-time.time",
         "user: *[0-9] seconds")
- t.expect_content_line("bin/$toolset/debug/my-time.time",
+ t.expect_content_lines("bin/$toolset/debug/my-time.time",
         "system: *[0-9] seconds")
 
     t.cleanup()
@@ -157,8 +157,8 @@
     t.expect_addition("bin/$toolset/debug/my exe.exe")
     t.expect_addition("bin/$toolset/debug/my time.time")
 
- t.expect_content_line("bin/$toolset/debug/my time.time", "user: *")
- t.expect_content_line("bin/$toolset/debug/my time.time", "system: *")
+ t.expect_content_lines("bin/$toolset/debug/my time.time", "user: *")
+ t.expect_content_lines("bin/$toolset/debug/my time.time", "system: *")
 
     t.cleanup()
 


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