blob: cc7281860a2a6e84b40fc1367144557c999948e1 [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) {
common_sources = [
"src/fidljson.rs",
"src/main.rs",
"src/simple_logger.rs",
"src/templates/html/mod.rs",
"src/templates/markdown/mod.rs",
"src/templates/mod.rs",
]
common_inputs = [
"src/templates/markdown/partials/header.hbs",
"src/templates/markdown/partials/types/filename.hbs",
"src/templates/html/interface.hbs",
"src/templates/markdown/interface.hbs",
"src/templates/markdown/partials/header_dir.hbs",
"src/templates/markdown/partials/declarations/tables.hbs",
"src/templates/markdown/partials/declarations/enums.hbs",
"src/templates/markdown/partials/types/vector.hbs",
"src/templates/markdown/partials/declarations/constants.hbs",
"src/templates/html/main.hbs",
"src/templates/markdown/partials/declarations/type_aliases.hbs",
"src/templates/markdown/partials/declarations/protocols.hbs",
"src/templates/markdown/partials/types/doc.hbs",
"src/templates/markdown/partials/footer.hbs",
"src/templates/markdown/partials/declarations/bits.hbs",
"src/templates/markdown/partials/declarations/unions.hbs",
"src/templates/markdown/main.hbs",
"src/templates/markdown/toc.hbs",
"src/templates/markdown/partials/types/type.hbs",
"src/templates/markdown/partials/declarations/structs.hbs",
]
rustc_binary("fidldoc_bin") {
name = "fidldoc"
edition = "2018"
deps = [ ":rust_crates" ]
sources = common_sources
inputs = common_inputs
}
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",
]
sources = common_sources
inputs = common_inputs + [
"src/templates/markdown/testdata/README.md",
"src/templates/markdown/testdata/_toc.yaml",
"src/fidldoc.config.json",
]
}
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)" ]
}