blob: b0f161d5c964e59fd8a7864d5f29ca421637f20d [file] [log] [blame]
# 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