| # 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", |
| ] |
| } |
| } |