diff --git a/CLAUDE.md b/CLAUDE.md index 37fece7..ed025ae 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -63,6 +63,7 @@ stack test --test-arguments --accept - `# no toplevel` - don't wrap in taskrunner - `# s3` - enable S3 testing - `# github keys` - provide GitHub credentials +- When testing toplevel vs subtask behavior, use real nesting (default toplevel wrapping + inner `taskrunner` calls) rather than manually setting internal env vars like `_taskrunner_build_id` ## Key Commands for Development diff --git a/src/App.hs b/src/App.hs index 94029d5..883d62a 100644 --- a/src/App.hs +++ b/src/App.hs @@ -186,6 +186,9 @@ main = do m_hashToSave <- readIORef appState.hashToSaveRef + when (skipped && isNothing m_hashToSave && appState.isToplevel) do + logInfo appState "skipped, inputs unchanged" + -- Only be chatty about exit status if we were chatty about starting the work, i.e. if it is cacheable. when (not skipped && isJust m_hashToSave) do if exitCode == ExitSuccess then diff --git a/test/t/file-input-unchanged-force.out b/test/t/file-input-unchanged-force.out index cd5e7cd..00e73b5 100644 --- a/test/t/file-input-unchanged-force.out +++ b/test/t/file-input-unchanged-force.out @@ -7,3 +7,4 @@ should compute again: [mytask] stdout | Expensive computation [mytask] info | success should not compute again: +[mytask] info | skipped, inputs unchanged diff --git a/test/t/file-input-unchanged.out b/test/t/file-input-unchanged.out index 5251dd7..3d9bcba 100644 --- a/test/t/file-input-unchanged.out +++ b/test/t/file-input-unchanged.out @@ -2,3 +2,4 @@ [mytask] info | Inputs changed, running task [mytask] stdout | Expensive computation [mytask] info | success +[mytask] info | skipped, inputs unchanged diff --git a/test/t/file-input-with-spaces-unchanged.out b/test/t/file-input-with-spaces-unchanged.out index 5251dd7..3d9bcba 100644 --- a/test/t/file-input-with-spaces-unchanged.out +++ b/test/t/file-input-with-spaces-unchanged.out @@ -2,3 +2,4 @@ [mytask] info | Inputs changed, running task [mytask] stdout | Expensive computation [mytask] info | success +[mytask] info | skipped, inputs unchanged diff --git a/test/t/raw-input-unchanged.out b/test/t/raw-input-unchanged.out index 13b0898..a2a633f 100644 --- a/test/t/raw-input-unchanged.out +++ b/test/t/raw-input-unchanged.out @@ -2,3 +2,4 @@ [mytask] info | Inputs changed, running task [mytask] stdout | Expensive computation, input is: lol [mytask] info | success +[mytask] info | skipped, inputs unchanged diff --git a/test/t/subtask-skip-no-message.out b/test/t/subtask-skip-no-message.out new file mode 100644 index 0000000..ca36e84 --- /dev/null +++ b/test/t/subtask-skip-no-message.out @@ -0,0 +1,4 @@ +-- output: +[mytask] info | Inputs changed, running task +[mytask] stdout | Running task +[mytask] info | success diff --git a/test/t/subtask-skip-no-message.txt b/test/t/subtask-skip-no-message.txt new file mode 100644 index 0000000..263be6e --- /dev/null +++ b/test/t/subtask-skip-no-message.txt @@ -0,0 +1,13 @@ +echo lol > input.txt +git init -q +git add input.txt + +go() { + taskrunner -n mytask bash -e -c ' + snapshot input.txt + echo "Running task" + ' +} + +go +go diff --git a/test/t/toplevel-skip-message.out b/test/t/toplevel-skip-message.out new file mode 100644 index 0000000..39b0f3d --- /dev/null +++ b/test/t/toplevel-skip-message.out @@ -0,0 +1,5 @@ +-- output: +[mytask] info | Inputs changed, running task +[mytask] stdout | Running task +[mytask] info | success +[mytask] info | skipped, inputs unchanged diff --git a/test/t/toplevel-skip-message.txt b/test/t/toplevel-skip-message.txt new file mode 100644 index 0000000..26d460d --- /dev/null +++ b/test/t/toplevel-skip-message.txt @@ -0,0 +1,13 @@ +# no toplevel +echo lol > input.txt +git init -q +git add input.txt + +go() { + taskrunner -n mytask bash -e -c ' + snapshot input.txt + echo "Running task" + ' +} +go +go