Run make try against a temporary directory (closes #12)
check / check (push) Successful in 3m36s
check / check (push) Successful in 3m36s
`make try` ran against a fixed directory on one person's machine. It failed for anyone else, and where that directory existed it rewrote the checksum attributes and modification times of real files. It now writes three small files into a new directory from `mktemp -d`, runs the same sequence of commands on it, and removes it with an EXIT trap. All steps run in one shell, so the trap also removes the directory when a step fails. `TODO.md`: the `try` sentence leaves Next Step and is recorded under Completed Steps. Model: opus-5-5
This commit was merged in pull request #14.
This commit is contained in:
@@ -1,7 +1,5 @@
|
|||||||
.PHONY: default bootstrap setup test lint fmt fmt-check check docker hooks build clean try
|
.PHONY: default bootstrap setup test lint fmt fmt-check check docker hooks build clean try
|
||||||
|
|
||||||
TESTDIR := $(HOME)/Documents/_SYSADMIN/cyberdyne
|
|
||||||
|
|
||||||
# The version `make build` stamps into the binary: the git tag or short
|
# The version `make build` stamps into the binary: the git tag or short
|
||||||
# commit, -dirty with uncommitted changes. `make build VERSION=x` stamps x,
|
# commit, -dirty with uncommitted changes. `make build VERSION=x` stamps x,
|
||||||
# which is how the Dockerfile passes its version in.
|
# which is how the Dockerfile passes its version in.
|
||||||
@@ -45,13 +43,22 @@ build: clean
|
|||||||
clean:
|
clean:
|
||||||
@rm -f attrsum
|
@rm -f attrsum
|
||||||
|
|
||||||
|
# Runs the binary on three small files in a new temporary directory, which
|
||||||
|
# the trap removes when the recipe ends, also when a step fails. The check
|
||||||
|
# after clear is expected to fail, so its exit status is ignored.
|
||||||
try: build
|
try: build
|
||||||
./attrsum sum add -v $(TESTDIR)
|
@set -ex; \
|
||||||
./attrsum check -v $(TESTDIR)
|
dir=$$(mktemp -d); \
|
||||||
./attrsum clear -v $(TESTDIR)
|
trap 'rm -rf "$$dir"' EXIT; \
|
||||||
-./attrsum check -v $(TESTDIR)
|
echo one >"$$dir/a"; \
|
||||||
./attrsum sum add -v $(TESTDIR)
|
echo two >"$$dir/b"; \
|
||||||
./attrsum check -v $(TESTDIR)
|
echo three >"$$dir/c"; \
|
||||||
touch $(TESTDIR)/*
|
./attrsum sum add -v "$$dir"; \
|
||||||
./attrsum sum update -v $(TESTDIR)
|
./attrsum check -v "$$dir"; \
|
||||||
./attrsum check -v $(TESTDIR)
|
./attrsum clear -v "$$dir"; \
|
||||||
|
./attrsum check -v "$$dir" || true; \
|
||||||
|
./attrsum sum add -v "$$dir"; \
|
||||||
|
./attrsum check -v "$$dir"; \
|
||||||
|
touch "$$dir"/*; \
|
||||||
|
./attrsum sum update -v "$$dir"; \
|
||||||
|
./attrsum check -v "$$dir"
|
||||||
|
|||||||
@@ -20,12 +20,13 @@ have landed since the tag.
|
|||||||
Policy scaffold commit: add LICENSE, REPO_POLICIES.md, .editorconfig,
|
Policy scaffold commit: add LICENSE, REPO_POLICIES.md, .editorconfig,
|
||||||
.golangci.yml, and a comprehensive .gitignore (currently only the
|
.golangci.yml, and a comprehensive .gitignore (currently only the
|
||||||
attrsum binary), and extend the Makefile (only test/build/clean/try
|
attrsum binary), and extend the Makefile (only test/build/clean/try
|
||||||
today) with lint, fmt, fmt-check, check, and hooks targets. Fix the try
|
today) with lint, fmt, fmt-check, check, and hooks targets.
|
||||||
target to use a temp fixture instead of the hardcoded
|
|
||||||
$(HOME)/Documents/_SYSADMIN/cyberdyne path.
|
|
||||||
|
|
||||||
# Completed Steps
|
# Completed Steps
|
||||||
|
|
||||||
|
* 2026-10-05: `make try` runs on three small files in a temporary
|
||||||
|
directory that it removes afterwards, also when a step fails,
|
||||||
|
instead of on a fixed directory on one person's machine
|
||||||
* 2026-10-02: `attrsum --version` reports the git tag or short commit,
|
* 2026-10-02: `attrsum --version` reports the git tag or short commit,
|
||||||
stamped by `make build` and by a plain `docker build .` of a clone;
|
stamped by `make build` and by a plain `docker build .` of a clone;
|
||||||
`.dockerignore` sends `.git` without `.git/config` and keeps a
|
`.dockerignore` sends `.git` without `.git/config` and keeps a
|
||||||
|
|||||||
Reference in New Issue
Block a user