blob: 320cebee28c594a7020cc63e23c9f3a2e7a893db [file] [log] [blame]
# Copyright 2019 The Fuchsia 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("//build/components.gni")
import("//build/fidl/fidl.gni")
import("//build/go/go_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/host.gni")
import("//build/rust/rustc_test.gni")
import("//build/testing/golden_test.gni")
import("//build/testing/host_test_data.gni")
import("//src/tests/fidl/conformance_suite/gidl-conformance-suite.gni")
import(
"//third_party/go/src/syscall/zx/fidl/fidl_test/conformance_test_files.gni")
import("//tools/fidl/gidl/gidl.gni")
if (is_host) {
go_library("gopkg") {
name = "go.fuchsia.dev/fuchsia/tools/fidl/gidl/..."
deps = [ "//tools/fidl/lib/fidlgen" ]
sources = [
"audit/main.go",
"c/conformance.go",
"c/conformance.tmpl",
"config/defaults.go",
"cpp/benchmarks.go",
"cpp/benchmarks.tmpl",
"cpp/builder.go",
"cpp/conformance.go",
"cpp/conformance.tmpl",
"cpp/equality_builder.go",
"dart/benchmarks.go",
"dart/benchmarks.tmpl",
"dart/common.go",
"dart/conformance.go",
"dart/conformance.tmpl",
"driver_cpp/benchmarks.go",
"driver_cpp/benchmarks.tmpl",
"driver_llcpp/benchmarks.go",
"driver_llcpp/benchmarks.tmpl",
"dynfidl/conformance.go",
"dynfidl/conformance.tmpl",
"fuzzer_corpus/conformance.go",
"golang/benchmarks.go",
"golang/benchmarks.tmpl",
"golang/common.go",
"golang/conformance.go",
"golang/conformance.tmpl",
"golang/equality_builder.go",
"golang/golang_test.go",
"hlcpp/benchmarks.go",
"hlcpp/benchmarks.tmpl",
"hlcpp/builder.go",
"hlcpp/conformance.go",
"hlcpp/conformance.tmpl",
"hlcpp/equality_builder.go",
"ir/error.go",
"ir/test_case.go",
"ir/util.go",
"ir/value.go",
"librust/common.go",
"llcpp/benchmarks.go",
"llcpp/benchmarks.tmpl",
"llcpp/conformance.go",
"llcpp/conformance.tmpl",
"llcpp/lib/allocator_builder.go",
"llcpp/lib/common.go",
"llcpp/lib/equality_builder.go",
"llcpp/lib/unowned_builder.go",
"main.go",
"mixer/mixer.go",
"mixer/mixer_test.go",
"parser/generators.go",
"parser/parser.go",
"parser/parser_test.go",
"reference/benchmarks.go",
"reference/benchmarks.tmpl",
"rust/benchmarks.go",
"rust/benchmarks.tmpl",
"rust/common.go",
"rust/conformance.go",
"rust/conformance.tmpl",
"rust/forget_handles.go",
"rust/measure_tape.go",
"rust/measure_tape.tmpl",
"util/pattern_match.go",
"walker/benchmarks.go",
"walker/benchmarks.tmpl",
]
}
go_binary("gidl") {
gopackage = "go.fuchsia.dev/fuchsia/tools/fidl/gidl"
deps = [ ":gopkg" ]
}
go_binary("gidl_audit") {
gopackage = "go.fuchsia.dev/fuchsia/tools/fidl/gidl/audit"
deps = [ ":gopkg" ]
}
go_test("gidl_parser_test") {
gopackages = [ "go.fuchsia.dev/fuchsia/tools/fidl/gidl/parser" ]
deps = [
":gopkg",
"//third_party/golibs:github.com/google/go-cmp",
]
}
go_test("gidl_golang_test") {
gopackages = [ "go.fuchsia.dev/fuchsia/tools/fidl/gidl/golang" ]
deps = [ ":gopkg" ]
}
host_test_data("gidl_mixer_test_json") {
deps = [ ":gidl_mixer_test_fidl($fidl_toolchain)" ]
sources = [ "$root_build_dir/fidling/gen/tools/fidl/gidl/gidl_mixer_test_fidl.fidl.json" ]
outputs = [ "$root_out_dir/test_data/gidl/mixer.test.fidl.json" ]
}
go_test("gidl_mixer_test") {
gopackages = [ "go.fuchsia.dev/fuchsia/tools/fidl/gidl/mixer" ]
args = [
"--test_data_dir",
rebase_path("$root_out_dir/test_data/gidl", root_build_dir),
]
deps = [ ":gopkg" ]
non_go_deps = [ ":gidl_mixer_test_json" ]
}
conformance_golden_items = [
{
language = "go"
extension = "go"
},
{
language = "cpp"
extension = "cc"
},
{
language = "hlcpp"
extension = "cc"
},
{
language = "llcpp"
extension = "cc"
},
{
language = "rust"
extension = "rs"
},
{
language = "dynfidl"
extension = "rs"
},
{
language = "dart"
extension = "dart"
},
]
foreach(item, conformance_golden_items) {
gidl("${item.language}_goldens") {
type = "conformance"
language = item.language
inputs = conformance_suite_golden_gidl_files
fidl = conformance_suite_fidl_target
output = "$target_gen_dir/${item.language}_golden.${item.extension}"
}
}
golden_test("gidl_golden_tests") {
goldens_dir = "goldens"
deps = []
entries = []
foreach(item, conformance_golden_items) {
deps += [ ":${item.language}_goldens" ]
entries += [
{
golden = "${item.language}_golden.${item.extension}.golden"
generated =
"$target_gen_dir/${item.language}_golden.${item.extension}"
},
]
}
}
}
fidl("gidl_mixer_test_fidl") {
name = "test.mixer"
testonly = true
sources = [ "//tools/fidl/gidl/mixer/testdata/mixer.test.fidl" ]
public_deps = [ "//zircon/vdso/zx" ]
}
install_host_tools("host") {
deps = [
":gidl",
":gidl_audit",
]
outputs = [
"gidl",
"gidl_audit",
]
}
## Tests for building from an empty GIDL file.
##
## This verifies that there won't be build issues if tests are disabled.
## Previously, when you disabled a test you sometimes had to debug build issues, even in
## different bindings than the one you are debugging.
rust_empty_gidl_test_source = "$target_gen_dir/src/empty_conformance_test.rs"
gidl("rust_empty_gidl_test") {
type = "conformance"
language = "rust"
inputs = [ "//tools/fidl/gidl/empty.gidl" ]
fidl = conformance_suite_fidl_target
output = rust_empty_gidl_test_source
}
rustc_test("rust_empty_gidl_test_bin") {
output_name = "rust_empty_gidl_tests"
edition = "2018"
source_root = rust_empty_gidl_test_source
deps = [
"//src/lib/fidl/rust/fidl",
"//src/lib/fidl/rust/gidl_util",
"//src/lib/zircon/rust:fuchsia-zircon-status",
"//src/tests/fidl/conformance_suite:conformance_fidl-rustc",
"//third_party/rust_crates:assert_matches",
]
non_rust_deps = [ ":rust_empty_gidl_test" ]
sources = [ rust_empty_gidl_test_source ]
}
fuchsia_unittest_package("rust_empty_gidl_tests") {
deps = [ ":rust_empty_gidl_test_bin" ]
}
go_generated_dir = target_gen_dir
go_generated_source = "$go_generated_dir/empty_gidl_test.go"
gidl("go_empty_gidl") {
type = "conformance"
language = "go"
inputs = [ "//tools/fidl/gidl/empty.gidl" ]
fidl = conformance_suite_fidl_target
output = go_generated_source
}
copy("go_copy_test_utils") {
sources = []
foreach(filename, go_conformance_test_files) {
sources += [ "//third_party/go/src/syscall/zx/fidl/fidl_test/" + filename ]
}
outputs = [ "${go_generated_dir}/{{source_file_part}}" ]
}
go_library("go_empty_gidl_tests_library") {
testonly = true
name = "empty_gidl_tests"
source_dir = go_generated_dir
sources = rebase_path(
[ go_generated_source ] + get_target_outputs(":go_copy_test_utils"),
go_generated_dir)
non_go_deps = [
":go_copy_test_utils",
":go_empty_gidl",
]
deps = [ "${conformance_suite_fidl_target}(${go_toolchain})" ]
}
go_test("go_empty_gidl_test_bin") {
gopackages = [ "empty_gidl_tests" ]
deps = [ ":go_empty_gidl_tests_library" ]
non_go_deps = [ ":go_empty_gidl" ]
use_prebuilt_go = false
}
fuchsia_unittest_package("go_empty_gidl_tests") {
deps = [ ":go_empty_gidl_test_bin" ]
}
group("tests") {
testonly = true
deps = [
":gidl_golang_test($host_toolchain)",
":gidl_golden_tests($host_toolchain)",
":gidl_mixer_test($host_toolchain)",
":gidl_parser_test($host_toolchain)",
":go_empty_gidl_tests",
":rust_empty_gidl_tests",
]
}