diff --git a/test/BoostBuild.py b/test/BoostBuild.py index ff1c22cee..b2ea32985 100644 --- a/test/BoostBuild.py +++ b/test/BoostBuild.py @@ -42,6 +42,7 @@ class Tester(TestCmd.TestCmd): TestCmd.match_exact, boost_build_path = None): self.original_workdir = os.getcwd() + self.last_build_time = 0 jam_build_dir = "" if os.name == 'nt': @@ -53,7 +54,7 @@ class Tester(TestCmd.TestCmd): if boost_build_path is None: boost_build_path = os.path.join(self.original_workdir, "..", "new") - + TestCmd.TestCmd.__init__( self , program=os.path.join( @@ -91,6 +92,7 @@ class Tester(TestCmd.TestCmd): def write(self, file, content): + self.wait_for_time_change() try: os.makedirs(os.path.dirname(file)) except: @@ -98,9 +100,11 @@ class Tester(TestCmd.TestCmd): open(self.native_file_name(file), "wb").write(content) def copy(self, src, dst): + self.wait_for_time_change() self.write(dst, self.read(src)) def touch(self, names): + self.wait_for_time_change() if not type(names) == types.ListType: names = [names] for name in names: @@ -113,7 +117,7 @@ class Tester(TestCmd.TestCmd): def run_build_system( self, extra_args='', subdir='', stdout = None, stderr = '', status = 0, match = None, **kw): - + self.previous_tree = build_tree(self.workdir) if match is None: @@ -143,7 +147,7 @@ class Tester(TestCmd.TestCmd): print "STDERR ============" print self.stderr() self.fail_test(1) - + if not stdout is None and not match(self.stdout(), stdout): print "Expected STDOUT ==========" print stdout @@ -154,7 +158,7 @@ class Tester(TestCmd.TestCmd): print "STDERR ===================" print stderr self.fail_test(1) - + if not stderr is None and not match(self.stderr(), stderr): print "STDOUT ===================" print self.stdout() @@ -167,10 +171,8 @@ class Tester(TestCmd.TestCmd): self.tree = build_tree(self.workdir) self.difference = trees_difference(self.previous_tree, self.tree) self.unexpected_difference = copy.deepcopy(self.difference) - # We want to assure that modifications to the working dir will be - # detected by jam, so we wait till current time becomes more that - # the time when the last target was built. - time.sleep(1.1) + + self.last_build_time = time.time def read(self, name): return open(self.native_file_name(name), "rb").read() @@ -294,6 +296,13 @@ class Tester(TestCmd.TestCmd): elements = string.split(name, "/") return apply(os.path.join, [self.workdir]+elements) + # Wait while time is no longer equal to the time last "run_build_system" + # call finished. + def wait_for_time_change(self): + while int(time.time()) == self.last_build_time: + os.sleep(0.1) + + class List: def __init__(self, s=""): diff --git a/v2/test/BoostBuild.py b/v2/test/BoostBuild.py index ff1c22cee..b2ea32985 100644 --- a/v2/test/BoostBuild.py +++ b/v2/test/BoostBuild.py @@ -42,6 +42,7 @@ class Tester(TestCmd.TestCmd): TestCmd.match_exact, boost_build_path = None): self.original_workdir = os.getcwd() + self.last_build_time = 0 jam_build_dir = "" if os.name == 'nt': @@ -53,7 +54,7 @@ class Tester(TestCmd.TestCmd): if boost_build_path is None: boost_build_path = os.path.join(self.original_workdir, "..", "new") - + TestCmd.TestCmd.__init__( self , program=os.path.join( @@ -91,6 +92,7 @@ class Tester(TestCmd.TestCmd): def write(self, file, content): + self.wait_for_time_change() try: os.makedirs(os.path.dirname(file)) except: @@ -98,9 +100,11 @@ class Tester(TestCmd.TestCmd): open(self.native_file_name(file), "wb").write(content) def copy(self, src, dst): + self.wait_for_time_change() self.write(dst, self.read(src)) def touch(self, names): + self.wait_for_time_change() if not type(names) == types.ListType: names = [names] for name in names: @@ -113,7 +117,7 @@ class Tester(TestCmd.TestCmd): def run_build_system( self, extra_args='', subdir='', stdout = None, stderr = '', status = 0, match = None, **kw): - + self.previous_tree = build_tree(self.workdir) if match is None: @@ -143,7 +147,7 @@ class Tester(TestCmd.TestCmd): print "STDERR ============" print self.stderr() self.fail_test(1) - + if not stdout is None and not match(self.stdout(), stdout): print "Expected STDOUT ==========" print stdout @@ -154,7 +158,7 @@ class Tester(TestCmd.TestCmd): print "STDERR ===================" print stderr self.fail_test(1) - + if not stderr is None and not match(self.stderr(), stderr): print "STDOUT ===================" print self.stdout() @@ -167,10 +171,8 @@ class Tester(TestCmd.TestCmd): self.tree = build_tree(self.workdir) self.difference = trees_difference(self.previous_tree, self.tree) self.unexpected_difference = copy.deepcopy(self.difference) - # We want to assure that modifications to the working dir will be - # detected by jam, so we wait till current time becomes more that - # the time when the last target was built. - time.sleep(1.1) + + self.last_build_time = time.time def read(self, name): return open(self.native_file_name(name), "rb").read() @@ -294,6 +296,13 @@ class Tester(TestCmd.TestCmd): elements = string.split(name, "/") return apply(os.path.join, [self.workdir]+elements) + # Wait while time is no longer equal to the time last "run_build_system" + # call finished. + def wait_for_time_change(self): + while int(time.time()) == self.last_build_time: + os.sleep(0.1) + + class List: def __init__(self, s=""):