webrtc_m130/test/BUILD.gn
Mirko Bonadei fc52b912a3 Implicitly suppress //build/config/clang:find_bad_constructs.
Since there is no way to enable/disable these diagnostics at runtime,
this CL moves the suppression into the rtc_* templates in order to
remove the need to explicitly add the snippet of code needed to
suppress it (currently copy/pasted in 144 locations).

The diagnostic that causes the most problems is the one about "complex
class/struct explicit ctor/dtor" [1] because WebRTC doesn't find
it useful enough.

Other diagnostics are good (for example the one that warns about
using "virtual" instead of "override", but that will be covered by
this clang-tidy check [2]) while others are Chromium related so
they have never triggered.

[1] - https://cs.chromium.org/chromium/src/tools/clang/plugins/FindBadConstructsConsumer.cpp?l=147-167&rcl=b4bebe1aa15dba7ca5fcc6456a81a55665327c3a
[2] - https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-override.html

Bug: webrtc:163
Change-Id: Icbf27efa5b369100a31e6a32df1a0913729b3b34
Reviewed-on: https://webrtc-review.googlesource.com/c/125088
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26918}
2019-03-01 10:18:17 +00:00

886 lines
21 KiB
Plaintext

# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
import("//build/config/ui.gni")
import("../webrtc.gni")
if (is_android) {
import("//build/config/android/rules.gni")
}
group("test") {
testonly = true
deps = [
":copy_to_file_audio_capturer",
":rtp_test_utils",
":test_common",
":test_renderer",
":test_support",
":video_test_common",
"pc/e2e",
"pc/e2e/api:peer_connection_quality_test_fixture_api",
]
if (rtc_include_tests) {
deps += [
":test_main",
":test_support_unittests",
"scenario/scenario_tests",
]
}
}
rtc_source_set("video_test_common") {
visibility = [ "*" ]
testonly = true
sources = [
"fake_texture_frame.cc",
"fake_texture_frame.h",
"frame_generator.cc",
"frame_generator.h",
"frame_generator_capturer.cc",
"frame_generator_capturer.h",
"frame_utils.cc",
"frame_utils.h",
"test_video_capturer.cc",
"test_video_capturer.h",
"vcm_capturer.cc",
"vcm_capturer.h",
"video_codec_settings.h",
]
deps = [
"..:webrtc_common",
"../api:libjingle_peerconnection_api",
"../api:scoped_refptr",
"../api/task_queue",
"../api/task_queue:global_task_queue_factory",
"../api/video:video_frame",
"../api/video:video_frame_i010",
"../api/video:video_frame_i420",
"../api/video_codecs:video_codecs_api",
"../call:video_stream_api",
"../common_video",
"../media:rtc_media_base",
"../modules/video_capture:video_capture_module",
"../rtc_base:checks",
"../rtc_base:rtc_base",
"../rtc_base:rtc_task_queue",
"../rtc_base/task_utils:repeating_task",
"../system_wrappers",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_source_set("rtp_test_utils") {
testonly = true
sources = [
"rtcp_packet_parser.cc",
"rtcp_packet_parser.h",
"rtp_file_reader.cc",
"rtp_file_reader.h",
"rtp_file_writer.cc",
"rtp_file_writer.h",
]
deps = [
"..:webrtc_common",
"../api:array_view",
"../modules/rtp_rtcp",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../rtc_base/system:arch",
"//testing/gtest",
]
}
rtc_source_set("field_trial") {
visibility = [ "*" ]
testonly = true
sources = [
"field_trial.cc",
"field_trial.h",
]
deps = [
"..:webrtc_common",
"../system_wrappers:field_trial",
]
}
rtc_source_set("perf_test") {
visibility = [ "*" ]
sources = [
"testsupport/perf_test.cc",
"testsupport/perf_test.h",
]
deps = [
"..:webrtc_common",
"../api:array_view",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
]
}
if (is_ios) {
rtc_source_set("test_support_objc") {
testonly = true
visibility = [ ":test_support" ]
sources = [
"ios/coverage_util_ios.h",
"ios/coverage_util_ios.mm",
"ios/test_support.h",
"ios/test_support.mm",
]
deps = [
":perf_test",
"../sdk:helpers_objc",
]
configs += [ ":test_support_objc_config" ]
}
config("test_support_objc_config") {
defines = []
if (use_clang_coverage) {
defines += [ "WEBRTC_IOS_ENABLE_COVERAGE" ]
}
}
}
config("suppress_warning_4373") {
if (is_win) {
cflags = [
# MSVC has a bug which generates this warning when using mocks; see the
# section on warning 4373 in he googlemock FAQ. This warning isn't the
# least relevant for us, anyway.
"/wd4373",
]
}
}
config("test_main_direct_config") {
visibility = [ ":*" ]
defines = [ "UNIT_TEST" ]
}
rtc_source_set("test_support") {
visibility = [ "*" ]
testonly = true
all_dependent_configs = [
":suppress_warning_4373",
"//third_party/googletest:gmock_config",
"//third_party/googletest:gtest_config",
]
sources = [
"gmock.h",
"gtest.h",
]
public_deps = []
if (is_ios) {
public_deps += [ ":test_support_objc" ]
}
public_configs = [ ":test_main_direct_config" ]
deps = [
"../rtc_base:rtc_base_approved",
"//testing/gmock",
"//testing/gtest",
]
}
if (rtc_include_tests) {
rtc_source_set("test_main_lib") {
visibility = [ "*" ]
testonly = true
sources = [
"test_main_lib.cc",
"test_main_lib.h",
]
deps = [
":field_trial",
":perf_test",
":test_support",
"../rtc_base:checks",
"../rtc_base:rtc_base",
"../system_wrappers:field_trial",
"../system_wrappers:metrics",
"//testing/gtest",
"//third_party/abseil-cpp/absl/memory",
# TODO(bugs.webrtc.org/9792): This is needed for downstream projects on
# Android, where it's replaced by an internal version of fileutils that
# has a certain flag. Remove this once the internal fileutils has been
# eliminated.
"../test:fileutils",
]
}
rtc_source_set("test_main") {
visibility = [ "*" ]
testonly = true
sources = [
"test_main.cc",
]
deps = [
":test_main_lib",
]
}
rtc_source_set("video_test_support") {
testonly = true
sources = [
"testsupport/frame_reader.h",
"testsupport/frame_writer.h",
"testsupport/mock/mock_frame_reader.h",
"testsupport/video_frame_writer.cc",
"testsupport/video_frame_writer.h",
"testsupport/y4m_frame_reader.cc",
"testsupport/y4m_frame_writer.cc",
"testsupport/yuv_frame_reader.cc",
"testsupport/yuv_frame_writer.cc",
]
deps = [
":fileutils",
":test_support",
":video_test_common",
"..:webrtc_common",
"../api:scoped_refptr",
"../api/video:video_frame",
"../api/video:video_frame_i420",
"../common_video",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../system_wrappers",
"//third_party/abseil-cpp/absl/memory:memory",
"//third_party/libyuv",
]
if (!is_ios) {
deps += [ "//third_party:jpeg" ]
sources += [ "testsupport/jpeg_frame_writer.cc" ]
} else {
sources += [ "testsupport/jpeg_frame_writer_ios.cc" ]
}
if (is_android) {
deps += [ "//base:base" ]
}
}
rtc_source_set("test_support_test_artifacts") {
testonly = true
sources = [
"testsupport/test_artifacts.cc",
"testsupport/test_artifacts.h",
]
deps = [
":fileutils",
"../rtc_base:rtc_base_approved",
"../rtc_base/system:file_wrapper",
]
}
test_support_unittests_resources = [
"../resources/foreman_cif_short.yuv",
"../resources/video_coding/frame-ethernet-ii.pcap",
"../resources/video_coding/frame-loopback.pcap",
"../resources/video_coding/pltype103.rtp",
"../resources/video_coding/pltype103_header_only.rtp",
"../resources/video_coding/ssrcs-2.pcap",
"../resources/video_coding/ssrcs-3.pcap",
]
if (is_ios) {
bundle_data("test_support_unittests_bundle_data") {
testonly = true
sources = test_support_unittests_resources
outputs = [
"{{bundle_resources_dir}}/{{source_file_part}}",
]
}
}
rtc_test("test_support_unittests") {
deps = [
":call_config_utils",
":copy_to_file_audio_capturer_unittest",
":direct_transport",
":fake_video_codecs",
":fileutils",
":fileutils_unittests",
":perf_test",
":rtp_test_utils",
":test_common",
":test_main",
":test_support",
":test_support_test_artifacts",
":video_test_common",
":video_test_support",
"../api:create_simulcast_test_fixture_api",
"../api:scoped_refptr",
"../api:simulcast_test_fixture_api",
"../api/test/video:function_video_factory",
"../api/video:builtin_video_bitrate_allocator_factory",
"../api/video:video_frame",
"../api/video:video_frame_i420",
"../call:video_stream_api",
"../modules/rtp_rtcp:rtp_rtcp",
"../modules/video_capture",
"../modules/video_coding:simulcast_test_fixture_impl",
"../rtc_base:rtc_base_approved",
"../rtc_base/system:file_wrapper",
"../test:single_threaded_task_queue",
"pc/e2e:e2e_unittests",
"scenario:scenario_unittests",
"//testing/gmock",
"//testing/gtest",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
]
sources = [
"call_config_utils_unittest.cc",
"direct_transport_unittest.cc",
"fake_vp8_encoder_unittest.cc",
"frame_generator_unittest.cc",
"rtp_file_reader_unittest.cc",
"rtp_file_writer_unittest.cc",
"single_threaded_task_queue_unittest.cc",
"testsupport/perf_test_unittest.cc",
"testsupport/test_artifacts_unittest.cc",
"testsupport/video_frame_writer_unittest.cc",
"testsupport/y4m_frame_reader_unittest.cc",
"testsupport/y4m_frame_writer_unittest.cc",
"testsupport/yuv_frame_reader_unittest.cc",
"testsupport/yuv_frame_writer_unittest.cc",
]
data = test_support_unittests_resources
if (is_android) {
deps += [ "//testing/android/native_test:native_test_support" ]
shard_timeout = 900
}
if (is_ios) {
deps += [ ":test_support_unittests_bundle_data" ]
}
if (!is_android && !build_with_chromium) {
# This is needed in order to avoid:
# undefined symbol: webrtc::videocapturemodule::VideoCaptureImpl::Create
deps += [ "../modules/video_capture:video_capture_internal_impl" ]
}
}
}
if (is_ios) {
rtc_source_set("fileutils_ios_objc") {
visibility = [
":fileutils",
":fileutils_override_impl",
]
sources = [
"testsupport/ios_file_utils.h",
"testsupport/ios_file_utils.mm",
]
deps = [
"..:webrtc_common",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../sdk:helpers_objc",
]
}
}
if (is_mac) {
rtc_source_set("fileutils_mac_objc") {
visibility = [
":fileutils",
":fileutils_override_impl",
]
sources = [
"testsupport/mac_file_utils.h",
"testsupport/mac_file_utils.mm",
]
deps = [
"../rtc_base:checks",
]
}
}
rtc_source_set("fileutils") {
testonly = true
visibility = [ "*" ]
sources = [
"testsupport/file_utils.cc",
"testsupport/file_utils.h",
]
deps = [
":fileutils_override_api",
":fileutils_override_impl",
"..:webrtc_common",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../rtc_base/system:arch",
"//third_party/abseil-cpp/absl/types:optional",
]
if (is_ios) {
deps += [ ":fileutils_ios_objc" ]
}
if (is_mac) {
deps += [ ":fileutils_mac_objc" ]
}
if (is_win) {
deps += [ "../rtc_base:rtc_base" ]
}
}
# We separate header into own target to make it possible for downstream
# projects to override implementation.
rtc_source_set("fileutils_override_api") {
testonly = true
sources = [
"testsupport/file_utils_override.h",
]
}
rtc_source_set("fileutils_override_impl") {
testonly = true
visibility = [ ":fileutils" ]
sources = [
"testsupport/file_utils_override.cc",
]
deps = [
":fileutils_override_api",
"..:webrtc_common",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../rtc_base/system:arch",
"//third_party/abseil-cpp/absl/types:optional",
]
if (is_ios) {
deps += [ ":fileutils_ios_objc" ]
}
if (is_mac) {
deps += [ ":fileutils_mac_objc" ]
}
if (is_win) {
deps += [ "../rtc_base:rtc_base" ]
}
}
rtc_source_set("run_test") {
testonly = true
if (is_mac) {
public_deps = [
":run_test_objc",
]
} else {
public_deps = [
":run_test_generic",
]
}
}
rtc_source_set("run_test_interface") {
sources = [
"run_test.h",
]
}
if (is_mac) {
rtc_source_set("run_test_objc") {
testonly = true
visibility = [ ":run_test" ]
sources = [
"mac/run_test.mm",
]
deps = [
":run_test_interface",
]
}
}
rtc_source_set("run_test_generic") {
testonly = true
visibility = [ ":run_test" ]
sources = [
"run_test.cc",
]
deps = [
":run_test_interface",
]
}
rtc_source_set("fileutils_unittests") {
testonly = true
visibility = [ ":*" ] # Only targets in this file can depend on this.
sources = [
"testsupport/file_utils_unittest.cc",
]
deps = [
":fileutils",
":test_support",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"//testing/gtest",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_source_set("direct_transport") {
visibility = [ "*" ]
testonly = true
sources = [
"direct_transport.cc",
"direct_transport.h",
]
deps = [
"..:webrtc_common",
"../api:simulated_network_api",
"../api:transport_api",
"../call:call_interfaces",
"../call:simulated_packet_receiver",
"../modules/rtp_rtcp",
"../rtc_base:rtc_base_approved",
"../rtc_base:sequenced_task_checker",
"../system_wrappers",
"//third_party/abseil-cpp/absl/memory",
]
public_deps = [
":single_threaded_task_queue",
"../call:fake_network",
]
}
rtc_source_set("single_threaded_task_queue") {
testonly = true
sources = [
"single_threaded_task_queue.cc",
"single_threaded_task_queue.h",
]
deps = [
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_source_set("fake_video_codecs") {
allow_poison = [ "software_video_codecs" ]
visibility = [ "*" ]
sources = [
"configurable_frame_size_encoder.cc",
"configurable_frame_size_encoder.h",
"fake_decoder.cc",
"fake_decoder.h",
"fake_encoder.cc",
"fake_encoder.h",
"fake_vp8_decoder.cc",
"fake_vp8_decoder.h",
"fake_vp8_encoder.cc",
"fake_vp8_encoder.h",
]
deps = [
"..:webrtc_common",
"../api:scoped_refptr",
"../api/video:encoded_image",
"../api/video:video_bitrate_allocation",
"../api/video:video_frame",
"../api/video:video_frame_i420",
"../api/video_codecs:create_vp8_temporal_layers",
"../api/video_codecs:video_codecs_api",
"../common_video:common_video",
"../modules:module_api",
"../modules/video_coding:codec_globals_headers",
"../modules/video_coding:video_codec_interface",
"../modules/video_coding:video_coding_utility",
"../modules/video_coding:webrtc_h264",
"../modules/video_coding:webrtc_vp8",
"../modules/video_coding:webrtc_vp9",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_task_queue",
"../rtc_base:sequenced_task_checker",
"../system_wrappers",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_source_set("test_common") {
testonly = true
sources = [
"call_test.cc",
"call_test.h",
"drifting_clock.cc",
"drifting_clock.h",
"encoder_settings.cc",
"encoder_settings.h",
"fake_videorenderer.h",
"layer_filtering_transport.cc",
"layer_filtering_transport.h",
"mock_transport.cc",
"mock_transport.h",
"null_transport.cc",
"null_transport.h",
"rtp_rtcp_observer.h",
"statistics.cc",
"statistics.h",
"video_decoder_proxy_factory.h",
"video_encoder_proxy_factory.h",
]
if (current_os != "winuwp") {
# The filtering of *_win.cc is not done for WinUWP (intentionally) as
# most _win.cc files are compatible with WinUWP. However, the
# peek/dispatch Win32 runloops are entirely WinUWP incompatible thus
# WinUWP uses the generic runloop as defined for non-Windows targets.
sources += [ "win/run_loop_win.cc" ]
}
if (!is_win || current_os == "winuwp") {
sources += [
"run_loop.cc",
"run_loop.h",
]
}
deps = [
":direct_transport",
":fake_video_codecs",
":fileutils",
":rtp_test_utils",
":test_support",
":video_test_common",
"../:webrtc_common",
"../api:libjingle_peerconnection_api",
"../api:scoped_refptr",
"../api:simulated_network_api",
"../api:transport_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
"../api/test/video:function_video_factory",
"../api/video:builtin_video_bitrate_allocator_factory",
"../api/video:video_bitrate_allocator_factory",
"../api/video:video_frame",
"../api/video_codecs:video_codecs_api",
"../audio",
"../call",
"../call:call_interfaces",
"../call:fake_network",
"../call:rtp_interfaces",
"../call:rtp_sender",
"../call:simulated_network",
"../call:simulated_packet_receiver",
"../call:video_stream_api",
"../logging:rtc_event_log_api",
"../logging:rtc_event_log_impl_base",
"../media:rtc_internal_video_codecs",
"../media:rtc_media_base",
"../modules/audio_device",
"../modules/audio_device:audio_device_impl",
"../modules/audio_device:mock_audio_device",
"../modules/audio_mixer:audio_mixer_impl",
"../modules/audio_processing",
"../modules/rtp_rtcp",
"../modules/rtp_rtcp:mock_rtp_rtcp",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../modules/rtp_rtcp:rtp_video_header",
"../modules/video_coding:codec_globals_headers",
"../modules/video_coding:video_coding_utility",
"../modules/video_coding:webrtc_h264",
"../modules/video_coding:webrtc_multiplex",
"../modules/video_coding:webrtc_vp8",
"../modules/video_coding:webrtc_vp9",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../system_wrappers",
"../system_wrappers:field_trial",
"../video",
"//testing/gtest",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/types:optional",
]
if (!is_android && !build_with_chromium) {
deps += [ "../modules/video_capture:video_capture_internal_impl" ]
}
}
rtc_source_set("test_renderer") {
public_deps = [
":test_renderer_generic",
]
testonly = true
if (is_mac) {
public_deps += [ ":test_renderer_objc" ]
}
}
if (is_mac) {
rtc_source_set("test_renderer_objc") {
testonly = true
visibility = [ ":test_renderer" ]
sources = [
"mac/video_renderer_mac.h",
"mac/video_renderer_mac.mm",
]
deps = [
":test_renderer_generic",
"../rtc_base:rtc_base_approved",
]
libs = [
"Cocoa.framework",
"OpenGL.framework",
"CoreVideo.framework",
]
}
}
rtc_source_set("test_renderer_generic") {
testonly = true
visibility = [
":test_renderer",
":test_renderer_objc",
]
libs = []
sources = [
"video_renderer.cc",
"video_renderer.h",
"win/d3d_renderer.cc",
"win/d3d_renderer.h",
]
deps = [
":test_support",
"..:webrtc_common",
"../api:scoped_refptr",
"../api/video:video_frame",
"../common_video",
"../media:rtc_media_base",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"//testing/gtest",
]
if (!(is_linux && rtc_use_x11) && !is_mac && !is_win) {
sources += [ "null_platform_renderer.cc" ]
}
if ((is_linux && rtc_use_x11) || is_mac) {
sources += [
"gl/gl_renderer.cc",
"gl/gl_renderer.h",
]
}
if (is_linux && rtc_use_x11) {
sources += [
"linux/glx_renderer.cc",
"linux/glx_renderer.h",
"linux/video_renderer_linux.cc",
]
libs += [
"Xext",
"X11",
"GL",
]
}
if (is_android) {
libs += [
"GLESv2",
"log",
]
}
}
rtc_source_set("audio_codec_mocks") {
testonly = true
sources = [
# TODO(nisse): Move these factories to their own target, to avoid
# unnecessary dependencies on gmock and gtest.
"audio_decoder_proxy_factory.h",
"function_audio_decoder_factory.h",
"mock_audio_decoder.cc",
"mock_audio_decoder.h",
"mock_audio_decoder_factory.h",
"mock_audio_encoder.cc",
"mock_audio_encoder.h",
"mock_audio_encoder_factory.h",
]
deps = [
":test_support",
"../api:array_view",
"../api:scoped_refptr",
"../api/audio_codecs:audio_codecs_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_source_set("copy_to_file_audio_capturer") {
testonly = true
sources = [
"testsupport/copy_to_file_audio_capturer.cc",
"testsupport/copy_to_file_audio_capturer.h",
]
deps = [
"../api:array_view",
"../common_audio:common_audio",
"../modules/audio_device:audio_device_impl",
"../rtc_base:rtc_base_approved",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_source_set("copy_to_file_audio_capturer_unittest") {
testonly = true
sources = [
"testsupport/copy_to_file_audio_capturer_unittest.cc",
]
deps = [
":copy_to_file_audio_capturer",
":fileutils",
":test_support",
"../modules/audio_device:audio_device_impl",
"//third_party/abseil-cpp/absl/memory",
]
}
if (!build_with_chromium && is_android) {
rtc_android_library("native_test_java") {
testonly = true
java_files = [
"android/org/webrtc/native_test/RTCNativeUnitTest.java",
"android/org/webrtc/native_test/RTCNativeUnitTestActivity.java",
]
deps = [
"../rtc_base:base_java",
"//testing/android/native_test:native_test_java",
]
}
}
rtc_source_set("call_config_utils") {
sources = [
"call_config_utils.cc",
"call_config_utils.h",
]
deps = [
"../call:call_interfaces",
"../call:video_stream_api",
"../rtc_base:rtc_json",
]
}