# 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.

group("tests") {
  testonly = true

  deps = [ ":tracer_test" ]
}

# 1. Turn on trace_action:
# $ fx set ... --args=trace_action=true
# 2. Delete the output files to ensure that this action will run:
# $ rm -rf out/default/obj/build/tracer
# 3. Comment out either the `inputs`, or the second line of `outputs` below.
# 4. Build.
# $ fx build obj/build/tracer/tracer_test_output_1.txt
# You should see an error for the target below!
action("tracer_test") {
  script = "tracer_test.sh"

  inputs = [ "tracer_test_input.txt" ]

  outputs = [
    "$target_out_dir/tracer_test_output_1.txt",
    "$target_out_dir/tracer_test_output_2.txt",
  ]

  args = [
    rebase_path("tracer_test_input.txt", root_build_dir),
    rebase_path("$target_out_dir/tracer_test_output_1.txt", root_build_dir),
    rebase_path("$target_out_dir/tracer_test_output_2.txt", root_build_dir),
  ]
}
