Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: chromecast/build/tests/cast_test.gni

Issue 2629573008: [Chromecast] Dump the runtime deps for all test targets. (Closed)
Patch Set: combine runtime deps into single .json file. Move outputs into _shared_dir Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chromecast/BUILD.gn ('k') | chromecast/tools/build/generate_test_lists.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 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 # This file contains templates which are meant to simplify building and 5 # This file contains templates which are meant to simplify building and
6 # running test binaries with the Chromecast build infrastructure. See 6 # running test binaries with the Chromecast build infrastructure. See
7 # documentation above each template for specific use. 7 # documentation above each template for specific use.
8 # 8 #
9 # Example Usage 9 # Example Usage
10 # 10 #
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 # } 56 # }
57 # 57 #
58 # # Build this to create build and run lists for bar and foo tests. 58 # # Build this to create build and run lists for bar and foo tests.
59 # cast_test_group_list("cast_test_lists") { 59 # cast_test_group_list("cast_test_lists") {
60 # test_groups = [ 60 # test_groups = [
61 # ":cast_tests", 61 # ":cast_tests",
62 # ":external_tests", 62 # ":external_tests",
63 # ] 63 # ]
64 # 64 #
65 # build_list_paths = "$root_out_dir/path/to/test/build_list.txt" 65 # build_list_paths = "$root_out_dir/path/to/test/build_list.txt"
66 #
67 # run_list_path = "$root_out_dir/path/to/list/run_list.txt" 66 # run_list_path = "$root_out_dir/path/to/list/run_list.txt"
67 # runtime_deps_path = "$root_out_dir/path/to/list/runtime_deps.json"
68 # } 68 # }
69 69
70 import("//testing/test.gni") 70 import("//testing/test.gni")
71 71
72 # Do not allow mixing of gtests and junit tests. All gtests must go into one 72 # Do not allow mixing of gtests and junit tests. All gtests must go into one
73 # directory, while all junit tests must go into another directory. 73 # directory, while all junit tests must go into another directory.
74 _gtest_gen_dir = "$root_gen_dir/chromecast/tests" 74 _gtest_gen_dir = "$root_gen_dir/chromecast/tests"
75 _junit_gen_dir = "$root_gen_dir/chromecast/junit" 75 _junit_gen_dir = "$root_gen_dir/chromecast/junit"
76 76
77 # A group of test executables. Including test targets in this group makes it 77 # A group of test executables. Including test targets in this group makes it
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 # This will be the prefix of each output file. 194 # This will be the prefix of each output file.
195 _output_prefix = "$_shared_dir/$_priority-$target_name" 195 _output_prefix = "$_shared_dir/$_priority-$target_name"
196 196
197 # Create a list of all the target names. These must correspond to the name of 197 # Create a list of all the target names. These must correspond to the name of
198 # the test binary. 198 # the test binary.
199 _test_names = [] 199 _test_names = []
200 foreach(_test, invoker.tests) { 200 foreach(_test, invoker.tests) {
201 _test_names += [ get_label_info(_test, "name") ] 201 _test_names += [ get_label_info(_test, "name") ]
202 } 202 }
203 203
204 # Create a dummy target so that we can get the runtime deps for each test
205 # and output them into a file. The runtime deps include all of the data files,
206 # data directories, and shared libraries that a test needs in order to run.
207 foreach(_test, invoker.tests) {
208 _test_name = get_label_info(_test, "name")
209 group(_test_name + "_cast_runtime_deps") {
210 testonly = true
211 data_deps = [
212 _test,
213 ]
214 write_runtime_deps =
215 "${_shared_dir}/runtime_deps/${_test_name}_runtime_deps.txt"
216 }
217 }
218
204 # This action generates a list of target names to build and run. It will be 219 # This action generates a list of target names to build and run. It will be
205 # depended upon by the "pack_build" action of the cast_test_group_list 220 # depended upon by the "pack_build" action of the cast_test_group_list
206 # instance which depends on this cast_test_group. 221 # instance which depends on this cast_test_group.
207 action(target_name + "_create_list") { 222 action(target_name + "_create_list") {
208 script = "//chromecast/tools/build/generate_test_lists.py" 223 script = "//chromecast/tools/build/generate_test_lists.py"
209 224
210 outputs = [ 225 outputs = [
211 "$_output_prefix.tests", 226 "$_output_prefix.tests",
212 ] 227 ]
213 228
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 # this target will fail. 292 # this target will fail.
278 # 293 #
279 # build_list_path (required) 294 # build_list_path (required)
280 # The absolute filepath of the output file which will hold the list of 295 # The absolute filepath of the output file which will hold the list of
281 # tests to be built. 296 # tests to be built.
282 # 297 #
283 # run_list_path (required) 298 # run_list_path (required)
284 # The absolute filepath of the output file which will hold the list of 299 # The absolute filepath of the output file which will hold the list of
285 # tests to be run, each with filters assigned by cast_groups. 300 # tests to be run, each with filters assigned by cast_groups.
286 # 301 #
302 # runtime_deps_path (required)
303 # The absolute filepath of the output file which will hold the json dict
304 # of runtime dependencies for each test to be run.
305 #
287 # additional_options (optional) 306 # additional_options (optional)
288 # Options which are passed to the python script, and applied to every test 307 # Options which are passed to the python script, and applied to every test
289 # 308 #
290 # build_tests (optional) 309 # build_tests (optional)
291 # Set this to true to build all of the tests included in |test_groups|. 310 # Set this to true to build all of the tests included in |test_groups|.
292 # Defaults to false. Note that if this is set to true, the test targets 311 # Defaults to false. Note that if this is set to true, the test targets
293 # will be built after all the lists are generated. 312 # will be built after all the lists are generated.
294 # test_type (optional) 313 # test_type (optional)
295 # A string, which must be either "junit" or "gtest". If not defined, 314 # A string, which must be either "junit" or "gtest". If not defined,
296 # defaults to "gtest". 315 # defaults to "gtest".
297 # 316 #
298 template("cast_test_group_list") { 317 template("cast_test_group_list") {
299 assert(defined(invoker.test_groups), "$target_name needs 'test_groups'") 318 assert(defined(invoker.test_groups), "$target_name needs 'test_groups'")
300 assert(defined(invoker.run_list_path), "$target_name needs 'run_list_path'") 319 assert(defined(invoker.run_list_path), "$target_name needs 'run_list_path'")
301 assert(defined(invoker.build_list_path), 320 assert(defined(invoker.build_list_path),
302 "$target_name needs 'build_list_path'") 321 "$target_name needs 'build_list_path'")
322 assert(defined(invoker.runtime_deps_path),
323 "$target_name needs 'runtime_deps_path'")
303 324
304 _pack_build_action = target_name + "_pack_build" 325 _pack_build_action = target_name + "_pack_build"
305 326
306 _test_type = "gtest" 327 _test_type = "gtest"
307 if (defined(invoker.test_type)) { 328 if (defined(invoker.test_type)) {
308 assert(invoker.test_type == "gtest" || invoker.test_type == "junit") 329 assert(invoker.test_type == "gtest" || invoker.test_type == "junit")
309 _test_type = invoker.test_type 330 _test_type = invoker.test_type
310 } 331 }
311 332
312 if (_test_type == "gtest") { 333 if (_test_type == "gtest") {
313 _shared_dir = _gtest_gen_dir 334 _shared_dir = _gtest_gen_dir
314 } else if (_test_type == "junit") { 335 } else if (_test_type == "junit") {
315 _shared_dir = _junit_gen_dir 336 _shared_dir = _junit_gen_dir
316 } 337 }
317 338
318 # Add the run list to runtime data dependencies 339 # Add the run list to runtime data dependencies
319 data = [ 340 data = [
320 invoker.run_list_path, 341 invoker.run_list_path,
342 invoker.runtime_deps_path,
321 ] 343 ]
322 344
323 # Generate a list of the "create_list" actions for each group. These will be 345 # Generate a list of the "create_list" actions for each group. These will be
324 # depended upon to ensure they're run before the "pack_build" step. 346 # depended upon to ensure they're run before the "pack_build" step.
325 _build_actions = [] 347 _build_actions = []
326 foreach(_test_group, invoker.test_groups) { 348 foreach(_test_group, invoker.test_groups) {
327 _build_actions += [ _test_group + "_create_list" ] 349 _build_actions += [ _test_group + "_create_list" ]
328 } 350 }
329 351
330 # Generate a list of the "filter" actions for each group. These will be 352 # Generate a list of the "filter" actions for each group. These will be
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 # //chromecast/tools/build/generate_test_lists.py for more information. 393 # //chromecast/tools/build/generate_test_lists.py for more information.
372 # Note that this target takes the name of the invoker, such that invoking the 394 # Note that this target takes the name of the invoker, such that invoking the
373 # target runs this step. 395 # target runs this step.
374 action(target_name) { 396 action(target_name) {
375 testonly = true 397 testonly = true
376 398
377 script = "//chromecast/tools/build/generate_test_lists.py" 399 script = "//chromecast/tools/build/generate_test_lists.py"
378 400
379 outputs = [ 401 outputs = [
380 invoker.run_list_path, 402 invoker.run_list_path,
403 invoker.runtime_deps_path,
381 ] 404 ]
382 405
383 args = [ 406 args = [
384 "-o", 407 "-o",
385 rebase_path(invoker.run_list_path), 408 rebase_path(invoker.run_list_path),
409 "-d",
410 rebase_path(invoker.runtime_deps_path),
386 "-t", 411 "-t",
387 rebase_path(_shared_dir), 412 rebase_path(_shared_dir),
388 "pack_run", 413 "pack_run",
389 ] 414 ]
390 415
391 # Add addtional options if they have been set. 416 # Add addtional options if they have been set.
392 if (defined(invoker.additional_options)) { 417 if (defined(invoker.additional_options)) {
393 args += [ "-a" ] 418 args += [ "-a" ]
394 args += invoker.additional_options 419 args += invoker.additional_options
395 } 420 }
396 421
397 # Depend first on the "pack_build" step, so that the build lists are created . 422 # Depend first on the "pack_build" step, so that the build lists are created .
398 deps = [ 423 deps = [
399 ":$_pack_build_action", 424 ":$_pack_build_action",
400 ] 425 ]
401 426
402 # Next, depend on the filter steps, such that they are created before this 427 # Next, depend on the filter steps, such that they are created before this
403 # script executes. 428 # script executes.
404 deps += _filter_actions 429 deps += _filter_actions
405 430
406 # If |build_tests| has been set to true, depend on the testing targets so 431 # If |build_tests| has been set to true, depend on the testing targets so
407 # that the tests are built. 432 # that the tests are built.
408 if (defined(_build_tests)) { 433 if (defined(_build_tests)) {
409 deps += _build_tests 434 deps += _build_tests
410 } 435 }
411 } 436 }
412 } 437 }
OLDNEW
« no previous file with comments | « chromecast/BUILD.gn ('k') | chromecast/tools/build/generate_test_lists.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698