]> git.ipfire.org Git - thirdparty/git.git/blame - t/t1005-read-tree-reset.sh
The third batch
[thirdparty/git.git] / t / t1005-read-tree-reset.sh
CommitLineData
50753d00
JK
1#!/bin/sh
2
3test_description='read-tree -u --reset'
4
9081a421 5TEST_PASSES_SANITIZE_LEAK=true
50753d00 6. ./test-lib.sh
ea5070c9 7. "$TEST_DIRECTORY"/lib-read-tree.sh
50753d00
JK
8
9# two-tree test
10
11test_expect_success 'setup' '
76da5b1d
JH
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
50753d00
JK
24'
25
34110cd4 26test_expect_success 'reset should work' '
76da5b1d
JH
27 read_tree_u_must_succeed -u --reset HEAD^ &&
28 git ls-files >actual &&
29 test_cmp expect actual
50753d00
JK
30'
31
d1a43f2a 32test_expect_success 'reset should remove remnants from a failed merge' '
76da5b1d
JH
33 read_tree_u_must_succeed --reset -u HEAD &&
34 git ls-files -s >expect &&
35 sha1=$(git rev-parse :new) &&
36 (
f2deabfc 37 echo "100644 $sha1 1 old" &&
76da5b1d
JH
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 &&
8fc184c0
AR
44 ! test -f old &&
45 test_cmp expect actual
d1a43f2a
JH
46'
47
77b43cac
JH
48test_expect_success 'two-way reset should remove remnants too' '
49 read_tree_u_must_succeed --reset -u HEAD &&
50 git ls-files -s >expect &&
51 sha1=$(git rev-parse :new) &&
52 (
f2deabfc 53 echo "100644 $sha1 1 old" &&
77b43cac
JH
54 echo "100644 $sha1 3 old"
55 ) | git update-index --index-info &&
56 >old &&
57 git ls-files -s &&
58 read_tree_u_must_succeed --reset -u HEAD HEAD &&
59 git ls-files -s >actual &&
8fc184c0
AR
60 ! test -f old &&
61 test_cmp expect actual
77b43cac
JH
62'
63
d1a43f2a 64test_expect_success 'Porcelain reset should remove remnants too' '
76da5b1d
JH
65 read_tree_u_must_succeed --reset -u HEAD &&
66 git ls-files -s >expect &&
67 sha1=$(git rev-parse :new) &&
68 (
f2deabfc 69 echo "100644 $sha1 1 old" &&
76da5b1d
JH
70 echo "100644 $sha1 3 old"
71 ) | git update-index --index-info &&
72 >old &&
73 git ls-files -s &&
74 git reset --hard &&
75 git ls-files -s >actual &&
8fc184c0
AR
76 ! test -f old &&
77 test_cmp expect actual
d1a43f2a
JH
78'
79
80test_expect_success 'Porcelain checkout -f should remove remnants too' '
76da5b1d
JH
81 read_tree_u_must_succeed --reset -u HEAD &&
82 git ls-files -s >expect &&
83 sha1=$(git rev-parse :new) &&
84 (
f2deabfc 85 echo "100644 $sha1 1 old" &&
76da5b1d
JH
86 echo "100644 $sha1 3 old"
87 ) | git update-index --index-info &&
88 >old &&
89 git ls-files -s &&
90 git checkout -f &&
91 git ls-files -s >actual &&
8fc184c0
AR
92 ! test -f old &&
93 test_cmp expect actual
d1a43f2a
JH
94'
95
96test_expect_success 'Porcelain checkout -f HEAD should remove remnants too' '
76da5b1d
JH
97 read_tree_u_must_succeed --reset -u HEAD &&
98 git ls-files -s >expect &&
99 sha1=$(git rev-parse :new) &&
100 (
f2deabfc 101 echo "100644 $sha1 1 old" &&
76da5b1d
JH
102 echo "100644 $sha1 3 old"
103 ) | git update-index --index-info &&
104 >old &&
105 git ls-files -s &&
106 git checkout -f HEAD &&
107 git ls-files -s >actual &&
8fc184c0
AR
108 ! test -f old &&
109 test_cmp expect actual
d1a43f2a
JH
110'
111
50753d00 112test_done