You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.0 KiB
90 lines
2.0 KiB
#!/bin/sh |
|
|
|
test_description='apply same filename' |
|
|
|
. ./test-lib.sh |
|
|
|
modify () { |
|
sed -e "$1" < "$2" > "$2".x && |
|
mv "$2".x "$2" |
|
} |
|
|
|
test_expect_success setup ' |
|
for i in a b c d e f g h i j k l m |
|
do |
|
echo $i |
|
done >same_fn && |
|
cp same_fn other_fn && |
|
git add same_fn other_fn && |
|
git commit -m initial |
|
' |
|
test_expect_success 'apply same filename with independent changes' ' |
|
modify "s/^d/z/" same_fn && |
|
git diff > patch0 && |
|
git add same_fn && |
|
modify "s/^i/y/" same_fn && |
|
git diff >> patch0 && |
|
cp same_fn same_fn2 && |
|
git reset --hard && |
|
git apply patch0 && |
|
diff same_fn same_fn2 |
|
' |
|
|
|
test_expect_success 'apply same filename with overlapping changes' ' |
|
git reset --hard |
|
modify "s/^d/z/" same_fn && |
|
git diff > patch0 && |
|
git add same_fn && |
|
modify "s/^e/y/" same_fn && |
|
git diff >> patch0 && |
|
cp same_fn same_fn2 && |
|
git reset --hard && |
|
git apply patch0 && |
|
diff same_fn same_fn2 |
|
' |
|
|
|
test_expect_success 'apply same new filename after rename' ' |
|
git reset --hard |
|
git mv same_fn new_fn |
|
modify "s/^d/z/" new_fn && |
|
git add new_fn && |
|
git diff -M --cached > patch1 && |
|
modify "s/^e/y/" new_fn && |
|
git diff >> patch1 && |
|
cp new_fn new_fn2 && |
|
git reset --hard && |
|
git apply --index patch1 && |
|
diff new_fn new_fn2 |
|
' |
|
|
|
test_expect_success 'apply same old filename after rename -- should fail.' ' |
|
git reset --hard |
|
git mv same_fn new_fn |
|
modify "s/^d/z/" new_fn && |
|
git add new_fn && |
|
git diff -M --cached > patch1 && |
|
git mv new_fn same_fn |
|
modify "s/^e/y/" same_fn && |
|
git diff >> patch1 && |
|
git reset --hard && |
|
test_must_fail git apply patch1 |
|
' |
|
|
|
test_expect_success 'apply A->B (rename), C->A (rename), A->A -- should pass.' ' |
|
git reset --hard |
|
git mv same_fn new_fn |
|
modify "s/^d/z/" new_fn && |
|
git add new_fn && |
|
git diff -M --cached > patch1 && |
|
git commit -m "a rename" && |
|
git mv other_fn same_fn |
|
modify "s/^e/y/" same_fn && |
|
git add same_fn && |
|
git diff -M --cached >> patch1 && |
|
modify "s/^g/x/" same_fn && |
|
git diff >> patch1 && |
|
git reset --hard HEAD^ && |
|
git apply patch1 |
|
' |
|
|
|
test_done
|
|
|