95 lines
1.8 KiB
Bash
Executable file
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"
|
|
}
|