Merge branch 'jl/read-tree-m-dry-run'
[git] / t / t1005-read-tree-reset.sh
1 #!/bin/sh
2
3 test_description='read-tree -u --reset'
4
5 . ./test-lib.sh
6 . "$TEST_DIRECTORY"/lib-read-tree.sh
7
8 # two-tree test
9
10 test_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
25 test_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
31 test_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 '
45
46 test_expect_success 'Porcelain reset should remove remnants too' '
47   read_tree_u_must_succeed --reset -u HEAD &&
48   git ls-files -s >expect &&
49   sha1=$(git rev-parse :new) &&
50   (
51         echo "100644 $sha1 1    old"
52         echo "100644 $sha1 3    old"
53   ) | git update-index --index-info &&
54   >old &&
55   git ls-files -s &&
56   git reset --hard &&
57   git ls-files -s >actual &&
58   ! test -f old
59 '
60
61 test_expect_success 'Porcelain checkout -f should remove remnants too' '
62   read_tree_u_must_succeed --reset -u HEAD &&
63   git ls-files -s >expect &&
64   sha1=$(git rev-parse :new) &&
65   (
66         echo "100644 $sha1 1    old"
67         echo "100644 $sha1 3    old"
68   ) | git update-index --index-info &&
69   >old &&
70   git ls-files -s &&
71   git checkout -f &&
72   git ls-files -s >actual &&
73   ! test -f old
74 '
75
76 test_expect_success 'Porcelain checkout -f HEAD should remove remnants too' '
77   read_tree_u_must_succeed --reset -u HEAD &&
78   git ls-files -s >expect &&
79   sha1=$(git rev-parse :new) &&
80   (
81         echo "100644 $sha1 1    old"
82         echo "100644 $sha1 3    old"
83   ) | git update-index --index-info &&
84   >old &&
85   git ls-files -s &&
86   git checkout -f HEAD &&
87   git ls-files -s >actual &&
88   ! test -f old
89 '
90
91 test_done