t2000: consolidate second scenario into a single test block

The second test scenario in t2000 consists of several fragmented test_expect_success blocks that handle data setup, tree writes, execution of git-checkout-index, and final state validation. Consolidate these nine separate blocks into a single self-contained test block. This follows the modern Git testing standard where setup, execution, and validation of a single logical scenario are kept together. As a result of this consolidation, the show_files() helper and its associated test_debug calls are no longer used and have been removed. This also removes a dependency on the non-portable 'find -ls' command. Helped-by: Karthik Nayak <karthik.188@gmail.com> Helped-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Zakariyah Ali <zakariyahali100@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Zakariyah Ali committed Apr 29, 2026 at 11:36 UTC 4a9e0972280d821990a672a11465f90cef60dfae
1 file changed +8 -57
t/t2000-conflict-when-checking-files-out.sh
+8 -57
@@ -23,17 +23,6 @@ test_description='git conflicts when checking files out test.'
23
24 . ./test-lib.sh
25
26 -show_files() {
27 - # show filesystem files, just [-dl] for type and name
28 - find path? -ls |
29 - sed -e 's/^[0-9]* * [0-9]* * \([-bcdl]\)[^ ]* *[0-9]* *[^ ]* *[^ ]* *[0-9]* [A-Z][a-z][a-z] [0-9][0-9] [^ ]* /fs: \1 /'
30 - # what's in the cache, just mode and name
31 - git ls-files --stage |
32 - sed -e 's/^\([0-9]*\) [0-9a-f]* [0-3] /ca: \1 /'
33 - # what's in the tree, just mode and name.
34 - git ls-tree -r "$1" |
35 - sed -e 's/^\([0-9]*\) [^ ]* [0-9a-f]* /tr: \1 /'
36 -}
26
27 test_expect_success 'prepare files path0 and path1/file1' '
28 date >path0 &&
@@ -83,59 +72,21 @@ test_expect_success SYMLINKS 'checkout-index -f twice with --prefix' '
72 # path path3 is occupied by a non-directory. With "-f" it should remove
73 # the symlink path3 and create directory path3 and file path3/file1.
74
86 -test_expect_success 'prepare path2/file0 and index' '
75 +test_expect_success 'checkout-index -f resolves symlink conflict on leading path' '
76 mkdir path2 &&
77 date >path2/file0 &&
89 - git update-index --add path2/file0
90 -'
91 -
92 -test_expect_success 'write tree with path2/file0' '
93 - tree1=$(git write-tree)
94 -'
95 -
96 -test_debug 'show_files $tree1'
97 -
98 -test_expect_success 'prepare path3/file1 and index' '
78 + git update-index --add path2/file0 &&
79 + tree1=$(git write-tree) &&
80 mkdir path3 &&
81 date >path3/file1 &&
101 - git update-index --add path3/file1
102 -'
103 -
104 -test_expect_success 'write tree with path3/file1' '
105 - tree2=$(git write-tree)
106 -'
107 -
108 -test_debug 'show_files $tree2'
109 -
110 -test_expect_success 'read previously written tree and checkout.' '
82 + git update-index --add path3/file1 &&
83 + tree2=$(git write-tree) &&
84 rm -fr path3 &&
85 git read-tree -m $tree1 &&
113 - git checkout-index -f -a
114 -'
115 -
116 -test_debug 'show_files $tree1'
117 -
118 -test_expect_success 'add a symlink' '
119 - test_ln_s_add path2 path3
120 -'
121 -
122 -test_expect_success 'write tree with symlink path3' '
123 - tree3=$(git write-tree)
124 -'
125 -
126 -test_debug 'show_files $tree3'
127 -
128 -# Morten says "Got that?" here.
129 -# Test begins.
130 -
131 -test_expect_success 'read previously written tree and checkout.' '
86 + git checkout-index -f -a &&
87 + test_ln_s_add path2 path3 &&
88 git read-tree $tree2 &&
133 - git checkout-index -f -a
134 -'
135 -
136 -test_debug 'show_files $tree2'
137 -
138 -test_expect_success 'checking out conflicting path with -f' '
89 + git checkout-index -f -a &&
90 test_path_is_dir_not_symlink path2 &&
91 test_path_is_dir_not_symlink path3 &&
92 test_path_is_file_not_symlink path2/file0 &&