#!/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 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