diff options
| author | Danilo M. <danix@danix.xyz> | 2026-06-19 09:43:06 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-06-19 09:43:06 +0200 |
| commit | 7ebcb618a151c5d80060b2a34fed9564563cd681 (patch) | |
| tree | 3ccb1442ecac7d9a169f794549337fd3b01e9d70 /tests/mkhint_test.sh | |
| parent | 942f2fe96bcfdba0b709cc5dded3852d4c5ed239 (diff) | |
| download | mkhintfile-7ebcb618a151c5d80060b2a34fed9564563cd681.tar.gz mkhintfile-7ebcb618a151c5d80060b2a34fed9564563cd681.zip | |
feat: add -R/--review loop with side-by-side diff and keep/delete prompt
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'tests/mkhint_test.sh')
| -rwxr-xr-x | tests/mkhint_test.sh | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/mkhint_test.sh b/tests/mkhint_test.sh index e435eff..e95b529 100755 --- a/tests/mkhint_test.sh +++ b/tests/mkhint_test.sh @@ -775,6 +775,69 @@ echo "$out" | grep "clion.hint" | grep -q $'\033\[33m' \ && { echo " FAIL: clion wrongly highlighted"; (( FAIL++ )); ERRORS+=("T36 false hl"); } \ || { echo " PASS: clion row plain"; (( PASS++ )); } +# ── T37: -R delete a matched hint ───────────────────────────────────────────── +echo "" +echo "T37: -R answer D → matched hint and .bak removed" +rm -f "$MOCK_HINT"/*.hint "$MOCK_HINT"/*.bak 2>/dev/null +cat > "$MOCK_HINT/curl.hint" << 'EOF' +VERSION="8.5.0" +ARCH="x86_64" +DOWNLOAD="https://curl.se/download/curl-8.5.0.tar.gz" +MD5SUM="abc123def456abc123def456abc123de" +EOF +touch "$MOCK_HINT/curl.hint.bak" +out=$(run_mkhint -R < <(printf 'D\n') 2>&1) +assert_file_not_exists "curl hint deleted" "$MOCK_HINT/curl.hint" +assert_file_not_exists "curl bak deleted" "$MOCK_HINT/curl.hint.bak" +echo "$out" | grep -q "deleted 1" \ + && { echo " PASS: summary reports deleted 1"; (( PASS++ )); } \ + || { echo " FAIL: summary wrong"; echo "$out" | sed 's/^/ /'; (( FAIL++ )); ERRORS+=("T37 summary"); } + +# ── T38: -R keep a matched hint ─────────────────────────────────────────────── +echo "" +echo "T38: -R answer K → matched hint unchanged" +rm -f "$MOCK_HINT"/*.hint "$MOCK_HINT"/*.bak 2>/dev/null +cat > "$MOCK_HINT/curl.hint" << 'EOF' +VERSION="8.5.0" +ARCH="x86_64" +DOWNLOAD="https://curl.se/download/curl-8.5.0.tar.gz" +MD5SUM="abc123def456abc123def456abc123de" +EOF +run_mkhint -R < <(printf 'K\n') >/dev/null 2>&1 +assert_file_exists "curl hint kept" "$MOCK_HINT/curl.hint" + +# ── T39: -R empty answer = keep ─────────────────────────────────────────────── +echo "" +echo "T39: -R empty answer → kept (default)" +run_mkhint -R < <(printf '\n') >/dev/null 2>&1 +assert_file_exists "curl hint kept on empty" "$MOCK_HINT/curl.hint" + +# ── T40: -R skip a matched hint ─────────────────────────────────────────────── +echo "" +echo "T40: -R answer S → matched hint unchanged" +run_mkhint -R < <(printf 'S\n') >/dev/null 2>&1 +assert_file_exists "curl hint kept on skip" "$MOCK_HINT/curl.hint" + +# ── T41: -R with no matches → nothing to review, exit 0 ─────────────────────── +echo "" +echo "T41: -R no matched rows → nothing to review" +rm -f "$MOCK_HINT"/*.hint "$MOCK_HINT"/*.bak 2>/dev/null +# clion hint version differs from its .info → no match +cat > "$MOCK_HINT/clion.hint" << 'EOF' +VERSION="9.9.9" +ARCH="x86_64" +DOWNLOAD="UNSUPPORTED" +MD5SUM="" +EOF +set +e +out=$(run_mkhint -R < <(printf '\n') 2>&1) +code=$? +set -e +assert_exit_code "no-match review exits 0" 0 "$code" +echo "$out" | grep -q "nothing to review" \ + && { echo " PASS: nothing-to-review message"; (( PASS++ )); } \ + || { echo " FAIL: message missing"; echo "$out" | sed 's/^/ /'; (( FAIL++ )); ERRORS+=("T41 msg"); } + # ─── SUMMARY ────────────────────────────────────────────────────────────────── teardown |
