# Copyright 2020 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/rust/rustc_binary.gni")
import("//build/testing/environments.gni")

if (current_toolchain == host_toolchain) {
  rustc_binary("generator") {
    name = "generator"
    edition = "2021"
    deps = [
      "//src/sys/pkg/lib/far/rust:fuchsia-archive",
      "//third_party/rust_crates:argh",
    ]
    sources = [ "src/main.rs" ]
    configs += [ "//build/config/rust/lints:clippy_warn_all" ]
  }
}

compiled_action("generate-invalid-fars") {
  tool = ":generator"
  args = [
    "--output-dir",
    rebase_path(target_out_dir, root_build_dir),
  ]
  outputs = [
    "${target_out_dir}/invalid-magic-bytes.far",
    "${target_out_dir}/index-entries-length-not-a-multiple-of-24-bytes.far",
    "${target_out_dir}/directory-names-index-entry-before-directory-index-entry.far",
    "${target_out_dir}/two-directory-index-entries.far",
    "${target_out_dir}/two-directory-names-index-entries.far",
    "${target_out_dir}/duplicate-index-entries-of-unknown-type.far",
    "${target_out_dir}/no-index-entries.far",
    "${target_out_dir}/no-directory-index-entry.far",
    "${target_out_dir}/no-directory-names-index-entry.far",
    "${target_out_dir}/directory-chunk-length-not-a-multiple-of-32-bytes.far",
    "${target_out_dir}/directory-chunk-not-tightly-packed.far",
    "${target_out_dir}/path-data-offset-too-large.far",
    "${target_out_dir}/path-data-length-too-large.far",
    "${target_out_dir}/directory-entries-not-sorted.far",
    "${target_out_dir}/directory-entries-with-same-name.far",
    "${target_out_dir}/directory-names-chunk-length-not-a-multiple-of-8-bytes.far",
    "${target_out_dir}/directory-names-chunk-not-tightly-packed.far",
    "${target_out_dir}/directory-names-chunk-before-directory-chunk.far",
    "${target_out_dir}/directory-names-chunk-overlaps-directory-chunk.far",
    "${target_out_dir}/zero-length-name.far",
    "${target_out_dir}/name-with-null-character.far",
    "${target_out_dir}/name-with-leading-slash.far",
    "${target_out_dir}/name-with-trailing-slash.far",
    "${target_out_dir}/name-with-empty-segment.far",
    "${target_out_dir}/name-with-dot-segment.far",
    "${target_out_dir}/name-with-dot-dot-segment.far",
    "${target_out_dir}/content-chunk-starts-early.far",
    "${target_out_dir}/content-chunk-starts-late.far",
    "${target_out_dir}/second-content-chunk-starts-early.far",
    "${target_out_dir}/second-content-chunk-starts-late.far",
    "${target_out_dir}/content-chunk-not-zero-padded.far",
    "${target_out_dir}/content-chunk-overlap.far",
    "${target_out_dir}/content-chunk-not-tightly-packed.far",
    "${target_out_dir}/content-chunk-offset-past-end-of-file.far",
  ]
}

resource("resource") {
  testonly = true
  deps = [ ":generate-invalid-fars" ]
  sources = get_target_outputs(":generate-invalid-fars")
  outputs = [ "data/invalid-fars/{{source_file_part}}" ]
}
