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.
131 lines
3.3 KiB
131 lines
3.3 KiB
#!/bin/sh |
|
# |
|
# Copyright (c) 2019 Rohit Ashiwal |
|
# |
|
|
|
test_description='tests to ensure compatibility between am and interactive backends' |
|
|
|
. ./test-lib.sh |
|
|
|
GIT_AUTHOR_DATE="1999-04-02T08:03:20+05:30" |
|
export GIT_AUTHOR_DATE |
|
|
|
# This is a special case in which both am and interactive backends |
|
# provide the same output. It was done intentionally because |
|
# both the backends fall short of optimal behaviour. |
|
test_expect_success 'setup' ' |
|
git checkout -b topic && |
|
q_to_tab >file <<-\EOF && |
|
line 1 |
|
Qline 2 |
|
line 3 |
|
EOF |
|
git add file && |
|
git commit -m "add file" && |
|
cat >file <<-\EOF && |
|
line 1 |
|
new line 2 |
|
line 3 |
|
EOF |
|
git commit -am "update file" && |
|
git tag side && |
|
test_commit commit1 foo foo1 && |
|
test_commit commit2 foo foo2 && |
|
test_commit commit3 foo foo3 && |
|
|
|
git checkout --orphan master && |
|
git rm --cached foo && |
|
rm foo && |
|
sed -e "s/^|//" >file <<-\EOF && |
|
|line 1 |
|
| line 2 |
|
|line 3 |
|
EOF |
|
git add file && |
|
git commit -m "add file" && |
|
git tag main |
|
' |
|
|
|
test_expect_success '--ignore-whitespace works with am backend' ' |
|
cat >expect <<-\EOF && |
|
line 1 |
|
new line 2 |
|
line 3 |
|
EOF |
|
test_must_fail git rebase main side && |
|
git rebase --abort && |
|
git rebase --ignore-whitespace main side && |
|
test_cmp expect file |
|
' |
|
|
|
test_expect_success '--ignore-whitespace works with interactive backend' ' |
|
cat >expect <<-\EOF && |
|
line 1 |
|
new line 2 |
|
line 3 |
|
EOF |
|
test_must_fail git rebase --merge main side && |
|
git rebase --abort && |
|
git rebase --merge --ignore-whitespace main side && |
|
test_cmp expect file |
|
' |
|
|
|
test_expect_success '--committer-date-is-author-date works with am backend' ' |
|
git commit --amend && |
|
git rebase --committer-date-is-author-date HEAD^ && |
|
git show HEAD --pretty="format:%ai" >authortime && |
|
git show HEAD --pretty="format:%ci" >committertime && |
|
test_cmp authortime committertime |
|
' |
|
|
|
test_expect_success '--committer-date-is-author-date works with interactive backend' ' |
|
git commit --amend && |
|
git rebase -i --committer-date-is-author-date HEAD^ && |
|
git show HEAD --pretty="format:%ai" >authortime && |
|
git show HEAD --pretty="format:%ci" >committertime && |
|
test_cmp authortime committertime |
|
' |
|
|
|
test_expect_success '--committer-date-is-author-date works with rebase -r' ' |
|
git checkout side && |
|
git merge --no-ff commit3 && |
|
git rebase -r --root --committer-date-is-author-date && |
|
git rev-list HEAD >rev_list && |
|
while read HASH |
|
do |
|
git show $HASH --pretty="format:%ai" >authortime |
|
git show $HASH --pretty="format:%ci" >committertime |
|
test_cmp authortime committertime |
|
done <rev_list |
|
' |
|
|
|
# Checking for +0000 in author time is enough since default |
|
# timezone is UTC, but the timezone used while committing |
|
# sets to +0530. |
|
test_expect_success '--ignore-date works with am backend' ' |
|
git commit --amend --date="$GIT_AUTHOR_DATE" && |
|
git rebase --ignore-date HEAD^ && |
|
git show HEAD --pretty="format:%ai" >authortime && |
|
grep "+0000" authortime |
|
' |
|
|
|
test_expect_success '--ignore-date works with interactive backend' ' |
|
git commit --amend --date="$GIT_AUTHOR_DATE" && |
|
git rebase --ignore-date -i HEAD^ && |
|
git show HEAD --pretty="format:%ai" >authortime && |
|
grep "+0000" authortime |
|
' |
|
|
|
test_expect_success '--ignore-date works with rebase -r' ' |
|
git checkout side && |
|
git merge --no-ff commit3 && |
|
git rebase -r --root --ignore-date && |
|
git rev-list HEAD >rev_list && |
|
while read HASH |
|
do |
|
git show $HASH --pretty="format:%ai" >authortime |
|
grep "+0000" authortime |
|
done <rev_list |
|
' |
|
|
|
test_done
|
|
|