]> git.ipfire.org Git - thirdparty/git.git/blob - t/t1005-read-tree-reset.sh
bisect: document command line arguments for "bisect start"
[thirdparty/git.git] / t / t1005-read-tree-reset.sh
1 #!/bin/sh
2
3 test_description='read-tree -u --reset'
4
5 TEST_PASSES_SANITIZE_LEAK=true
6 . ./test-lib.sh
7 . "$TEST_DIRECTORY"/lib-read-tree.sh
8
9 # two-tree test
10
11 test_expect_success 'setup' '
12 git init &&
13 mkdir df &&
14 echo content >df/file &&
15 git add df/file &&
16 git commit -m one &&
17 git ls-files >expect &&
18 rm -rf df &&
19 echo content >df &&
20 git add df &&
21 echo content >new &&
22 git add new &&
23 git commit -m two
24 '
25
26 test_expect_success 'reset should work' '
27 read_tree_u_must_succeed -u --reset HEAD^ &&
28 git ls-files >actual &&
29 test_cmp expect actual
30 '
31
32 test_expect_success 'reset should remove remnants from a failed merge' '
33 read_tree_u_must_succeed --reset -u HEAD &&
34 git ls-files -s >expect &&
35 sha1=$(git rev-parse :new) &&
36 (
37 echo "100644 $sha1 1 old" &&
38 echo "100644 $sha1 3 old"
39 ) | git update-index --index-info &&
40 >old &&
41 git ls-files -s &&
42 read_tree_u_must_succeed --reset -u HEAD &&
43 git ls-files -s >actual &&
44 ! test -f old
45 '
46
47 test_expect_success 'two-way reset should remove remnants too' '
48 read_tree_u_must_succeed --reset -u HEAD &&
49 git ls-files -s >expect &&
50 sha1=$(git rev-parse :new) &&
51 (
52 echo "100644 $sha1 1 old" &&
53 echo "100644 $sha1 3 old"
54 ) | git update-index --index-info &&
55 >old &&
56 git ls-files -s &&
57 read_tree_u_must_succeed --reset -u HEAD HEAD &&
58 git ls-files -s >actual &&
59 ! test -f old
60 '
61
62 test_expect_success 'Porcelain reset should remove remnants too' '
63 read_tree_u_must_succeed --reset -u HEAD &&
64 git ls-files -s >expect &&
65 sha1=$(git rev-parse :new) &&
66 (
67 echo "100644 $sha1 1 old" &&
68 echo "100644 $sha1 3 old"
69 ) | git update-index --index-info &&
70 >old &&
71 git ls-files -s &&
72 git reset --hard &&
73 git ls-files -s >actual &&
74 ! test -f old
75 '
76
77 test_expect_success 'Porcelain checkout -f should remove remnants too' '
78 read_tree_u_must_succeed --reset -u HEAD &&
79 git ls-files -s >expect &&
80 sha1=$(git rev-parse :new) &&
81 (
82 echo "100644 $sha1 1 old" &&
83 echo "100644 $sha1 3 old"
84 ) | git update-index --index-info &&
85 >old &&
86 git ls-files -s &&
87 git checkout -f &&
88 git ls-files -s >actual &&
89 ! test -f old
90 '
91
92 test_expect_success 'Porcelain checkout -f HEAD should remove remnants too' '
93 read_tree_u_must_succeed --reset -u HEAD &&
94 git ls-files -s >expect &&
95 sha1=$(git rev-parse :new) &&
96 (
97 echo "100644 $sha1 1 old" &&
98 echo "100644 $sha1 3 old"
99 ) | git update-index --index-info &&
100 >old &&
101 git ls-files -s &&
102 git checkout -f HEAD &&
103 git ls-files -s >actual &&
104 ! test -f old
105 '
106
107 test_done