# Check that we always rerun commands which fail.

# Run an initial build which fails on the command.
#
# RUN: rm -rf %t.build
# RUN: mkdir -p %t.build
# RUN: cp %s %t.build/build.llbuild
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build > %t.out || true
# RUN: test ! -f %t.build/output
# RUN: %{FileCheck} %s --input-file %t.out --check-prefix=CHECK-FAILURE
#
# CHECK-FAILURE: cp input output-1
# CHECK-FAILURE: cp: {{.*}}input{{.*}}: No such file or directory
# CHECK-FAILURE-NOT: cp output-1 output
# CHECK-FAILURE-NOT: cp: {{.*}}output-1{{.*}}: No such file or directory


# Rebuild and verify the command reruns.
#
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build > %t2.out || true
# RUN: test ! -f %t.build/output
# RUN: %{FileCheck} %s --input-file %t2.out --check-prefix=CHECK-FAILURE-REBUILD
#
# CHECK-FAILURE-REBUILD: cp: {{.*}}input{{.*}}: No such file or directory


# Create the missing input, and verify everything works. Aside from the obvious,
# this also ensures our patterns above stay up to date.
#
# RUN: touch %t.build/input
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build > %t3.out
# RUN: test -f %t.build/output
# RUN: %{FileCheck} %s --input-file %t3.out --check-prefix=CHECK-SUCCESSFUL-REBUILD
#
# CHECK-SUCCESSFUL-REBUILD: cp input output-1
# CHECK-SUCCESSFUL-REBUILD: cp output-1 output

client:
  name: basic

targets:
  "": ["output"]

commands:
  C1:
    tool: shell
    # NOTE: We intentionally don't declare the input here, we don't want to test "missing input behavior".
    outputs: ["output-1"]
    args: cp input output-1
    
  C2:
    tool: shell
    inputs: ["output-1"]
    outputs: ["output"]
    args: cp output-1 output
