Blame view

3rdparty/boost_1_81_0/tools/build/test/rebuilds.py 1.49 KB
73ef4ff3   Hu Chunming   提交三方库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  #!/usr/bin/python
  
  # Copyright 2005 Dave Abrahams
  # Distributed under the Boost Software License, Version 1.0.
  # (See accompanying file LICENSE.txt or copy at
  # https://www.bfgroup.xyz/b2/LICENSE.txt)
  
  import BoostBuild
  
  
  def wait_for_bar(t):
      """
        Wait to make the test system correctly recognize the 'bar' file as
      touched after the next build run. Without the wait, the next build run may
      rebuild the 'bar' file with the new and the old file modification timestamp
      too close to each other - which could, depending on the currently supported
      file modification timestamp resolution, be detected as 'no change' by the
      testing system.
  
      """
      t.wait_for_time_change("bar", touch=False)
  
  
  t = BoostBuild.Tester(["-ffile.jam", "-d+3", "-d+12", "-d+13"],
      pass_toolset=0)
  
  t.write("file.jam", """\
  rule make
  {
      DEPENDS $(<) : $(>) ;
      DEPENDS all : $(<) ;
  }
  actions make
  {
      echo "******" making $(<) from $(>) "******"
      echo made from $(>) > $(<)
  }
  
  make aux1 : bar ;
  make foo : bar ;
  REBUILDS foo : bar ;
  make bar : baz ;
  make aux2 : bar ;
  """)
  
  t.write("baz", "nothing")
  
  t.run_build_system(["bar"])
  t.expect_addition("bar")
  t.expect_nothing_more()
  
  wait_for_bar(t)
  t.run_build_system(["foo"])
  t.expect_touch("bar")
  t.expect_addition("foo")
  t.expect_nothing_more()
  
  t.run_build_system()
  t.expect_addition(["aux1", "aux2"])
  t.expect_nothing_more()
  
  t.touch("bar")
  wait_for_bar(t)
  t.run_build_system()
  t.expect_touch(["foo", "bar", "aux1", "aux2"])
  t.expect_nothing_more()
  
  t.cleanup()