blob: 35251252f86b22c4393a70554526b8d966df5dfb [file] [log] [blame] [edit]
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//flutter/common/config.gni")
import("//flutter/shell/config.gni")
import("testing.gni")
config("dynamic_symbols") {
if (is_clang && is_linux) {
ldflags = [ "-rdynamic" ]
}
}
source_set("testing_lib") {
testonly = true
sources = [
"assertions.h",
"debugger_detection.cc",
"debugger_detection.h",
"display_list_testing.cc",
"display_list_testing.h",
"logger_listener.cc",
"logger_listener.h",
"mock_canvas.cc",
"mock_canvas.h",
"post_task_sync.cc",
"post_task_sync.h",
"stream_capture.cc",
"stream_capture.h",
"test_args.cc",
"test_args.h",
"test_timeout_listener.cc",
"test_timeout_listener.h",
"testing.cc",
"testing.h",
"thread_test.cc",
"thread_test.h",
]
public_deps = [
"//flutter/display_list",
"//flutter/fml",
"//flutter/third_party/googletest:gmock",
"//flutter/third_party/googletest:gtest",
]
public_configs = [ "//flutter:config" ]
}
source_set("testing") {
testonly = true
sources = [ "run_all_unittests.cc" ]
if (enable_unittests && is_linux) {
# So that we can call gtk_init in main().
configs += [ "//flutter/shell/platform/linux/config:gtk" ]
}
public_deps = [ ":testing_lib" ]
public_configs = [ ":dynamic_symbols" ]
}
source_set("dart") {
testonly = true
sources = [
"dart_isolate_runner.cc",
"dart_isolate_runner.h",
"elf_loader.cc",
"elf_loader.h",
"test_dart_native_resolver.cc",
"test_dart_native_resolver.h",
]
public_deps = [
":testing_lib",
"$dart_src/runtime/bin:elf_loader",
"//flutter/common",
"//flutter/runtime",
"//flutter/runtime:libdart",
"//flutter/skia",
"//flutter/third_party/tonic",
]
}
source_set("skia") {
testonly = true
sources = [
"assertions_skia.cc",
"assertions_skia.h",
"canvas_test.h",
]
public_deps = [
":testing_lib",
"//flutter/skia",
]
}
dart_snapshot_kernel("vmservice_kernel") {
dart_main = "//flutter/shell/vmservice/empty.dart"
dart_kernel = "$target_gen_dir/assets/vmservice_kernel.bin"
}
dart_snapshot_aot("vmservice_snapshot") {
dart_kernel = "$target_gen_dir/assets/vmservice_kernel.bin"
dart_elf_filename = "libvmservice_snapshot.so"
deps = [ ":vmservice_kernel" ]
}
source_set("fixture_test") {
testonly = true
sources = [
"dart_fixture.cc",
"dart_fixture.h",
"fixture_test.cc",
"fixture_test.h",
]
public_deps = [
":dart",
"//flutter/common",
"//flutter/runtime",
]
if (flutter_runtime_mode == "profile") {
public_deps += [ ":vmservice_snapshot" ]
}
}
if (is_mac || is_ios) {
source_set("autoreleasepool_test") {
testonly = true
sources = [ "autoreleasepool_test.h" ]
deps = [
"//flutter/fml",
"//flutter/third_party/googletest:gtest",
]
}
}
if (enable_unittests && shell_enable_vulkan) {
source_set("vulkan") {
testonly = true
sources = [
"test_vulkan_context.cc",
"test_vulkan_context.h",
"test_vulkan_image.cc",
"test_vulkan_image.h",
"test_vulkan_surface.cc",
"test_vulkan_surface.h",
]
defines = [ "TEST_VULKAN_PROCS" ]
deps = [
":skia",
"//flutter/flutter_vma:flutter_skia_vma",
"//flutter/fml",
"//flutter/shell/common",
"//flutter/vulkan",
"//flutter/vulkan/procs",
]
if (!is_fuchsia) {
deps += [ "//flutter/third_party/swiftshader" ]
configs += [ "//flutter/third_party/swiftshader:swiftshader_config" ]
}
}
}
if (enable_unittests) {
test_fixtures("testing_fixtures") {
fixtures = []
}
# The //flutter/testing library provides utility methods to other test targets.
# This test target tests the testing utilities.
executable("testing_unittests") {
testonly = true
sources = [ "mock_canvas_unittests.cc" ]
deps = [
":skia",
":testing",
":testing_fixtures",
"//flutter/runtime:libdart",
]
if (shell_enable_metal) {
sources += [ "test_metal_surface_unittests.cc" ]
deps += [ ":metal" ]
}
if (shell_enable_vulkan) {
deps += [ "//flutter/vulkan" ]
}
}
}
# All targets on all platforms should be able to use the Metal utilities. On
# platforms where Metal is not available, the tests must be skipped or
# implemented to use another available client rendering API. This is usually
# either OpenGL which is portably implemented via SwiftShader or the software
# backend. This way, all tests compile on all platforms but the Metal backend
# is exercised on platforms where Metal itself is available.
#
# On iOS, this is enabled to allow for Metal tests to run within a test app
if (is_mac || is_ios) {
source_set("metal") {
if (shell_enable_metal) {
sources = [
"test_metal_context.h",
"test_metal_context.mm",
"test_metal_surface.cc",
"test_metal_surface.h",
"test_metal_surface_impl.h",
"test_metal_surface_impl.mm",
]
deps = [
":skia",
"//flutter/fml",
]
# Skia's Vulkan support is enabled for all platforms (except iOS), and so parts of
# Skia's graphics context reference Vulkan symbols.
if (shell_enable_vulkan) {
deps += [ "//flutter/vulkan" ]
}
}
testonly = true
}
}
# We only use SwiftShader on unittests
use_swiftshader = enable_unittests && shell_enable_gl
if (use_swiftshader) {
source_set("opengl") {
testonly = true
sources = [
"test_gl_surface.cc",
"test_gl_surface.h",
]
deps = [
":skia",
"//flutter/fml",
]
configs -= [ "//build/config/clang:extra_warnings" ]
configs += [
"//flutter/third_party/angle:gl_prototypes",
"//flutter/third_party/swiftshader:swiftshader_config",
]
deps += [
"//flutter/third_party/angle:libEGL_static",
"//flutter/third_party/angle:libGLESv2_static",
"//flutter/third_party/swiftshader",
]
}
}