Add support for rewriting hunks if only specific lines match

This commit is contained in:
Sven van Heugten 2026-03-05 20:22:59 +01:00
parent 56d1f03c83
commit 8ebcba623e
No known key found for this signature in database
GPG key ID: D612F88666F4F660
2 changed files with 87 additions and 22 deletions

View file

@ -128,3 +128,31 @@ setup() {
assert_success
assert_output "$(cat "$BATS_TEST_TMPDIR/diff")"
}
@test "keeps only matching line in a consecutive change block" {
cat >"$BATS_TEST_TMPDIR/old" <<-'EOF'
foo
bar
baz
EOF
sed \
-e 's/foo/foo_changed/' \
-e 's/bar/bar_changed/' \
"$BATS_TEST_TMPDIR/old" >"$BATS_TEST_TMPDIR/new"
sed 's/foo/foo_changed/' "$BATS_TEST_TMPDIR/old" \
>"$BATS_TEST_TMPDIR/new_kept"
git diff --no-index "$BATS_TEST_TMPDIR/old" "$BATS_TEST_TMPDIR/new" \
>"$BATS_TEST_TMPDIR/diff_full" || true
git diff --no-index "$BATS_TEST_TMPDIR/old" "$BATS_TEST_TMPDIR/new_kept" \
>"$BATS_TEST_TMPDIR/diff_expected" || true
run mechanicaldiff.py foo foo_changed <"$BATS_TEST_TMPDIR/diff_full"
assert_failure
expected="$(sed \
-e 's/new_kept/new/g' \
-e '/^index /d' \
"$BATS_TEST_TMPDIR/diff_expected")"
output_normalized="$(printf '%s\n' "$output" | sed -e '/^index /d')"
assert_equal "$expected" "$output_normalized"
}