blob: 5cfb8e6ea92f6969525ecb7ae4532f6ced583aa5 [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/host.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_test.gni")
import("//build/test/test_package.gni")
import("//build/testing/host_test_data.gni")
if (host_toolchain == current_toolchain) {
rustc_binary("fidldoc_bin") {
name = "fidldoc"
edition = "2018"
deps = [ ":rust_crates" ]
}
copy("fidldoc_copy_config") {
sources = [ "src/fidldoc.config.json" ]
outputs = [ "${host_tools_dir}/fidldoc.config.json" ]
}
rustc_test("fidldoc_bin_test") {
source_root = "src/main.rs"
deps = [
":fidldoc_bin",
":rust_crates",
]
non_rust_deps = [
":copy_jsonir_goldens",
":copy_markdown_goldens",
]
}
host_test_data("copy_jsonir_goldens") {
sources =
rebase_path(read_file("//zircon/tools/fidl/goldens/jsonir_goldens.txt",
"list lines"),
".",
"//zircon/tools/fidl/goldens/")
outputs = [ "$root_out_dir/test_data/fidldoc/{{source_name_part}}.golden" ]
}
# Markdown goldens have the same filename as JSON IR goldens with a ".md" extension
host_test_data("copy_markdown_goldens") {
exec_script("markdown_goldens.py",
[
"--input",
rebase_path("//zircon/tools/fidl/goldens/jsonir_goldens.txt"),
"--goldens",
rebase_path("src/templates/markdown/testdata/"),
])
sources = []
foreach(jsonir,
read_file("//zircon/tools/fidl/goldens/jsonir_goldens.txt",
"list lines")) {
sources += [ rebase_path(jsonir + ".md",
".",
"src/templates/markdown/testdata/") ]
}
outputs = [ "$root_out_dir/test_data/fidldoc/{{source_name_part}}.md" ]
}
group("rust_crates") {
deps = [
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:argh",
"//third_party/rust_crates:glob",
"//third_party/rust_crates:handlebars",
"//third_party/rust_crates:lazy_static",
"//third_party/rust_crates:log",
"//third_party/rust_crates:pulldown-cmark",
"//third_party/rust_crates:rayon",
"//third_party/rust_crates:regex",
"//third_party/rust_crates:serde",
"//third_party/rust_crates:serde_json",
"//third_party/rust_crates:tempfile",
]
}
}
install_host_tools("fidldoc") {
deps = [
":fidldoc_bin($host_toolchain)",
":fidldoc_copy_config($host_toolchain)",
]
outputs = [ "fidldoc" ]
}
group("tests") {
testonly = true
deps = [ ":fidldoc_bin_test($host_toolchain)" ]
}