OLD | NEW |
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 DEPS = [ | 5 DEPS = [ |
6 'depot_tools/bot_update', | 6 'depot_tools/bot_update', |
7 'depot_tools/gclient', | 7 'depot_tools/gclient', |
8 'depot_tools/infra_paths', | |
9 'gsutil', | 8 'gsutil', |
10 'recipe_engine/path', | 9 'recipe_engine/path', |
11 'recipe_engine/properties', | 10 'recipe_engine/properties', |
12 'recipe_engine/step', | 11 'recipe_engine/step', |
13 ] | 12 ] |
14 | 13 |
15 def win_xp_dr_nightly_steps(api): | 14 def win_xp_dr_nightly_steps(api): |
16 build_properties = api.properties.legacy() | 15 build_properties = api.properties.legacy() |
17 # checkout DynamiRIO step | 16 # checkout DynamiRIO step |
18 src_cfg = api.gclient.make_config(GIT_MODE=True) | 17 src_cfg = api.gclient.make_config(GIT_MODE=True) |
19 soln = src_cfg.solutions.add() | 18 soln = src_cfg.solutions.add() |
20 soln.name = "dynamorio" | 19 soln.name = "dynamorio" |
21 soln.url = "https://github.com/DynamoRIO/dynamorio.git" | 20 soln.url = "https://github.com/DynamoRIO/dynamorio.git" |
22 soln.custom_deps = {'dynamorio/tools/buildbot': | 21 soln.custom_deps = {'dynamorio/tools/buildbot': |
23 'https://github.com/DynamoRIO/buildbot.git'} | 22 'https://github.com/DynamoRIO/buildbot.git'} |
24 api.gclient.c = src_cfg | 23 api.gclient.c = src_cfg |
25 result = api.bot_update.ensure_checkout(force=True) | 24 result = api.bot_update.ensure_checkout(force=True) |
26 build_properties.update(result.json.output.get("properties", {})) | 25 build_properties.update(result.json.output.get("properties", {})) |
27 # unpack tools step; generic ShellCommand converted | 26 # unpack tools step; generic ShellCommand converted |
28 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', | 27 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', |
29 'bot_tools', 'unpack.bat')], env={}, | 28 'bot_tools', 'unpack.bat')], env={}, |
30 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) | 29 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) |
31 # dynamorio win nightly suite step | 30 # dynamorio win nightly suite step |
32 api.step("nightly suite", | 31 api.step("nightly suite", |
33 [api.infra_paths['build'].join("scripts", "slave", "drmemory", "build_env.
bat"), | 32 [api.path["build"].join("scripts", "slave", "drmemory", "build_env.bat"), |
34 'ctest', '--timeout', '120', '-VV', '-S', | 33 'ctest', '--timeout', '120', '-VV', '-S', |
35 'dynamorio/suite/runsuite.cmake,nightly;long;'+\ | 34 'dynamorio/suite/runsuite.cmake,nightly;long;'+\ |
36 'site=X64.WindowsXp.VS2010.BuildBot'], | 35 'site=X64.WindowsXp.VS2010.BuildBot'], |
37 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", | 36 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", |
38 "bot_tools")}, cwd=api.infra_paths['slave_build']) | 37 "bot_tools")}, cwd=api.path["slave_build"]) |
39 | 38 |
40 | 39 |
41 def linux_dr_steps(api): | 40 def linux_dr_steps(api): |
42 build_properties = api.properties.legacy() | 41 build_properties = api.properties.legacy() |
43 # checkout DynamiRIO step | 42 # checkout DynamiRIO step |
44 src_cfg = api.gclient.make_config(GIT_MODE=True) | 43 src_cfg = api.gclient.make_config(GIT_MODE=True) |
45 soln = src_cfg.solutions.add() | 44 soln = src_cfg.solutions.add() |
46 soln.name = "dynamorio" | 45 soln.name = "dynamorio" |
47 soln.url = "https://github.com/DynamoRIO/dynamorio.git" | 46 soln.url = "https://github.com/DynamoRIO/dynamorio.git" |
48 api.gclient.c = src_cfg | 47 api.gclient.c = src_cfg |
49 result = api.bot_update.ensure_checkout(force=True) | 48 result = api.bot_update.ensure_checkout(force=True) |
50 build_properties.update(result.json.output.get("properties", {})) | 49 build_properties.update(result.json.output.get("properties", {})) |
51 # pre-commit suite step | 50 # pre-commit suite step |
52 api.step("pre-commit suite", ['ctest', '--timeout', '120', '-VV', '-S', | 51 api.step("pre-commit suite", ['ctest', '--timeout', '120', '-VV', '-S', |
53 api.path["checkout"].join("suite", "runsuite.cmake")], | 52 api.path["checkout"].join("suite", "runsuite.cmake")], |
54 cwd=api.infra_paths['slave_build'], ok_ret="all") | 53 cwd=api.path["slave_build"], ok_ret="all") |
55 # upload dynamorio docs step | 54 # upload dynamorio docs step |
56 api.gsutil.upload(api.infra_paths['slave_build'].join("install", "docs", "html
"), | 55 api.gsutil.upload(api.path["slave_build"].join("install", "docs", "html"), |
57 "chromium-dynamorio", "dr_docs/", ["-r"], multithreaded=True) | 56 "chromium-dynamorio", "dr_docs/", ["-r"], multithreaded=True) |
58 | 57 |
59 | 58 |
60 def win_7_dr_steps(api): | 59 def win_7_dr_steps(api): |
61 build_properties = api.properties.legacy() | 60 build_properties = api.properties.legacy() |
62 # checkout DynamiRIO step | 61 # checkout DynamiRIO step |
63 src_cfg = api.gclient.make_config(GIT_MODE=True) | 62 src_cfg = api.gclient.make_config(GIT_MODE=True) |
64 soln = src_cfg.solutions.add() | 63 soln = src_cfg.solutions.add() |
65 soln.name = "dynamorio" | 64 soln.name = "dynamorio" |
66 soln.url = "https://github.com/DynamoRIO/dynamorio.git" | 65 soln.url = "https://github.com/DynamoRIO/dynamorio.git" |
67 soln.custom_deps = {'dynamorio/tools/buildbot': | 66 soln.custom_deps = {'dynamorio/tools/buildbot': |
68 'https://github.com/DynamoRIO/buildbot.git'} | 67 'https://github.com/DynamoRIO/buildbot.git'} |
69 api.gclient.c = src_cfg | 68 api.gclient.c = src_cfg |
70 result = api.bot_update.ensure_checkout(force=True) | 69 result = api.bot_update.ensure_checkout(force=True) |
71 build_properties.update(result.json.output.get("properties", {})) | 70 build_properties.update(result.json.output.get("properties", {})) |
72 # unpack tools step; generic ShellCommand converted | 71 # unpack tools step; generic ShellCommand converted |
73 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', | 72 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', |
74 'bot_tools', 'unpack.bat')], env={}, | 73 'bot_tools', 'unpack.bat')], env={}, |
75 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) | 74 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) |
76 # build_env step | 75 # build_env step |
77 api.step("pre-commit suite", [api.infra_paths['build'].join("scripts", "slave"
, | 76 api.step("pre-commit suite", [api.path["build"].join("scripts", "slave", |
78 "drmemory", "build_env.bat"), 'ctest', '--timeout', '120', '-VV', '-S', | 77 "drmemory", "build_env.bat"), 'ctest', '--timeout', '120', '-VV', '-S', |
79 api.path["checkout"].join("suite", "runsuite.cmake")], | 78 api.path["checkout"].join("suite", "runsuite.cmake")], |
80 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", | 79 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", |
81 "bot_tools")}, cwd=api.infra_paths['slave_build']) | 80 "bot_tools")}, cwd=api.path["slave_build"]) |
82 | 81 |
83 | 82 |
84 def linux_dr_package_steps(api): | 83 def linux_dr_package_steps(api): |
85 build_properties = api.properties.legacy() | 84 build_properties = api.properties.legacy() |
86 # checkout DynamiRIO step | 85 # checkout DynamiRIO step |
87 src_cfg = api.gclient.make_config(GIT_MODE=True) | 86 src_cfg = api.gclient.make_config(GIT_MODE=True) |
88 soln = src_cfg.solutions.add() | 87 soln = src_cfg.solutions.add() |
89 soln.name = "dynamorio" | 88 soln.name = "dynamorio" |
90 soln.url = "https://github.com/DynamoRIO/dynamorio.git" | 89 soln.url = "https://github.com/DynamoRIO/dynamorio.git" |
91 api.gclient.c = src_cfg | 90 api.gclient.c = src_cfg |
(...skipping 22 matching lines...) Expand all Loading... |
114 'https://github.com/DynamoRIO/buildbot.git'} | 113 'https://github.com/DynamoRIO/buildbot.git'} |
115 api.gclient.c = src_cfg | 114 api.gclient.c = src_cfg |
116 result = api.bot_update.ensure_checkout(force=True) | 115 result = api.bot_update.ensure_checkout(force=True) |
117 build_properties.update(result.json.output.get("properties", {})) | 116 build_properties.update(result.json.output.get("properties", {})) |
118 # unpack tools step; generic ShellCommand converted | 117 # unpack tools step; generic ShellCommand converted |
119 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', | 118 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', |
120 'bot_tools', 'unpack.bat')], env={}, | 119 'bot_tools', 'unpack.bat')], env={}, |
121 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) | 120 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) |
122 # build_env step | 121 # build_env step |
123 api.step("pre-commit suite", | 122 api.step("pre-commit suite", |
124 [api.infra_paths['build'].join("scripts", "slave", "drmemory", "build_env.
bat"), | 123 [api.path["build"].join("scripts", "slave", "drmemory", "build_env.bat"), |
125 'ctest', '--timeout', '120', '-VV', '-S', | 124 'ctest', '--timeout', '120', '-VV', '-S', |
126 api.path["checkout"].join("suite", "runsuite.cmake")], | 125 api.path["checkout"].join("suite", "runsuite.cmake")], |
127 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", | 126 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", |
128 "bot_tools")}, cwd=api.infra_paths['slave_build']) | 127 "bot_tools")}, cwd=api.path["slave_build"]) |
129 | 128 |
130 | 129 |
131 def win_xp_dr_steps(api): | 130 def win_xp_dr_steps(api): |
132 build_properties = api.properties.legacy() | 131 build_properties = api.properties.legacy() |
133 # checkout DynamiRIO step | 132 # checkout DynamiRIO step |
134 src_cfg = api.gclient.make_config(GIT_MODE=True) | 133 src_cfg = api.gclient.make_config(GIT_MODE=True) |
135 soln = src_cfg.solutions.add() | 134 soln = src_cfg.solutions.add() |
136 soln.name = "dynamorio" | 135 soln.name = "dynamorio" |
137 soln.url = "https://github.com/DynamoRIO/dynamorio.git" | 136 soln.url = "https://github.com/DynamoRIO/dynamorio.git" |
138 soln.custom_deps = {'dynamorio/tools/buildbot': | 137 soln.custom_deps = {'dynamorio/tools/buildbot': |
139 'https://github.com/DynamoRIO/buildbot.git'} | 138 'https://github.com/DynamoRIO/buildbot.git'} |
140 api.gclient.c = src_cfg | 139 api.gclient.c = src_cfg |
141 result = api.bot_update.ensure_checkout(force=True) | 140 result = api.bot_update.ensure_checkout(force=True) |
142 build_properties.update(result.json.output.get("properties", {})) | 141 build_properties.update(result.json.output.get("properties", {})) |
143 # unpack tools step; generic ShellCommand converted | 142 # unpack tools step; generic ShellCommand converted |
144 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', | 143 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', |
145 'bot_tools', 'unpack.bat')], env={}, | 144 'bot_tools', 'unpack.bat')], env={}, |
146 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) | 145 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) |
147 # build_env step | 146 # build_env step |
148 api.step("pre-commit suite", [api.infra_paths['build'].join("scripts", "slave"
, | 147 api.step("pre-commit suite", [api.path["build"].join("scripts", "slave", |
149 "drmemory", "build_env.bat"), 'ctest', '--timeout', '120', '-VV', '-S', | 148 "drmemory", "build_env.bat"), 'ctest', '--timeout', '120', '-VV', '-S', |
150 api.path["checkout"].join("suite", "runsuite.cmake")], | 149 api.path["checkout"].join("suite", "runsuite.cmake")], |
151 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", | 150 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", |
152 "bot_tools")}, cwd=api.infra_paths['slave_build']) | 151 "bot_tools")}, cwd=api.path["slave_build"]) |
153 | 152 |
154 | 153 |
155 def win_7_dr_nightly_steps(api): | 154 def win_7_dr_nightly_steps(api): |
156 build_properties = api.properties.legacy() | 155 build_properties = api.properties.legacy() |
157 # checkout DynamiRIO step | 156 # checkout DynamiRIO step |
158 src_cfg = api.gclient.make_config(GIT_MODE=True) | 157 src_cfg = api.gclient.make_config(GIT_MODE=True) |
159 soln = src_cfg.solutions.add() | 158 soln = src_cfg.solutions.add() |
160 soln.name = "dynamorio" | 159 soln.name = "dynamorio" |
161 soln.url = "https://github.com/DynamoRIO/dynamorio.git" | 160 soln.url = "https://github.com/DynamoRIO/dynamorio.git" |
162 soln.custom_deps = {'dynamorio/tools/buildbot': | 161 soln.custom_deps = {'dynamorio/tools/buildbot': |
163 'https://github.com/DynamoRIO/buildbot.git'} | 162 'https://github.com/DynamoRIO/buildbot.git'} |
164 api.gclient.c = src_cfg | 163 api.gclient.c = src_cfg |
165 result = api.bot_update.ensure_checkout(force=True) | 164 result = api.bot_update.ensure_checkout(force=True) |
166 build_properties.update(result.json.output.get("properties", {})) | 165 build_properties.update(result.json.output.get("properties", {})) |
167 # unpack tools step; generic ShellCommand converted | 166 # unpack tools step; generic ShellCommand converted |
168 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', | 167 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', |
169 'bot_tools', 'unpack.bat')], env={}, | 168 'bot_tools', 'unpack.bat')], env={}, |
170 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) | 169 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) |
171 # dynamorio win nightly suite step | 170 # dynamorio win nightly suite step |
172 api.step("nightly suite", [api.infra_paths['build'].join("scripts", "slave", | 171 api.step("nightly suite", [api.path["build"].join("scripts", "slave", |
173 "drmemory", "build_env.bat"), 'ctest', '--timeout', '120', '-VV', '-S', | 172 "drmemory", "build_env.bat"), 'ctest', '--timeout', '120', '-VV', '-S', |
174 'dynamorio/suite/runsuite.cmake,nightly;long;'+\ | 173 'dynamorio/suite/runsuite.cmake,nightly;long;'+\ |
175 'site=X64.Windows7.VS2010.BuildBot'], | 174 'site=X64.Windows7.VS2010.BuildBot'], |
176 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", | 175 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", |
177 "bot_tools")}, cwd=api.infra_paths['slave_build']) | 176 "bot_tools")}, cwd=api.path["slave_build"]) |
178 | 177 |
179 | 178 |
180 def win_8_dr_nightly_steps(api): | 179 def win_8_dr_nightly_steps(api): |
181 build_properties = api.properties.legacy() | 180 build_properties = api.properties.legacy() |
182 # checkout DynamiRIO step | 181 # checkout DynamiRIO step |
183 src_cfg = api.gclient.make_config(GIT_MODE=True) | 182 src_cfg = api.gclient.make_config(GIT_MODE=True) |
184 soln = src_cfg.solutions.add() | 183 soln = src_cfg.solutions.add() |
185 soln.name = "dynamorio" | 184 soln.name = "dynamorio" |
186 soln.url = "https://github.com/DynamoRIO/dynamorio.git" | 185 soln.url = "https://github.com/DynamoRIO/dynamorio.git" |
187 soln.custom_deps = {'dynamorio/tools/buildbot': | 186 soln.custom_deps = {'dynamorio/tools/buildbot': |
188 'https://github.com/DynamoRIO/buildbot.git'} | 187 'https://github.com/DynamoRIO/buildbot.git'} |
189 api.gclient.c = src_cfg | 188 api.gclient.c = src_cfg |
190 result = api.bot_update.ensure_checkout(force=True) | 189 result = api.bot_update.ensure_checkout(force=True) |
191 build_properties.update(result.json.output.get("properties", {})) | 190 build_properties.update(result.json.output.get("properties", {})) |
192 # unpack tools step; generic ShellCommand converted | 191 # unpack tools step; generic ShellCommand converted |
193 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', | 192 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', |
194 'bot_tools', 'unpack.bat')], env={}, | 193 'bot_tools', 'unpack.bat')], env={}, |
195 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) | 194 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) |
196 # dynamorio win nightly suite step | 195 # dynamorio win nightly suite step |
197 api.step("nightly suite", [api.infra_paths['build'].join("scripts", "slave", | 196 api.step("nightly suite", [api.path["build"].join("scripts", "slave", |
198 "drmemory", "build_env.bat"), 'ctest', '--timeout', '120', '-VV', '-S', | 197 "drmemory", "build_env.bat"), 'ctest', '--timeout', '120', '-VV', '-S', |
199 'dynamorio/suite/runsuite.cmake,nightly;long;'+\ | 198 'dynamorio/suite/runsuite.cmake,nightly;long;'+\ |
200 'site=X64.Windows8.VS2010.BuildBot'], | 199 'site=X64.Windows8.VS2010.BuildBot'], |
201 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", | 200 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", |
202 "bot_tools")}, cwd=api.infra_paths['slave_build']) | 201 "bot_tools")}, cwd=api.path["slave_build"]) |
203 | 202 |
204 | 203 |
205 def win_dr_package_steps(api): | 204 def win_dr_package_steps(api): |
206 build_properties = api.properties.legacy() | 205 build_properties = api.properties.legacy() |
207 # checkout DynamiRIO step | 206 # checkout DynamiRIO step |
208 src_cfg = api.gclient.make_config(GIT_MODE=True) | 207 src_cfg = api.gclient.make_config(GIT_MODE=True) |
209 soln = src_cfg.solutions.add() | 208 soln = src_cfg.solutions.add() |
210 soln.name = "dynamorio" | 209 soln.name = "dynamorio" |
211 soln.url = "https://github.com/DynamoRIO/dynamorio.git" | 210 soln.url = "https://github.com/DynamoRIO/dynamorio.git" |
212 soln.custom_deps = {'dynamorio/tools/buildbot': | 211 soln.custom_deps = {'dynamorio/tools/buildbot': |
213 'https://github.com/DynamoRIO/buildbot.git'} | 212 'https://github.com/DynamoRIO/buildbot.git'} |
214 api.gclient.c = src_cfg | 213 api.gclient.c = src_cfg |
215 result = api.bot_update.ensure_checkout(force=True) | 214 result = api.bot_update.ensure_checkout(force=True) |
216 build_properties.update(result.json.output.get("properties", {})) | 215 build_properties.update(result.json.output.get("properties", {})) |
217 # unpack tools step; generic ShellCommand converted | 216 # unpack tools step; generic ShellCommand converted |
218 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', | 217 api.step("unpack tools", [api.path["checkout"].join('tools', 'buildbot', |
219 'bot_tools', 'unpack.bat')], env={}, | 218 'bot_tools', 'unpack.bat')], env={}, |
220 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) | 219 cwd=api.path["checkout"].join('tools', 'buildbot', 'bot_tools')) |
221 # get buildnumber step; no longer needed | 220 # get buildnumber step; no longer needed |
222 # Package DynamoRIO step | 221 # Package DynamoRIO step |
223 api.step("Package DynamoRIO", [api.infra_paths['build'].join("scripts", "slave
", | 222 api.step("Package DynamoRIO", [api.path["build"].join("scripts", "slave", |
224 "drmemory", "build_env.bat"), "ctest", "-VV", "-S", | 223 "drmemory", "build_env.bat"), "ctest", "-VV", "-S", |
225 str(api.path["checkout"].join("make", "package.cmake")) + ",build=0x" + | 224 str(api.path["checkout"].join("make", "package.cmake")) + ",build=0x" + |
226 build_properties["got_revision"][:7]], | 225 build_properties["got_revision"][:7]], |
227 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", | 226 env={"BOTTOOLS": api.path["checkout"].join("tools", "buildbot", |
228 "bot_tools")}) | 227 "bot_tools")}) |
229 # find package file step; no longer necessary | 228 # find package file step; no longer necessary |
230 # upload dynamorio package | 229 # upload dynamorio package |
231 api.gsutil.upload("DynamoRIO-Windows-*" + | 230 api.gsutil.upload("DynamoRIO-Windows-*" + |
232 build_properties["got_revision"][:7] | 231 build_properties["got_revision"][:7] |
233 + ".zip", "chromium-dynamorio", "builds/") | 232 + ".zip", "chromium-dynamorio", "builds/") |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 api.properties(mastername='client.dynamorio') + | 330 api.properties(mastername='client.dynamorio') + |
332 api.properties(buildername='linux-dr-nightly') + | 331 api.properties(buildername='linux-dr-nightly') + |
333 api.properties(revision='123456789abcdef') + | 332 api.properties(revision='123456789abcdef') + |
334 api.properties(slavename='TestSlave') | 333 api.properties(slavename='TestSlave') |
335 ) | 334 ) |
336 yield (api.test('builder_not_in_dispatch_directory') + | 335 yield (api.test('builder_not_in_dispatch_directory') + |
337 api.properties(mastername='client.dynamorio') + | 336 api.properties(mastername='client.dynamorio') + |
338 api.properties(buildername='nonexistent_builder') + | 337 api.properties(buildername='nonexistent_builder') + |
339 api.properties(slavename='TestSlave') | 338 api.properties(slavename='TestSlave') |
340 ) | 339 ) |
OLD | NEW |