Blame view

3rdparty/boost_1_81_0/tools/build/test/clean.py 3.03 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  #!/usr/bin/python
  
  #  Copyright (C) Vladimir Prus 2006.
  #  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
  
  t = BoostBuild.Tester(use_test_config=False)
  
  t.write("a.cpp", "int main() {}\n")
  t.write("jamroot.jam", "exe a : a.cpp sub1//sub1 sub2//sub2 sub3//sub3 ;")
  t.write("sub1/jamfile.jam", """\
  lib sub1 : sub1.cpp sub1_2 ../sub2//sub2 ;
  lib sub1_2 : sub1_2.cpp ;
  """)
  
  t.write("sub1/sub1.cpp", """\
  #ifdef _WIN32
  __declspec(dllexport)
  #endif
  void sub1() {}
  """)
  
  t.write("sub1/sub1_2.cpp", """\
  #ifdef _WIN32
  __declspec(dllexport)
  #endif
  void sub1() {}
  """)
  
  t.write("sub2/jamfile.jam", "lib sub2 : sub2.cpp ;")
  t.write("sub2/sub2.cpp", """\
  #ifdef _WIN32
  __declspec(dllexport)
  #endif
  void sub2() {}
  """)
  
  t.write("sub3/jamroot.jam", "lib sub3 : sub3.cpp ;")
  t.write("sub3/sub3.cpp", """\
  #ifdef _WIN32
  __declspec(dllexport)
  #endif
  void sub3() {}
  """)
  
  # 'clean' should not remove files under separate jamroot.jam.
  t.run_build_system()
  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")
  t.expect_removal("sub2/bin/$toolset/debug*/sub2.obj")
  t.expect_nothing("sub3/bin/$toolset/debug*/sub3.obj")
  
  # 'clean-all' removes everything it can reach.
  t.run_build_system()
  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")
  t.expect_removal("sub2/bin/$toolset/debug*/sub2.obj")
  t.expect_nothing("sub3/bin/$toolset/debug*/sub3.obj")
  
  # 'clean' together with project target removes only under that project.
  t.run_build_system()
  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")
  t.expect_nothing("sub2/bin/$toolset/debug*/sub2.obj")
  t.expect_nothing("sub3/bin/$toolset/debug*/sub3.obj")
  
  # 'clean-all' removes everything.
  t.run_build_system()
  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")
  t.expect_removal("sub2/bin/$toolset/debug*/sub2.obj")
  t.expect_nothing("sub3/bin/$toolset/debug*/sub3.obj")
  
  # 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.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")
  t.expect_nothing("sub3/bin/$toolset/debug*/sub3.obj")
  
  # Regression test: sources of the 'cast' rule were mistakenly deleted.
  t.rm(".")
  t.write("jamroot.jam", """\
  import cast ;
  cast a cpp : a.h ;
  """)
  t.write("a.h", "")
  t.run_build_system(["--clean"])
  t.expect_nothing("a.h")
  
  t.cleanup()