| # Copyright (c) 2020 Project CHIP Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import("//build_overrides/build.gni") |
| import("//build_overrides/chip.gni") |
| |
| import("${build_root}/chip/chip_test.gni") |
| import("${build_root}/chip/tests.gni") |
| import("${dir_pw_unit_test}/test.gni") |
| |
| assert(chip_build_tests) |
| |
| # Define CHIP unit tests |
| # |
| # Simple usage |
| # chip_test_suite("tests") { |
| # output_name = "libFooTests" |
| # |
| # sources = [ |
| # "Common.h", # add common sources here |
| # "Common.cpp", |
| # ] |
| # |
| # test_sources = [ |
| # "TestFoo.cpp", # Files are parsed for `CHIP_REGISTER_TEST_SUITE(...)` |
| # "TestBar.cpp", # and a driver is created automatically |
| # ] |
| # |
| # public_deps = [ |
| # "${chip_root}/src/lib/foo", # add dependencies here |
| # "${nlunit_test_root}:nlunit-test", |
| # ] |
| # } |
| # |
| # |
| # Deprecated usage (writing own driver files): |
| # |
| # chip_test_suite("tests") { |
| # output_name = "libFooTests" |
| # |
| # sources = [ |
| # "TestDeclarations.h", |
| # "TestFoo.cpp", |
| # "TestBar.cpp", |
| # ] |
| # |
| # public_deps = [ |
| # "${chip_root}/src/lib/foo", # add dependencies here |
| # "${nlunit_test_root}:nlunit-test", |
| # ] |
| # |
| # tests = [ |
| # "TestFoo", # Assumes TestFooDriver.cpp exists |
| # "TestBar", # Assumes TestBarDriver.cpp exists |
| # ] |
| # } |
| |
| # |
| template("chip_test_suite") { |
| _suite_name = target_name |
| |
| # Ensures that the common library has sources containing both common |
| # and individual unit tests. |
| if (!defined(invoker.sources)) { |
| invoker.sources = [] |
| } |
| |
| if (defined(invoker.test_sources)) { |
| invoker.sources += invoker.test_sources |
| } |
| |
| static_library("${_suite_name}_common") { |
| forward_variables_from(invoker, "*", [ "tests" ]) |
| |
| output_dir = "${root_out_dir}/lib" |
| } |
| |
| if (chip_link_tests) { |
| tests = [] |
| |
| if (defined(invoker.test_sources)) { |
| foreach(_test, invoker.test_sources) { |
| _test_name = string_replace(_test, ".cpp", "") |
| |
| _driver_name = "${root_gen_dir}/${_test_name}.driver.cpp" |
| |
| action("${_test_name}_generate_driver") { |
| script = "${chip_root}/scripts/gen_test_driver.py" |
| |
| inputs = [ _test ] |
| outputs = [ _driver_name ] |
| args = [ |
| "--input_file=" + rebase_path(_test, root_build_dir), |
| "--output_file=" + rebase_path(_driver_name, root_build_dir), |
| ] |
| } |
| |
| chip_test(_test_name) { |
| sources = [ _driver_name ] |
| public_deps = [ |
| ":${_suite_name}_common", |
| ":${_test_name}_generate_driver", |
| ] |
| } |
| |
| tests += [ _test_name ] |
| } |
| } |
| |
| if (defined(invoker.tests)) { |
| foreach(_test, invoker.tests) { |
| chip_test(_test) { |
| sources = [ "${_test}Driver.cpp" ] |
| |
| public_deps = [ ":${_suite_name}_common" ] |
| } |
| |
| tests += [ _test ] |
| } |
| } |
| |
| group(_suite_name) { |
| deps = [] |
| foreach(_test, tests) { |
| deps += [ ":${_test}" ] |
| } |
| } |
| |
| group("${_suite_name}_run") { |
| deps = [] |
| foreach(_test, tests) { |
| deps += [ ":${_test}_run" ] |
| } |
| } |
| } else { |
| group(_suite_name) { |
| deps = [ ":${_suite_name}_common" ] |
| } |
| } |
| } |