diff options
| author | EuAndreh <eu@euandre.org> | 2026-06-12 09:19:28 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2026-06-12 09:19:28 -0300 |
| commit | 46fd0362bce11d709e5efe6d540358533985d363 (patch) | |
| tree | f77d2ed33c4f3fb6e85353e436efca4e19028f73 /tests/signals.sh | |
| parent | rm .tdrc COPYING (diff) | |
| download | remembering-46fd0362bce11d709e5efe6d540358533985d363.tar.gz remembering-46fd0362bce11d709e5efe6d540358533985d363.tar.xz | |
Rewrite remembering in Go
The shell pipeline (sed | sort | tee | awk | sort | cut | "$@"
plus the cut | uniq | awk profile rewrite) becomes a single static
binary with the same observable behaviour, pinned by the original
ranking.sh, signals.sh and cli-opts.sh suites, now aimed at
remembering.bin:
- the profile keeps the exact on-disk format, COUNT profile TEXT,
byte-sorted with new picks appended at 1 and offered-but-never-
picked entries persisted at 0;
- the menu stays count-descending with byte-order ties, stdin
alone defines what is offered, and duplicate profile lines sum
for ranking but collapse to the highest count on rewrite, as
sort | uniq -f1 did;
- the wrapped command's exit status is forwarded as-is (128+sig
for signal deaths), its stderr passes through, and an empty pick
learns nothing;
- the profile rewrite stays atomic via .tmp plus rename.
Per the house CLI conventions, -h/-V/--help/--version are gone
(the manpage is the documentation; bad options print the usage on
stderr and exit 2), and getopts-style attached option arguments
(-pNAME) are not accepted any more --- no script in the wild used
them.
The project layout follows rot: raw go tool compile/link Makefile,
mkdeps.sh-generated deps.mk, white-box unit suite, fuzz target
over the profile parse/serialize roundtrip, functional pick
roundtrip, a 1M-line ranking benchmark, and a single English
asciidoc manpage absorbing the old .5 page; the po4a/aux release
machinery goes away.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'tests/signals.sh')
| -rwxr-xr-x | tests/signals.sh | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/tests/signals.sh b/tests/signals.sh index 36491cf..e1cb063 100755 --- a/tests/signals.sh +++ b/tests/signals.sh @@ -3,6 +3,8 @@ set -u . tests/lib.sh +REMEMBERING="$PWD/remembering.bin" + XDG_DATA_HOME="$PWD/tests/test-profiles/signals-$(uuid)" export XDG_DATA_HOME @@ -10,15 +12,15 @@ test_status_is_zero_when_command_is_successful() { testing 'status is 0 when command is successful' N="$LINENO" - printf 'a\n' | ./src/remembering -pp1 -- head -n1 1>/dev/null 2>/dev/null + printf 'a\n' | "$REMEMBERING" -p p1 -- head -n1 1>/dev/null 2>/dev/null STATUS=$? assert_status 0 - printf '' | ./src/remembering -pp2 -- true 1>/dev/null 2>/dev/null + printf '' | "$REMEMBERING" -p p2 -- true 1>/dev/null 2>/dev/null STATUS=$? assert_status 0 - seq 9 | ./src/remembering -pp3 -- grep 7 1>/dev/null 2>/dev/null + seq 9 | "$REMEMBERING" -p p3 -- grep 7 1>/dev/null 2>/dev/null STATUS=$? assert_status 0 @@ -29,7 +31,7 @@ test_status_is_forwarded_from_command() { testing 'status is forwarded from command' N="$LINENO" for status in $(seq 1 125); do - printf '' | ./src/remembering -pp4 -- sh -c "exit $status" 1>/dev/null 2>/dev/null + printf '' | "$REMEMBERING" -p p4 -- sh -c "exit $status" 1>/dev/null 2>/dev/null STATUS=$? assert_status "$status" done |
