|  | #!/bin/sh | 
|  |  | 
|  | test_description='rebase behavior when on-disk files are broken' | 
|  |  | 
|  | TEST_PASSES_SANITIZE_LEAK=true | 
|  | . ./test-lib.sh | 
|  |  | 
|  | test_expect_success 'set up conflicting branches' ' | 
|  | test_commit base file && | 
|  | git checkout -b branch1 && | 
|  | test_commit one file && | 
|  | git checkout -b branch2 HEAD^ && | 
|  | test_commit two file | 
|  | ' | 
|  |  | 
|  | create_conflict () { | 
|  | test_when_finished "git rebase --abort" && | 
|  | git checkout -B tmp branch2 && | 
|  | test_must_fail git rebase branch1 | 
|  | } | 
|  |  | 
|  | check_resolve_fails () { | 
|  | echo resolved >file && | 
|  | git add file && | 
|  | test_must_fail git rebase --continue | 
|  | } | 
|  |  | 
|  | for item in NAME EMAIL DATE | 
|  | do | 
|  | test_expect_success "detect missing GIT_AUTHOR_$item" ' | 
|  | create_conflict && | 
|  |  | 
|  | grep -v $item .git/rebase-merge/author-script >tmp && | 
|  | mv tmp .git/rebase-merge/author-script && | 
|  |  | 
|  | check_resolve_fails | 
|  | ' | 
|  | done | 
|  |  | 
|  | for item in NAME EMAIL DATE | 
|  | do | 
|  | test_expect_success "detect duplicate GIT_AUTHOR_$item" ' | 
|  | create_conflict && | 
|  |  | 
|  | grep -i $item .git/rebase-merge/author-script >tmp && | 
|  | cat tmp >>.git/rebase-merge/author-script && | 
|  |  | 
|  | check_resolve_fails | 
|  | ' | 
|  | done | 
|  |  | 
|  | test_expect_success 'unknown key in author-script' ' | 
|  | create_conflict && | 
|  |  | 
|  | echo "GIT_AUTHOR_BOGUS=${SQ}whatever${SQ}" \ | 
|  | >>.git/rebase-merge/author-script && | 
|  |  | 
|  | check_resolve_fails | 
|  | ' | 
|  |  | 
|  | test_done |