t2000: modernise overall structure

This test script that dates back to 2005 certainly shows its age and
both its style and the way the tests are laid out do not match the
modern standard.

 * Executables that prepare the data used to test the command should
   be inside the test_expect_success block in modern tests.

 * In modern tests, running a command that is being tested, making
   sure it succeeds, and inspecting other side effects that are
   expected, are all done in a single test_expect_success block.

 * A test_expect_success block in modern tests are laid out as

        test_expect_success 'title of the test' '
                body of the test &&
                ...
                body of the test
        '

   not as

        test_expect_success \
                'title of the test' \
                'body of the test &&
                ...
                body of the test'

   which is in a prehistoric style.

 * In modern tests, each &&-chained statement in the body of the
   test_expect_success block are indented with a horizontal tab,
   unlike prehistoric style that used 4-space indent.

Signed-off-by: Zakariyah Ali <zakariyahali100@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Zakariyah Ali 2026-03-28 00:40:19 +01:00 committed by Junio C Hamano
parent 67ad42147a
commit d8e34f971b
1 changed files with 66 additions and 56 deletions

View File

@ -35,30 +35,30 @@ show_files() {
sed -e 's/^\([0-9]*\) [^ ]* [0-9a-f]* /tr: \1 /'
}

date >path0
mkdir path1
date >path1/file1
test_expect_success 'prepare files path0 and path1/file1' '
date >path0 &&
mkdir path1 &&
date >path1/file1 &&
git update-index --add path0 path1/file1
'

test_expect_success \
'git update-index --add various paths.' \
'git update-index --add path0 path1/file1'
test_expect_success 'prepare working tree files with D/F conflicts' '
rm -fr path0 path1 &&
mkdir path0 &&
date >path0/file0 &&
date >path1
'

rm -fr path0 path1
mkdir path0
date >path0/file0
date >path1
test_expect_success 'git checkout-index without -f should fail on conflicting work tree.' '
test_must_fail git checkout-index -a
'

test_expect_success \
'git checkout-index without -f should fail on conflicting work tree.' \
'test_must_fail git checkout-index -a'

test_expect_success \
'git checkout-index with -f should succeed.' \
'git checkout-index -f -a'

test_expect_success \
'git checkout-index conflicting paths.' \
'test -f path0 && test -d path1 && test -f path1/file1'
test_expect_success 'git checkout-index with -f should succeed.' '
git checkout-index -f -a &&
test_path_is_file path0 &&
test_path_is_dir path1 &&
test_path_is_file path1/file1
'

test_expect_success SYMLINKS 'checkout-index -f twice with --prefix' '
mkdir -p tar/get &&
@ -83,53 +83,63 @@ test_expect_success SYMLINKS 'checkout-index -f twice with --prefix' '
# path path3 is occupied by a non-directory. With "-f" it should remove
# the symlink path3 and create directory path3 and file path3/file1.

mkdir path2
date >path2/file0
test_expect_success \
'git update-index --add path2/file0' \
'git update-index --add path2/file0'
test_expect_success \
'writing tree out with git write-tree' \
'tree1=$(git write-tree)'
test_expect_success 'prepare path2/file0 and index' '
mkdir path2 &&
date >path2/file0 &&
git update-index --add path2/file0
'

test_expect_success 'write tree with path2/file0' '
tree1=$(git write-tree)
'

test_debug 'show_files $tree1'

mkdir path3
date >path3/file1
test_expect_success \
'git update-index --add path3/file1' \
'git update-index --add path3/file1'
test_expect_success \
'writing tree out with git write-tree' \
'tree2=$(git write-tree)'
test_expect_success 'prepare path3/file1 and index' '
mkdir path3 &&
date >path3/file1 &&
git update-index --add path3/file1
'

test_expect_success 'write tree with path3/file1' '
tree2=$(git write-tree)
'

test_debug 'show_files $tree2'

rm -fr path3
test_expect_success \
'read previously written tree and checkout.' \
'git read-tree -m $tree1 && git checkout-index -f -a'
test_expect_success 'read previously written tree and checkout.' '
rm -fr path3 &&
git read-tree -m $tree1 &&
git checkout-index -f -a
'

test_debug 'show_files $tree1'

test_expect_success \
'add a symlink' \
'test_ln_s_add path2 path3'
test_expect_success \
'writing tree out with git write-tree' \
'tree3=$(git write-tree)'
test_expect_success 'add a symlink' '
test_ln_s_add path2 path3
'

test_expect_success 'write tree with symlink path3' '
tree3=$(git write-tree)
'

test_debug 'show_files $tree3'

# Morten says "Got that?" here.
# Test begins.

test_expect_success \
'read previously written tree and checkout.' \
'git read-tree $tree2 && git checkout-index -f -a'
test_expect_success 'read previously written tree and checkout.' '
git read-tree $tree2 &&
git checkout-index -f -a
'

test_debug 'show_files $tree2'

test_expect_success \
'checking out conflicting path with -f' \
'test ! -h path2 && test -d path2 &&
test ! -h path3 && test -d path3 &&
test ! -h path2/file0 && test -f path2/file0 &&
test ! -h path3/file1 && test -f path3/file1'
test_expect_success 'checking out conflicting path with -f' '
test_path_is_dir_not_symlink path2 &&
test_path_is_dir_not_symlink path3 &&
test_path_is_file_not_symlink path2/file0 &&
test_path_is_file_not_symlink path3/file1
'

test_done