1*6777b538SAndroid Build Coastguard Worker# Copyright 2021 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Workerimport("//build/config/rust.gni") 6*6777b538SAndroid Build Coastguard Workerimport("//build/rust/rust_unit_tests_group.gni") 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker# Build some minimal binaries to exercise the Rust toolchain 9*6777b538SAndroid Build Coastguard Worker# only if that toolchain is enabled in gn args. 10*6777b538SAndroid Build Coastguard Workergroup("tests") { 11*6777b538SAndroid Build Coastguard Worker testonly = true 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker deps = [ ":deps" ] 14*6777b538SAndroid Build Coastguard Worker if (can_build_rust_unit_tests) { 15*6777b538SAndroid Build Coastguard Worker deps += [ ":build_rust_tests" ] 16*6777b538SAndroid Build Coastguard Worker } 17*6777b538SAndroid Build Coastguard Worker} 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Workergroup("deps") { 20*6777b538SAndroid Build Coastguard Worker testonly = true 21*6777b538SAndroid Build Coastguard Worker deps = [] 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker # All the rest require Rust. 24*6777b538SAndroid Build Coastguard Worker if (toolchain_has_rust) { 25*6777b538SAndroid Build Coastguard Worker deps += [ 26*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_static_fns_test", 27*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_test", 28*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_aliased_deps", 29*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_aliased_deps:test_aliased_deps_exe", 30*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_bin_crate", 31*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:target1", 32*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:target2", 33*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:test_rlib_crate_associated_bin", 34*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate_testonly:testonly_target", 35*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_metadata:test_rust_metadata_cc_exe", 36*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_metadata:test_rust_metadata_exe", 37*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_multiple_dep_versions_exe", 38*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_simple_rust_exe", 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker # TODO(https://crbug.com/1329611): Enable the additional target below 41*6777b538SAndroid Build Coastguard Worker # once `rs_bindings_from_cc` is distributed via `gclient sync`. In the 42*6777b538SAndroid Build Coastguard Worker # meantime see the instructions in 43*6777b538SAndroid Build Coastguard Worker # `//build/rust/run_rs_bindings_from_cc.py`. 44*6777b538SAndroid Build Coastguard Worker #"test_rs_bindings_from_cc:test_rs_bindings_from_cc", 45*6777b538SAndroid Build Coastguard Worker ] 46*6777b538SAndroid Build Coastguard Worker 47*6777b538SAndroid Build Coastguard Worker if (enable_chromium_prelude) { 48*6777b538SAndroid Build Coastguard Worker deps += [ "//build/rust/chromium_prelude:import_test" ] 49*6777b538SAndroid Build Coastguard Worker } 50*6777b538SAndroid Build Coastguard Worker if (enable_cxx) { 51*6777b538SAndroid Build Coastguard Worker deps += [ 52*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_cpp_including_rust", 53*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_calling_cpp", 54*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_exe", 55*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_static_library", 56*6777b538SAndroid Build Coastguard Worker ] 57*6777b538SAndroid Build Coastguard Worker } 58*6777b538SAndroid Build Coastguard Worker if (build_with_chromium) { 59*6777b538SAndroid Build Coastguard Worker # This tests integration with a 3p library that downstream projects 60*6777b538SAndroid Build Coastguard Worker # don't need to have. 61*6777b538SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_serde_json_lenient" ] 62*6777b538SAndroid Build Coastguard Worker } 63*6777b538SAndroid Build Coastguard Worker 64*6777b538SAndroid Build Coastguard Worker if (can_build_rust_unit_tests) { 65*6777b538SAndroid Build Coastguard Worker deps += [ 66*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_static_fns_test:bindgen_static_fns_test_lib_unittests", 67*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/bindgen_test:bindgen_test_lib_unittests", 68*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_aliased_deps:test_aliased_deps_unittests", 69*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:target1_test_rlib_crate_v0_2_unittests", 70*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rlib_crate:target2_test_rlib_crate_v0_2_unittests", 71*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_metadata:test_rust_metadata_unittests", 72*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_multiple_dep_versions_exe/v1:test_lib_v1_unittests", 73*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_multiple_dep_versions_exe/v2:test_lib_v2_unittests", 74*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_static_library_non_standard_arrangement:foo_tests", 75*6777b538SAndroid Build Coastguard Worker 76*6777b538SAndroid Build Coastguard Worker # TODO(https://crbug.com/1329611): Enable the additional target below 77*6777b538SAndroid Build Coastguard Worker # once `rs_bindings_from_cc` is distributed via `gclient sync`. In the 78*6777b538SAndroid Build Coastguard Worker # meantime see the instructions in 79*6777b538SAndroid Build Coastguard Worker # `//build/rust/run_rs_bindings_from_cc.py`. 80*6777b538SAndroid Build Coastguard Worker #"test_rs_bindings_from_cc:test_rs_bindings_from_cc_unittests", 81*6777b538SAndroid Build Coastguard Worker ] 82*6777b538SAndroid Build Coastguard Worker 83*6777b538SAndroid Build Coastguard Worker if (enable_cxx) { 84*6777b538SAndroid Build Coastguard Worker deps += [ 85*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_cpp_including_rust:test_cpp_including_rust_unittests", 86*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_exe:test_rust_exe_unittests", 87*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_static_library:test_rust_static_library_unittests", 88*6777b538SAndroid Build Coastguard Worker "//build/rust/tests/test_rust_unittests", 89*6777b538SAndroid Build Coastguard Worker ] 90*6777b538SAndroid Build Coastguard Worker } 91*6777b538SAndroid Build Coastguard Worker } 92*6777b538SAndroid Build Coastguard Worker 93*6777b538SAndroid Build Coastguard Worker # Dylibs should only be built in component builds. We turn on flags which 94*6777b538SAndroid Build Coastguard Worker # are incompatible with shared library compilation in non-component builds 95*6777b538SAndroid Build Coastguard Worker # (such as code coverage https://crbug.com/1457533). 96*6777b538SAndroid Build Coastguard Worker if (is_component_build && enable_cxx) { 97*6777b538SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_rust_shared_library" ] 98*6777b538SAndroid Build Coastguard Worker if (can_build_rust_unit_tests) { 99*6777b538SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_cpp_including_rust:test_cpp_including_rust_dylib_unittests" ] 100*6777b538SAndroid Build Coastguard Worker 101*6777b538SAndroid Build Coastguard Worker # TODO(crbug.com/1442273): The shared library unittest EXE ends up 102*6777b538SAndroid Build Coastguard Worker # requiring the DLL to run, even though it does not use the DLL. 103*6777b538SAndroid Build Coastguard Worker if (!is_win && !is_mac) { 104*6777b538SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_rust_shared_library:test_rust_shared_library_unittests" ] 105*6777b538SAndroid Build Coastguard Worker } 106*6777b538SAndroid Build Coastguard Worker } 107*6777b538SAndroid Build Coastguard Worker } 108*6777b538SAndroid Build Coastguard Worker 109*6777b538SAndroid Build Coastguard Worker if (is_win) { 110*6777b538SAndroid Build Coastguard Worker deps += [ "//build/rust/tests/test_control_flow_guard" ] 111*6777b538SAndroid Build Coastguard Worker } 112*6777b538SAndroid Build Coastguard Worker } 113*6777b538SAndroid Build Coastguard Worker} 114*6777b538SAndroid Build Coastguard Worker 115*6777b538SAndroid Build Coastguard Workerif (can_build_rust_unit_tests) { 116*6777b538SAndroid Build Coastguard Worker # Generates a script that will run all the native Rust unit tests, in order 117*6777b538SAndroid Build Coastguard Worker # to have them all part of a single test step on infra bots. 118*6777b538SAndroid Build Coastguard Worker rust_unit_tests_group("build_rust_tests") { 119*6777b538SAndroid Build Coastguard Worker deps = [ ":deps" ] 120*6777b538SAndroid Build Coastguard Worker } 121*6777b538SAndroid Build Coastguard Worker} 122