mechanicaldiff/test/mechanicaldiff.bats

95 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env bats
setup() {
set -euo pipefail
bats_load_library bats-support
bats_load_library bats-assert
DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")" >/dev/null 2>&1 && pwd)"
PATH="$DIR/../bin:$PATH"
}
@test "keeps hunk when replacement matches" {
printf "%s\n" "foo" >"$BATS_TEST_TMPDIR/old"
printf "%s\n" "bar" >"$BATS_TEST_TMPDIR/new"
diff_output="$(git diff --no-index "$BATS_TEST_TMPDIR/old" \
"$BATS_TEST_TMPDIR/new" || true)"
run mechanicaldiff.py foo bar <<<"$diff_output"
assert_success
assert_output "$diff_output"
}
@test "drops diff when replacement does not match" {
printf "%s\n" "foo" >"$BATS_TEST_TMPDIR/old"
printf "%s\n" "baz" >"$BATS_TEST_TMPDIR/new"
git diff --no-index "$BATS_TEST_TMPDIR/old" "$BATS_TEST_TMPDIR/new" \
>"$BATS_TEST_TMPDIR/diff" || true
run mechanicaldiff.py foo bar <"$BATS_TEST_TMPDIR/diff"
assert_failure
assert_output ""
}
@test "drops one hunk and keeps another" {
cat >"$BATS_TEST_TMPDIR/old" <<-'EOF'
alpha
beta
gamma
one
two
three
four
five
six
seven
eight
nine
ten
delta
EOF
cat >"$BATS_TEST_TMPDIR/new" <<-'EOF'
alpha
beta_changed
gamma
one
two
three
four
five
six
seven
eight
nine
ten
delta_changed
EOF
cat >"$BATS_TEST_TMPDIR/new_kept" <<-'EOF'
alpha
beta_changed
gamma
one
two
three
four
five
six
seven
eight
nine
ten
delta
EOF
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 "beta" "beta_changed" <"$BATS_TEST_TMPDIR/diff_full"
assert_failure
assert_output --partial "-beta"
assert_output --partial "+beta_changed"
refute_output --partial "delta_changed"
}