test(raw-commit): add tests for quiet window behavior
This commit is contained in:
parent
eed2251c28
commit
6c4468cc12
1 changed files with 75 additions and 0 deletions
75
tests/raw-commit-quiet.bats
Normal file
75
tests/raw-commit-quiet.bats
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
#!/usr/bin/env bats
|
||||||
|
# raw-commit-quiet.bats — quiet-window behaviour of genome-raw-commit.sh.
|
||||||
|
# No Syncthing (no API key -> default author); pushes to a local bare repo via GENOME_PUSH_URL.
|
||||||
|
setup() {
|
||||||
|
SCRIPT="${BATS_TEST_DIRNAME}/../deploy/nexus/genome-raw-commit.sh"
|
||||||
|
export HOME="${BATS_TEST_TMPDIR}/home"; mkdir -p "$HOME/.config"
|
||||||
|
root="${BATS_TEST_TMPDIR}/vaults"; mkdir -p "$root"
|
||||||
|
bare="${BATS_TEST_TMPDIR}/origin.git"; git init -q --bare "$bare"
|
||||||
|
cat > "$HOME/.config/knowledge-genome.env" <<EOF
|
||||||
|
GENOME_VAULTS_ROOT=$root
|
||||||
|
GENOME_BASE=main
|
||||||
|
FORGEJO_USER=n8n-bot
|
||||||
|
FORGEJO_HOST=127.0.0.1:3001
|
||||||
|
FORGEJO_OWNER=Keru
|
||||||
|
COMMITTER_NAME=n8n-bot
|
||||||
|
COMMITTER_EMAIL=n8n-bot@homelab
|
||||||
|
DEFAULT_AUTHOR_NAME=Tester
|
||||||
|
DEFAULT_AUTHOR_EMAIL=tester@local
|
||||||
|
EOF
|
||||||
|
export g="genome-test"; export vault="$root/$g"
|
||||||
|
git clone -q "$bare" "$vault" 2>/dev/null || mkdir -p "$vault"
|
||||||
|
( cd "$vault"
|
||||||
|
git init -q 2>/dev/null || true
|
||||||
|
git config user.name n8n-bot; git config user.email n8n-bot@homelab; git config commit.gpgsign false
|
||||||
|
git checkout -q -b main 2>/dev/null || git switch -q main
|
||||||
|
mkdir -p raw/articles; echo seed > raw/articles/.gitkeep
|
||||||
|
git add -A; git commit -q -m init
|
||||||
|
git remote add origin "$bare" 2>/dev/null || git remote set-url origin "$bare"
|
||||||
|
git push -q -u origin main )
|
||||||
|
export GENOME_PUSH_URL="$bare" # test seam -> push to the local bare repo
|
||||||
|
}
|
||||||
|
files() { ( cd "$vault" && git ls-files raw/ ) > "${BATS_TEST_TMPDIR}/f.txt"; }
|
||||||
|
|
||||||
|
@test "raw-commit: holds a freshly-written raw, commits it once it settles" {
|
||||||
|
command -v jq >/dev/null 2>&1 || skip "jq not installed"
|
||||||
|
echo "still typing" > "$vault/raw/articles/hot.md" # fresh -> hot
|
||||||
|
echo "finished" > "$vault/raw/articles/stable.md"
|
||||||
|
touch -d "10 minutes ago" "$vault/raw/articles/stable.md" # settled
|
||||||
|
|
||||||
|
run bash "$SCRIPT" "$g"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
echo "$output" | jq -e '.status=="ok"'
|
||||||
|
files
|
||||||
|
grep -q 'raw/articles/stable.md' "${BATS_TEST_TMPDIR}/f.txt" # committed
|
||||||
|
! grep -q 'raw/articles/hot.md' "${BATS_TEST_TMPDIR}/f.txt" # held back
|
||||||
|
|
||||||
|
touch -d "10 minutes ago" "$vault/raw/articles/hot.md" # now it settles
|
||||||
|
run bash "$SCRIPT" "$g"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
files
|
||||||
|
grep -q 'raw/articles/hot.md' "${BATS_TEST_TMPDIR}/f.txt" # now committed
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "raw-commit: noop with held count while everything is still settling" {
|
||||||
|
command -v jq >/dev/null 2>&1 || skip "jq not installed"
|
||||||
|
echo "typing" > "$vault/raw/articles/wip.md" # fresh -> hot
|
||||||
|
run bash "$SCRIPT" "$g"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
echo "$output" | jq -e '.status=="noop"'
|
||||||
|
echo "$output" | jq -e '.held==1'
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "raw-commit: a deletion is committed immediately (not subject to the quiet window)" {
|
||||||
|
command -v jq >/dev/null 2>&1 || skip "jq not installed"
|
||||||
|
# commit a settled file first
|
||||||
|
echo done > "$vault/raw/articles/old.md"; touch -d "10 minutes ago" "$vault/raw/articles/old.md"
|
||||||
|
run bash "$SCRIPT" "$g"; [ "$status" -eq 0 ]
|
||||||
|
files; grep -q 'raw/articles/old.md' "${BATS_TEST_TMPDIR}/f.txt"
|
||||||
|
# now delete it -> should commit the removal even though "just changed"
|
||||||
|
rm "$vault/raw/articles/old.md"
|
||||||
|
run bash "$SCRIPT" "$g"
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
echo "$output" | jq -e '.status=="ok"'
|
||||||
|
files; ! grep -q 'raw/articles/old.md' "${BATS_TEST_TMPDIR}/f.txt"
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue