Git fork
at reftables-rust 124 lines 3.0 kB view raw
1#!/bin/sh 2 3test_description='Test various callers of read_index_unmerged' 4 5. ./test-lib.sh 6 7test_expect_success 'setup modify/delete + directory/file conflict' ' 8 test_create_repo df_plus_modify_delete && 9 ( 10 cd df_plus_modify_delete && 11 12 test_write_lines a b c d e f g h >letters && 13 git add letters && 14 git commit -m initial && 15 16 git checkout -b modify && 17 # Throw in letters.txt for sorting order fun 18 # ("letters.txt" sorts between "letters" and "letters/file") 19 echo i >>letters && 20 echo "version 2" >letters.txt && 21 git add letters letters.txt && 22 git commit -m modified && 23 24 git checkout -b delete HEAD^ && 25 git rm letters && 26 mkdir letters && 27 >letters/file && 28 echo "version 1" >letters.txt && 29 git add letters letters.txt && 30 git commit -m deleted 31 ) 32' 33 34test_expect_success 'read-tree --reset cleans unmerged entries' ' 35 test_when_finished "git -C df_plus_modify_delete clean -f" && 36 test_when_finished "git -C df_plus_modify_delete reset --hard" && 37 ( 38 cd df_plus_modify_delete && 39 40 git checkout delete^0 && 41 test_must_fail git merge modify && 42 43 git read-tree --reset HEAD && 44 git ls-files -u >conflicts && 45 test_must_be_empty conflicts 46 ) 47' 48 49test_expect_success 'One reset --hard cleans unmerged entries' ' 50 test_when_finished "git -C df_plus_modify_delete clean -f" && 51 test_when_finished "git -C df_plus_modify_delete reset --hard" && 52 ( 53 cd df_plus_modify_delete && 54 55 git checkout delete^0 && 56 test_must_fail git merge modify && 57 58 git reset --hard && 59 test_path_is_missing .git/MERGE_HEAD && 60 git ls-files -u >conflicts && 61 test_must_be_empty conflicts 62 ) 63' 64 65test_expect_success 'setup directory/file conflict + simple edit/edit' ' 66 test_create_repo df_plus_edit_edit && 67 ( 68 cd df_plus_edit_edit && 69 70 test_seq 1 10 >numbers && 71 git add numbers && 72 git commit -m initial && 73 74 git checkout -b d-edit && 75 mkdir foo && 76 echo content >foo/bar && 77 git add foo && 78 echo 11 >>numbers && 79 git add numbers && 80 git commit -m "directory and edit" && 81 82 git checkout -b f-edit d-edit^1 && 83 echo content >foo && 84 git add foo && 85 echo eleven >>numbers && 86 git add numbers && 87 git commit -m "file and edit" 88 ) 89' 90 91test_expect_success 'git merge --abort succeeds despite D/F conflict' ' 92 test_when_finished "git -C df_plus_edit_edit clean -f" && 93 test_when_finished "git -C df_plus_edit_edit reset --hard" && 94 ( 95 cd df_plus_edit_edit && 96 97 git checkout f-edit^0 && 98 test_must_fail git merge d-edit^0 && 99 100 git merge --abort && 101 test_path_is_missing .git/MERGE_HEAD && 102 git ls-files -u >conflicts && 103 test_must_be_empty conflicts 104 ) 105' 106 107test_expect_success 'git am --skip succeeds despite D/F conflict' ' 108 test_when_finished "git -C df_plus_edit_edit clean -f" && 109 test_when_finished "git -C df_plus_edit_edit reset --hard" && 110 ( 111 cd df_plus_edit_edit && 112 113 git checkout f-edit^0 && 114 git format-patch -1 d-edit && 115 test_must_fail git am -3 0001*.patch && 116 117 git am --skip && 118 test_path_is_missing .git/rebase-apply && 119 git ls-files -u >conflicts && 120 test_must_be_empty conflicts 121 ) 122' 123 124test_done