]> git.ipfire.org Git - thirdparty/git.git/blame - t/t7011-skip-worktree-reading.sh
Sync with 2.31.4
[thirdparty/git.git] / t / t7011-skip-worktree-reading.sh
CommitLineData
b4d1690d
NTND
1#!/bin/sh
2#
3# Copyright (c) 2008 Nguyễn Thái Ngọc Duy
4#
5
6test_description='skip-worktree bit test'
7
8. ./test-lib.sh
9
10cat >expect.full <<EOF
11H 1
12H 2
13H init.t
14H sub/1
15H sub/2
16EOF
17
18cat >expect.skip <<EOF
19S 1
20H 2
21H init.t
22S sub/1
23H sub/2
24EOF
25
b4d1690d
NTND
26setup_absent() {
27 test -f 1 && rm 1
28 git update-index --remove 1 &&
378932d3 29 git update-index --add --cacheinfo 100644 $EMPTY_BLOB 1 &&
b4d1690d
NTND
30 git update-index --skip-worktree 1
31}
32
33test_absent() {
378932d3 34 echo "100644 $EMPTY_BLOB 0 1" > expected &&
b4d1690d
NTND
35 git ls-files --stage 1 > result &&
36 test_cmp expected result &&
37 test ! -f 1
38}
39
40setup_dirty() {
41 git update-index --force-remove 1 &&
42 echo dirty > 1 &&
378932d3 43 git update-index --add --cacheinfo 100644 $EMPTY_BLOB 1 &&
b4d1690d
NTND
44 git update-index --skip-worktree 1
45}
46
47test_dirty() {
378932d3 48 echo "100644 $EMPTY_BLOB 0 1" > expected &&
b4d1690d
NTND
49 git ls-files --stage 1 > result &&
50 test_cmp expected result &&
51 echo dirty > expected
52 test_cmp expected 1
53}
54
55test_expect_success 'setup' '
56 test_commit init &&
57 mkdir sub &&
58 touch ./1 ./2 sub/1 sub/2 &&
59 git add 1 2 sub/1 sub/2 &&
60 git update-index --skip-worktree 1 sub/1 &&
61 git ls-files -t > result &&
62 test_cmp expect.skip result
63'
64
65test_expect_success 'update-index' '
66 setup_absent &&
67 git update-index 1 &&
68 test_absent
69'
70
71test_expect_success 'update-index' '
72 setup_dirty &&
73 git update-index 1 &&
74 test_dirty
75'
76
77test_expect_success 'update-index --remove' '
78 setup_absent &&
79 git update-index --remove 1 &&
80 test -z "$(git ls-files 1)" &&
81 test ! -f 1
82'
83
84test_expect_success 'update-index --remove' '
85 setup_dirty &&
86 git update-index --remove 1 &&
87 test -z "$(git ls-files 1)" &&
88 echo dirty > expected &&
89 test_cmp expected 1
90'
91
5155c7f3 92test_expect_success 'ls-files --deleted' '
b4d1690d
NTND
93 setup_absent &&
94 test -z "$(git ls-files -d)"
95'
96
5155c7f3 97test_expect_success 'ls-files --deleted' '
b4d1690d
NTND
98 setup_dirty &&
99 test -z "$(git ls-files -d)"
100'
101
102test_expect_success 'ls-files --modified' '
103 setup_absent &&
104 test -z "$(git ls-files -m)"
105'
106
107test_expect_success 'ls-files --modified' '
108 setup_dirty &&
109 test -z "$(git ls-files -m)"
110'
111
8125a58b 112echo ":000000 100644 $ZERO_OID $EMPTY_BLOB A 1" > expected
b4d1690d
NTND
113test_expect_success 'diff-index does not examine skip-worktree absent entries' '
114 setup_absent &&
115 git diff-index HEAD -- 1 > result &&
116 test_cmp expected result
117'
118
119test_expect_success 'diff-index does not examine skip-worktree dirty entries' '
120 setup_dirty &&
121 git diff-index HEAD -- 1 > result &&
122 test_cmp expected result
123'
124
125test_expect_success 'diff-files does not examine skip-worktree absent entries' '
126 setup_absent &&
127 test -z "$(git diff-files -- one)"
128'
129
130test_expect_success 'diff-files does not examine skip-worktree dirty entries' '
131 setup_dirty &&
132 test -z "$(git diff-files -- one)"
133'
134
7fce6e3c 135test_expect_success 'commit on skip-worktree absent entries' '
b4d1690d
NTND
136 git reset &&
137 setup_absent &&
138 test_must_fail git commit -m null 1
139'
140
7fce6e3c 141test_expect_success 'commit on skip-worktree dirty entries' '
b4d1690d
NTND
142 git reset &&
143 setup_dirty &&
144 test_must_fail git commit -m null 1
145'
146
147test_done