Expanded SCons.Scanner.LaTeX.comment_re to not break on \%
[scons.git] / test / option / taskmastertrace.py
1 #!/usr/bin/env python
2 #
3 # __COPYRIGHT__
4 #
5 # Permission is hereby granted, free of charge, to any person obtaining
6 # a copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish,
9 # distribute, sublicense, and/or sell copies of the Software, and to
10 # permit persons to whom the Software is furnished to do so, subject to
11 # the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
17 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 #
24
25 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
26
27 """
28 Simple tests of the --taskmastertrace= option.
29 """
30
31 import TestSCons
32
33 test = TestSCons.TestSCons()
34
35 test.write('SConstruct', """
36 env = Environment()
37
38 # We name the files 'Tfile' so that they will sort after the SConstruct
39 # file regardless of whether the test is being run on a case-sensitive
40 # or case-insensitive system.
41
42 env.Command('Tfile.out', 'Tfile.mid', Copy('$TARGET', '$SOURCE'))
43 env.Command('Tfile.mid', 'Tfile.in', Copy('$TARGET', '$SOURCE'))
44 """)
45
46 test.write('Tfile.in', "Tfile.in\n")
47
48 expect_stdout = test.wrap_stdout("""\
49
50 Taskmaster: Looking for a node to evaluate
51 Taskmaster:     Considering node <no_state   0   '.'> and its children:
52 Taskmaster:        <no_state   0   'SConstruct'>
53 Taskmaster:        <no_state   0   'Tfile.in'>
54 Taskmaster:        <no_state   0   'Tfile.mid'>
55 Taskmaster:        <no_state   0   'Tfile.out'>
56 Taskmaster:      adjusted ref count: <pending    1   '.'>, child 'SConstruct'
57 Taskmaster:      adjusted ref count: <pending    2   '.'>, child 'Tfile.in'
58 Taskmaster:      adjusted ref count: <pending    3   '.'>, child 'Tfile.mid'
59 Taskmaster:      adjusted ref count: <pending    4   '.'>, child 'Tfile.out'
60 Taskmaster:     Considering node <no_state   0   'SConstruct'> and its children:
61 Taskmaster: Evaluating <pending    0   'SConstruct'>
62
63 Task.make_ready_current(): node <pending    0   'SConstruct'>
64 Task.prepare():      node <up_to_date 0   'SConstruct'>
65 Task.executed_with_callbacks(): node <up_to_date 0   'SConstruct'>
66 Task.postprocess():  node <up_to_date 0   'SConstruct'>
67 Task.postprocess():  removing <up_to_date 0   'SConstruct'>
68 Task.postprocess():  adjusted parent ref count <pending    3   '.'>
69
70 Taskmaster: Looking for a node to evaluate
71 Taskmaster:     Considering node <no_state   0   'Tfile.in'> and its children:
72 Taskmaster: Evaluating <pending    0   'Tfile.in'>
73
74 Task.make_ready_current(): node <pending    0   'Tfile.in'>
75 Task.prepare():      node <up_to_date 0   'Tfile.in'>
76 Task.executed_with_callbacks(): node <up_to_date 0   'Tfile.in'>
77 Task.postprocess():  node <up_to_date 0   'Tfile.in'>
78 Task.postprocess():  removing <up_to_date 0   'Tfile.in'>
79 Task.postprocess():  adjusted parent ref count <pending    2   '.'>
80
81 Taskmaster: Looking for a node to evaluate
82 Taskmaster:     Considering node <no_state   0   'Tfile.mid'> and its children:
83 Taskmaster:        <up_to_date 0   'Tfile.in'>
84 Taskmaster: Evaluating <pending    0   'Tfile.mid'>
85
86 Task.make_ready_current(): node <pending    0   'Tfile.mid'>
87 Task.prepare():      node <executing  0   'Tfile.mid'>
88 Task.execute():      node <executing  0   'Tfile.mid'>
89 Copy("Tfile.mid", "Tfile.in")
90 Task.executed_with_callbacks(): node <executing  0   'Tfile.mid'>
91 Task.postprocess():  node <executed   0   'Tfile.mid'>
92 Task.postprocess():  removing <executed   0   'Tfile.mid'>
93 Task.postprocess():  adjusted parent ref count <pending    1   '.'>
94
95 Taskmaster: Looking for a node to evaluate
96 Taskmaster:     Considering node <no_state   0   'Tfile.out'> and its children:
97 Taskmaster:        <executed   0   'Tfile.mid'>
98 Taskmaster: Evaluating <pending    0   'Tfile.out'>
99
100 Task.make_ready_current(): node <pending    0   'Tfile.out'>
101 Task.prepare():      node <executing  0   'Tfile.out'>
102 Task.execute():      node <executing  0   'Tfile.out'>
103 Copy("Tfile.out", "Tfile.mid")
104 Task.executed_with_callbacks(): node <executing  0   'Tfile.out'>
105 Task.postprocess():  node <executed   0   'Tfile.out'>
106 Task.postprocess():  removing <executed   0   'Tfile.out'>
107 Task.postprocess():  adjusted parent ref count <pending    0   '.'>
108
109 Taskmaster: Looking for a node to evaluate
110 Taskmaster:     Considering node <pending    0   '.'> and its children:
111 Taskmaster:        <up_to_date 0   'SConstruct'>
112 Taskmaster:        <up_to_date 0   'Tfile.in'>
113 Taskmaster:        <executed   0   'Tfile.mid'>
114 Taskmaster:        <executed   0   'Tfile.out'>
115 Taskmaster: Evaluating <pending    0   '.'>
116
117 Task.make_ready_current(): node <pending    0   '.'>
118 Task.prepare():      node <executing  0   '.'>
119 Task.execute():      node <executing  0   '.'>
120 Task.executed_with_callbacks(): node <executing  0   '.'>
121 Task.postprocess():  node <executed   0   '.'>
122
123 Taskmaster: Looking for a node to evaluate
124 Taskmaster: No candidate anymore.
125
126 """)
127
128 test.run(arguments='--taskmastertrace=- .', stdout=expect_stdout)
129
130
131
132 test.run(arguments='-c .')
133
134
135
136 expect_stdout = test.wrap_stdout("""\
137 Copy("Tfile.mid", "Tfile.in")
138 Copy("Tfile.out", "Tfile.mid")
139 """)
140
141 test.run(arguments='--taskmastertrace=trace.out .', stdout=expect_stdout)
142
143 expect_trace = """\
144
145 Taskmaster: Looking for a node to evaluate
146 Taskmaster:     Considering node <no_state   0   '.'> and its children:
147 Taskmaster:        <no_state   0   'SConstruct'>
148 Taskmaster:        <no_state   0   'Tfile.in'>
149 Taskmaster:        <no_state   0   'Tfile.mid'>
150 Taskmaster:        <no_state   0   'Tfile.out'>
151 Taskmaster:      adjusted ref count: <pending    1   '.'>, child 'SConstruct'
152 Taskmaster:      adjusted ref count: <pending    2   '.'>, child 'Tfile.in'
153 Taskmaster:      adjusted ref count: <pending    3   '.'>, child 'Tfile.mid'
154 Taskmaster:      adjusted ref count: <pending    4   '.'>, child 'Tfile.out'
155 Taskmaster:     Considering node <no_state   0   'SConstruct'> and its children:
156 Taskmaster: Evaluating <pending    0   'SConstruct'>
157
158 Task.make_ready_current(): node <pending    0   'SConstruct'>
159 Task.prepare():      node <up_to_date 0   'SConstruct'>
160 Task.executed_with_callbacks(): node <up_to_date 0   'SConstruct'>
161 Task.postprocess():  node <up_to_date 0   'SConstruct'>
162 Task.postprocess():  removing <up_to_date 0   'SConstruct'>
163 Task.postprocess():  adjusted parent ref count <pending    3   '.'>
164
165 Taskmaster: Looking for a node to evaluate
166 Taskmaster:     Considering node <no_state   0   'Tfile.in'> and its children:
167 Taskmaster: Evaluating <pending    0   'Tfile.in'>
168
169 Task.make_ready_current(): node <pending    0   'Tfile.in'>
170 Task.prepare():      node <up_to_date 0   'Tfile.in'>
171 Task.executed_with_callbacks(): node <up_to_date 0   'Tfile.in'>
172 Task.postprocess():  node <up_to_date 0   'Tfile.in'>
173 Task.postprocess():  removing <up_to_date 0   'Tfile.in'>
174 Task.postprocess():  adjusted parent ref count <pending    2   '.'>
175
176 Taskmaster: Looking for a node to evaluate
177 Taskmaster:     Considering node <no_state   0   'Tfile.mid'> and its children:
178 Taskmaster:        <up_to_date 0   'Tfile.in'>
179 Taskmaster: Evaluating <pending    0   'Tfile.mid'>
180
181 Task.make_ready_current(): node <pending    0   'Tfile.mid'>
182 Task.prepare():      node <executing  0   'Tfile.mid'>
183 Task.execute():      node <executing  0   'Tfile.mid'>
184 Task.executed_with_callbacks(): node <executing  0   'Tfile.mid'>
185 Task.postprocess():  node <executed   0   'Tfile.mid'>
186 Task.postprocess():  removing <executed   0   'Tfile.mid'>
187 Task.postprocess():  adjusted parent ref count <pending    1   '.'>
188
189 Taskmaster: Looking for a node to evaluate
190 Taskmaster:     Considering node <no_state   0   'Tfile.out'> and its children:
191 Taskmaster:        <executed   0   'Tfile.mid'>
192 Taskmaster: Evaluating <pending    0   'Tfile.out'>
193
194 Task.make_ready_current(): node <pending    0   'Tfile.out'>
195 Task.prepare():      node <executing  0   'Tfile.out'>
196 Task.execute():      node <executing  0   'Tfile.out'>
197 Task.executed_with_callbacks(): node <executing  0   'Tfile.out'>
198 Task.postprocess():  node <executed   0   'Tfile.out'>
199 Task.postprocess():  removing <executed   0   'Tfile.out'>
200 Task.postprocess():  adjusted parent ref count <pending    0   '.'>
201
202 Taskmaster: Looking for a node to evaluate
203 Taskmaster:     Considering node <pending    0   '.'> and its children:
204 Taskmaster:        <up_to_date 0   'SConstruct'>
205 Taskmaster:        <up_to_date 0   'Tfile.in'>
206 Taskmaster:        <executed   0   'Tfile.mid'>
207 Taskmaster:        <executed   0   'Tfile.out'>
208 Taskmaster: Evaluating <pending    0   '.'>
209
210 Task.make_ready_current(): node <pending    0   '.'>
211 Task.prepare():      node <executing  0   '.'>
212 Task.execute():      node <executing  0   '.'>
213 Task.executed_with_callbacks(): node <executing  0   '.'>
214 Task.postprocess():  node <executed   0   '.'>
215
216 Taskmaster: Looking for a node to evaluate
217 Taskmaster: No candidate anymore.
218
219 """
220
221 test.must_match('trace.out', expect_trace)
222
223 test.pass_test()
224
225 # Local Variables:
226 # tab-width:4
227 # indent-tabs-mode:nil
228 # End:
229 # vim: set expandtab tabstop=4 shiftwidth=4: