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