blob: 7e5fedcc0d539bf536a54fe221ac8421e2652d2d [file] [log] [blame]
# Copyright (c) 2020-2021 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}/config/compiler/compiler.gni")
import("${chip_root}/build/chip/java/config.gni")
import("${chip_root}/build/chip/tests.gni")
import("${chip_root}/src/ble/ble.gni")
import("${chip_root}/src/platform/device.gni")
import("${chip_root}/src/tracing/tracing_args.gni")
# chip_root relative to root_build_dir for macro-prefix-map.
# "/." avoids trailing "/" in result when chip_root is "//"
build_relative_chip_root = rebase_path("${chip_root}/.", root_build_dir)
config("includes") {
include_dirs = [
"include",
".",
"${root_gen_dir}/include",
]
if (chip_device_platform == "external" &&
chip_external_platform_include_dir != "") {
include_dirs += [ "${chip_external_platform_include_dir}" ]
}
defines = [ "CHIP_HAVE_CONFIG_H=1" ]
# Make __FILE__ and related macros relative to chip_root
cflags = [ "-fmacro-prefix-map=${build_relative_chip_root}/=" ]
}
if (chip_build_tests) {
import("${chip_root}/build/chip/chip_test_group.gni")
chip_test_group("tests") {
deps = []
tests = [
"${chip_root}/src/app/data-model/tests",
"${chip_root}/src/app/cluster-building-blocks/tests",
"${chip_root}/src/app/data-model-interface/tests",
"${chip_root}/src/access/tests",
"${chip_root}/src/crypto/tests",
"${chip_root}/src/inet/tests",
"${chip_root}/src/lib/address_resolve/tests",
"${chip_root}/src/lib/asn1/tests",
"${chip_root}/src/lib/core/tests",
"${chip_root}/src/messaging/tests",
"${chip_root}/src/protocols/bdx/tests",
"${chip_root}/src/protocols/interaction_model/tests",
"${chip_root}/src/protocols/user_directed_commissioning/tests",
"${chip_root}/src/transport/retransmit/tests",
"${chip_root}/src/app/icd/server/tests",
]
# Skip DNSSD tests for Mbed platform due to flash memory size limitations
if (current_os != "mbed") {
tests += [
"${chip_root}/src/lib/dnssd/minimal_mdns/core/tests",
"${chip_root}/src/lib/dnssd/minimal_mdns/responders/tests",
"${chip_root}/src/lib/dnssd/minimal_mdns/tests",
"${chip_root}/src/lib/dnssd/tests",
]
}
if (current_os != "zephyr" && current_os != "mbed") {
tests += [ "${chip_root}/src/lib/dnssd/minimal_mdns/records/tests" ]
}
if (current_os != "zephyr" && current_os != "mbed" &&
chip_device_platform != "efr32") {
# Avoid these items from "one single binary" test executions. Once tests
# are split, we can re-visit this (and likely many others)
#
# In particular:
# "app/codegen-data-model/tests" contains symbols for ember mocks which
# are used by other tests
tests += [
"${chip_root}/src/app/codegen-data-model/tests",
"${chip_root}/src/setup_payload/tests",
"${chip_root}/src/transport/raw/tests",
]
}
# Skip on efr32 due to flash and/or ram limitations.
if (chip_device_platform != "efr32") {
tests += [
"${chip_root}/src/app/tests",
"${chip_root}/src/credentials/tests",
"${chip_root}/src/lib/format/tests",
"${chip_root}/src/lib/support/tests",
"${chip_root}/src/protocols/secure_channel/tests",
"${chip_root}/src/system/tests",
"${chip_root}/src/transport/tests",
]
if (matter_enable_tracing_support &&
matter_trace_config == "${chip_root}/src/tracing/multiplexed") {
tests += [ "${chip_root}/src/tracing/tests" ]
}
}
if (chip_device_platform != "none") {
tests += [ "${chip_root}/src/lib/dnssd/minimal_mdns/tests" ]
}
if (chip_device_platform != "esp32" && chip_device_platform != "efr32" &&
chip_device_platform != "ameba") {
tests += [ "${chip_root}/src/platform/tests" ]
}
if (chip_config_network_layer_ble) {
tests += [ "${chip_root}/src/ble/tests" ]
}
# On nrfconnect, the controller tests run into
# https://github.com/project-chip/connectedhomeip/issues/9630
if (chip_device_platform != "nrfconnect" &&
chip_device_platform != "efr32") {
# Doesn't compile on ef32. Multiple definitions issues with attribute storage and overflows flash memory.
tests += [ "${chip_root}/src/controller/tests/data_model" ]
# Skip controller test for Open IoT SDK
# https://github.com/project-chip/connectedhomeip/issues/23747
if (chip_device_platform != "openiotsdk") {
tests += [ "${chip_root}/src/controller/tests" ]
}
}
if (current_os != "zephyr" && current_os != "mbed" &&
chip_device_platform != "esp32" && chip_device_platform != "ameba") {
tests += [ "${chip_root}/src/lib/shell/tests" ]
}
if (chip_monolithic_tests) {
deps += [ "${chip_root}/src/lib/support:pw_tests_wrapper" ]
build_monolithic_library = true
output_name = "libCHIP_tests"
output_dir = "${root_out_dir}/lib"
}
}
chip_test_group("fake_platform_tests") {
tests = [ "${chip_root}/src/lib/dnssd/platform/tests" ]
}
# Tests to run with each Crypto PAL
chip_test_group("crypto_tests") {
tests = [
"${chip_root}/src/credentials/tests",
"${chip_root}/src/crypto/tests",
]
}
if (matter_enable_java_compilation) {
group("java_controller_tests") {
deps = [ "${chip_root}/src/controller/java:unit_tests" ]
}
}
}