diff options
Diffstat (limited to 'third_party/git/t/t9815-git-p4-submit-fail.sh')
-rwxr-xr-x | third_party/git/t/t9815-git-p4-submit-fail.sh | 425 |
1 files changed, 0 insertions, 425 deletions
diff --git a/third_party/git/t/t9815-git-p4-submit-fail.sh b/third_party/git/t/t9815-git-p4-submit-fail.sh deleted file mode 100755 index 9779dc0d11f3..000000000000 --- a/third_party/git/t/t9815-git-p4-submit-fail.sh +++ /dev/null @@ -1,425 +0,0 @@ -#!/bin/sh - -test_description='git p4 submit failure handling' - -. ./lib-git-p4.sh - -test_expect_success 'start p4d' ' - start_p4d -' - -test_expect_success 'init depot' ' - ( - cd "$cli" && - p4 client -o | sed "/LineEnd/s/:.*/:unix/" | p4 client -i && - echo line1 >file1 && - p4 add file1 && - p4 submit -d "line1 in file1" - ) -' - -test_expect_success 'conflict on one commit' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$cli" && - p4 open file1 && - echo line2 >>file1 && - p4 submit -d "line2 in file1" - ) && - ( - # now this commit should cause a conflict - cd "$git" && - git config git-p4.skipSubmitEdit true && - echo line3 >>file1 && - git add file1 && - git commit -m "line3 in file1 will conflict" && - test_expect_code 1 git p4 submit >out && - test_i18ngrep "No commits applied" out - ) -' - -test_expect_success 'conflict on second of two commits' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$cli" && - p4 open file1 && - echo line3 >>file1 && - p4 submit -d "line3 in file1" - ) && - ( - cd "$git" && - git config git-p4.skipSubmitEdit true && - # this commit is okay - test_commit "first_commit_okay" && - # now this submit should cause a conflict - echo line4 >>file1 && - git add file1 && - git commit -m "line4 in file1 will conflict" && - test_expect_code 1 git p4 submit >out && - test_i18ngrep "Applied only the commits" out - ) -' - -test_expect_success 'conflict on first of two commits, skip' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$cli" && - p4 open file1 && - echo line4 >>file1 && - p4 submit -d "line4 in file1" - ) && - ( - cd "$git" && - git config git-p4.skipSubmitEdit true && - # this submit should cause a conflict - echo line5 >>file1 && - git add file1 && - git commit -m "line5 in file1 will conflict" && - # but this commit is okay - test_commit "okay_commit_after_skip" && - echo s | test_expect_code 1 git p4 submit >out && - test_i18ngrep "Applied only the commits" out - ) -' - -test_expect_success 'conflict on first of two commits, quit' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$cli" && - p4 open file1 && - echo line7 >>file1 && - p4 submit -d "line7 in file1" - ) && - ( - cd "$git" && - git config git-p4.skipSubmitEdit true && - # this submit should cause a conflict - echo line8 >>file1 && - git add file1 && - git commit -m "line8 in file1 will conflict" && - # but this commit is okay - test_commit "okay_commit_after_quit" && - echo q | test_expect_code 1 git p4 submit >out && - test_i18ngrep "No commits applied" out - ) -' - -test_expect_success 'conflict cli and config options' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$git" && - git p4 submit --conflict=ask && - git p4 submit --conflict=skip && - git p4 submit --conflict=quit && - test_expect_code 2 git p4 submit --conflict=foo && - test_expect_code 2 git p4 submit --conflict && - git config git-p4.conflict foo && - test_expect_code 1 git p4 submit && - git config --unset git-p4.conflict && - git p4 submit - ) -' - -test_expect_success 'conflict on first of two commits, --conflict=skip' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$cli" && - p4 open file1 && - echo line9 >>file1 && - p4 submit -d "line9 in file1" - ) && - ( - cd "$git" && - git config git-p4.skipSubmitEdit true && - # this submit should cause a conflict - echo line10 >>file1 && - git add file1 && - git commit -m "line10 in file1 will conflict" && - # but this commit is okay - test_commit "okay_commit_after_auto_skip" && - test_expect_code 1 git p4 submit --conflict=skip >out && - test_i18ngrep "Applied only the commits" out - ) -' - -test_expect_success 'conflict on first of two commits, --conflict=quit' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$cli" && - p4 open file1 && - echo line11 >>file1 && - p4 submit -d "line11 in file1" - ) && - ( - cd "$git" && - git config git-p4.skipSubmitEdit true && - # this submit should cause a conflict - echo line12 >>file1 && - git add file1 && - git commit -m "line12 in file1 will conflict" && - # but this commit is okay - test_commit "okay_commit_after_auto_quit" && - test_expect_code 1 git p4 submit --conflict=quit >out && - test_i18ngrep "No commits applied" out - ) -' - -# -# Cleanup after submit fail, all cases. Some modifications happen -# before trying to apply the patch. Make sure these are unwound -# properly. Put each one in a diff along with something that will -# obviously conflict. Make sure it is back to normal after. -# - -test_expect_success 'cleanup edit p4 populate' ' - ( - cd "$cli" && - echo text file >text && - p4 add text && - echo text+x file >text+x && - chmod 755 text+x && - p4 add text+x && - p4 submit -d "populate p4" - ) -' - -setup_conflict() { - # clone before modifying file1 to force it to conflict - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - # ticks outside subshells - test_tick && - ( - cd "$cli" && - p4 open file1 && - echo $test_tick >>file1 && - p4 submit -d "$test_tick in file1" - ) && - test_tick && - ( - cd "$git" && - git config git-p4.skipSubmitEdit true && - # easy conflict - echo $test_tick >>file1 && - git add file1 - # caller will add more and submit - ) -} - -test_expect_success 'cleanup edit after submit fail' ' - setup_conflict && - ( - cd "$git" && - echo another line >>text && - git add text && - git commit -m "conflict" && - test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - # make sure it is not open - ! p4 fstat -T action text - ) -' - -test_expect_success 'cleanup add after submit fail' ' - setup_conflict && - ( - cd "$git" && - echo new file >textnew && - git add textnew && - git commit -m "conflict" && - test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - # make sure it is not there - # and that p4 thinks it is not added - # P4 returns 0 both for "not there but added" and - # "not there", so grep. - test_path_is_missing textnew && - p4 fstat -T action textnew 2>&1 | grep "no such file" - ) -' - -test_expect_success 'cleanup delete after submit fail' ' - setup_conflict && - ( - cd "$git" && - git rm text+x && - git commit -m "conflict" && - test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - # make sure it is there - test_path_is_file text+x && - ! p4 fstat -T action text+x - ) -' - -test_expect_success 'cleanup copy after submit fail' ' - setup_conflict && - ( - cd "$git" && - cp text text2 && - git add text2 && - git commit -m "conflict" && - git config git-p4.detectCopies true && - git config git-p4.detectCopiesHarder true && - # make sure setup is okay - git diff-tree -r -C --find-copies-harder HEAD | grep text2 | grep C100 && - test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - test_path_is_missing text2 && - p4 fstat -T action text2 2>&1 | grep "no such file" - ) -' - -test_expect_success 'cleanup rename after submit fail' ' - setup_conflict && - ( - cd "$git" && - git mv text text2 && - git commit -m "conflict" && - git config git-p4.detectRenames true && - # make sure setup is okay - git diff-tree -r -M HEAD | grep text2 | grep R100 && - test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - test_path_is_missing text2 && - p4 fstat -T action text2 2>&1 | grep "no such file" - ) -' - -# -# Cleanup after deciding not to submit during editTemplate. This -# involves unwinding more work, because files have been added, deleted -# and chmod-ed now. Same approach as above. -# - -test_expect_success 'cleanup edit after submit cancel' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$git" && - echo line >>text && - git add text && - git commit -m text && - echo n | test_expect_code 1 git p4 submit && - git reset --hard HEAD^ - ) && - ( - cd "$cli" && - ! p4 fstat -T action text && - test_cmp "$git"/text text - ) -' - -test_expect_success 'cleanup add after submit cancel' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$git" && - echo line >textnew && - git add textnew && - git commit -m textnew && - echo n | test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - test_path_is_missing textnew && - p4 fstat -T action textnew 2>&1 | grep "no such file" - ) -' - -test_expect_success 'cleanup delete after submit cancel' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$git" && - git rm text && - git commit -m "rm text" && - echo n | test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - test_path_is_file text && - ! p4 fstat -T action text - ) -' - -test_expect_success 'cleanup copy after submit cancel' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$git" && - cp text text2 && - git add text2 && - git commit -m text2 && - git config git-p4.detectCopies true && - git config git-p4.detectCopiesHarder true && - git diff-tree -r -C --find-copies-harder HEAD | grep text2 | grep C100 && - echo n | test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - test_path_is_missing text2 && - p4 fstat -T action text2 2>&1 | grep "no such file" - ) -' - -test_expect_success 'cleanup rename after submit cancel' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$git" && - git mv text text2 && - git commit -m text2 && - git config git-p4.detectRenames true && - git diff-tree -r -M HEAD | grep text2 | grep R100 && - echo n | test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - test_path_is_missing text2 && - p4 fstat -T action text2 2>&1 | grep "no such file" && - test_path_is_file text && - ! p4 fstat -T action text - ) -' - -test_expect_success 'cleanup chmod after submit cancel' ' - test_when_finished cleanup_git && - git p4 clone --dest="$git" //depot && - ( - cd "$git" && - test_chmod +x text && - test_chmod -x text+x && - git add text text+x && - git commit -m "chmod texts" && - echo n | test_expect_code 1 git p4 submit - ) && - ( - cd "$cli" && - test_path_is_file text && - ! p4 fstat -T action text && - test_path_is_file text+x && - ! p4 fstat -T action text+x && - ls -l text | egrep ^-r-- && - ls -l text+x | egrep ^-r-x - ) -' - -test_done |