From b684062f889ae71f5887d04788b7c5d2afba720e Mon Sep 17 00:00:00 2001 From: "Stephen P. Smith" Date: Mon, 22 Oct 2018 20:53:37 -0700 Subject: [PATCH 1/5] t2000: rename and combine checkout clash tests In an earlier patch some tests scripts were renamed and a naming convention was documented. [1] Merge t2000-checkout-cache-clash.sh and t2001-checkout-cache-clash.sh into t2000-conflict-when-checking-files-out.sh. [1] f50c9f76c ("Rename some test scripts and describe the naming convention", 2005-05-15) Signed-off-by: Stephen P. Smith Signed-off-by: Junio C Hamano --- t/t2000-checkout-cache-clash.sh | 60 --------- t/t2000-conflict-when-checking-files-out.sh | 135 ++++++++++++++++++++ t/t2001-checkout-cache-clash.sh | 85 ------------ 3 files changed, 135 insertions(+), 145 deletions(-) delete mode 100755 t/t2000-checkout-cache-clash.sh create mode 100755 t/t2000-conflict-when-checking-files-out.sh delete mode 100755 t/t2001-checkout-cache-clash.sh diff --git a/t/t2000-checkout-cache-clash.sh b/t/t2000-checkout-cache-clash.sh deleted file mode 100755 index de3edb5d57..0000000000 --- a/t/t2000-checkout-cache-clash.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2005 Junio C Hamano -# - -test_description='git checkout-index test. - -This test registers the following filesystem structure in the -cache: - - path0 - a file - path1/file1 - a file in a directory - -And then tries to checkout in a work tree that has the following: - - path0/file0 - a file in a directory - path1 - a file - -The git checkout-index command should fail when attempting to checkout -path0, finding it is occupied by a directory, and path1/file1, finding -path1 is occupied by a non-directory. With "-f" flag, it should remove -the conflicting paths and succeed. -' -. ./test-lib.sh - -date >path0 -mkdir path1 -date >path1/file1 - -test_expect_success \ - 'git update-index --add various paths.' \ - 'git update-index --add path0 path1/file1' - -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 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 SYMLINKS 'checkout-index -f twice with --prefix' ' - mkdir -p tar/get && - ln -s tar/get there && - echo first && - git checkout-index -a -f --prefix=there/ && - echo second && - git checkout-index -a -f --prefix=there/ -' - -test_done diff --git a/t/t2000-conflict-when-checking-files-out.sh b/t/t2000-conflict-when-checking-files-out.sh new file mode 100755 index 0000000000..f18616ad2b --- /dev/null +++ b/t/t2000-conflict-when-checking-files-out.sh @@ -0,0 +1,135 @@ +#!/bin/sh +# +# Copyright (c) 2005 Junio C Hamano +# + +test_description='git conflicts when checking files out test.' + +# The first test registers the following filesystem structure in the +# cache: +# +# path0 - a file +# path1/file1 - a file in a directory +# +# And then tries to checkout in a work tree that has the following: +# +# path0/file0 - a file in a directory +# path1 - a file +# +# The git checkout-index command should fail when attempting to checkout +# path0, finding it is occupied by a directory, and path1/file1, finding +# path1 is occupied by a non-directory. With "-f" flag, it should remove +# the conflicting paths and succeed. + +. ./test-lib.sh + +show_files() { + # show filesystem files, just [-dl] for type and name + find path? -ls | + sed -e 's/^[0-9]* * [0-9]* * \([-bcdl]\)[^ ]* *[0-9]* *[^ ]* *[^ ]* *[0-9]* [A-Z][a-z][a-z] [0-9][0-9] [^ ]* /fs: \1 /' + # what's in the cache, just mode and name + git ls-files --stage | + sed -e 's/^\([0-9]*\) [0-9a-f]* [0-3] /ca: \1 /' + # what's in the tree, just mode and name. + git ls-tree -r "$1" | + sed -e 's/^\([0-9]*\) [^ ]* [0-9a-f]* /tr: \1 /' +} + +date >path0 +mkdir path1 +date >path1/file1 + +test_expect_success \ + 'git update-index --add various paths.' \ + 'git update-index --add path0 path1/file1' + +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 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 SYMLINKS 'checkout-index -f twice with --prefix' ' + mkdir -p tar/get && + ln -s tar/get there && + echo first && + git checkout-index -a -f --prefix=there/ && + echo second && + git checkout-index -a -f --prefix=there/ +' + +# The second test registers the following filesystem structure in the cache: +# +# path2/file0 - a file in a directory +# path3/file1 - a file in a directory +# +# and attempts to check it out when the work tree has: +# +# path2/file0 - a file in a directory +# path3 - a symlink pointing at "path2" +# +# Checkout cache should fail to extract path3/file1 because the leading +# 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_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_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_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_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_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_done diff --git a/t/t2001-checkout-cache-clash.sh b/t/t2001-checkout-cache-clash.sh deleted file mode 100755 index 1fc8e634b7..0000000000 --- a/t/t2001-checkout-cache-clash.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2005 Junio C Hamano -# - -test_description='git checkout-index test. - -This test registers the following filesystem structure in the cache: - - path0/file0 - a file in a directory - path1/file1 - a file in a directory - -and attempts to check it out when the work tree has: - - path0/file0 - a file in a directory - path1 - a symlink pointing at "path0" - -Checkout cache should fail to extract path1/file1 because the leading -path path1 is occupied by a non-directory. With "-f" it should remove -the symlink path1 and create directory path1 and file path1/file1. -' -. ./test-lib.sh - -show_files() { - # show filesystem files, just [-dl] for type and name - find path? -ls | - sed -e 's/^[0-9]* * [0-9]* * \([-bcdl]\)[^ ]* *[0-9]* *[^ ]* *[^ ]* *[0-9]* [A-Z][a-z][a-z] [0-9][0-9] [^ ]* /fs: \1 /' - # what's in the cache, just mode and name - git ls-files --stage | - sed -e 's/^\([0-9]*\) [0-9a-f]* [0-3] /ca: \1 /' - # what's in the tree, just mode and name. - git ls-tree -r "$1" | - sed -e 's/^\([0-9]*\) [^ ]* [0-9a-f]* /tr: \1 /' -} - -mkdir path0 -date >path0/file0 -test_expect_success \ - 'git update-index --add path0/file0' \ - 'git update-index --add path0/file0' -test_expect_success \ - 'writing tree out with git write-tree' \ - 'tree1=$(git write-tree)' -test_debug 'show_files $tree1' - -mkdir path1 -date >path1/file1 -test_expect_success \ - 'git update-index --add path1/file1' \ - 'git update-index --add path1/file1' -test_expect_success \ - 'writing tree out with git write-tree' \ - 'tree2=$(git write-tree)' -test_debug 'show_files $tree2' - -rm -fr path1 -test_expect_success \ - 'read previously written tree and checkout.' \ - '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 path0 path1' -test_expect_success \ - 'writing tree out with git write-tree' \ - '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_debug 'show_files $tree2' - -test_expect_success \ - 'checking out conflicting path with -f' \ - 'test ! -h path0 && test -d path0 && - test ! -h path1 && test -d path1 && - test ! -h path0/file0 && test -f path0/file0 && - test ! -h path1/file1 && test -f path1/file1' - -test_done From 4625540df8f1959f4d52f8e5cd0fd4677875e855 Mon Sep 17 00:00:00 2001 From: "Stephen P. Smith" Date: Mon, 22 Oct 2018 20:53:38 -0700 Subject: [PATCH 2/5] t7509: cleanup description and filename Rename test and update the test description to explicitly state that included tests all relate to commit authorship. The t7509-commit.sh file was not renamed when other scripts were updated in compliance with the test naming convention. [1] f50c9f76c ("Rename some test scripts and describe the naming convention", 2005-05-15) Signed-off-by: Stephen P. Smith Signed-off-by: Junio C Hamano --- t/{t7509-commit.sh => t7509-commit-authorship.sh} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename t/{t7509-commit.sh => t7509-commit-authorship.sh} (98%) diff --git a/t/t7509-commit.sh b/t/t7509-commit-authorship.sh similarity index 98% rename from t/t7509-commit.sh rename to t/t7509-commit-authorship.sh index ddef7ea6b0..500ab2fe72 100755 --- a/t/t7509-commit.sh +++ b/t/t7509-commit-authorship.sh @@ -3,7 +3,7 @@ # Copyright (c) 2009 Erick Mattos # -test_description='git commit --reset-author' +test_description='commit tests of various authorhip options. ' . ./test-lib.sh From 53f684e2645b7c96ca5b52f6ce7f6144914a2f18 Mon Sep 17 00:00:00 2001 From: "Stephen P. Smith" Date: Mon, 22 Oct 2018 20:53:39 -0700 Subject: [PATCH 3/5] t7502: rename commit test script to comply with naming convention When the test naming convention was documented[1] the commit script was not renamed. The test description for t7502 indicates that the test file is to contain porcelain type options for the commit command. The tests don't fall into a single category. There are tests for cleanup, sign-off, multiple message options, etc. Rename the t7502-commit.sh to t7502-commit-porcelain.sh which reflects the high level nature and usage of the options to commit. [1] f50c9f76c ("Rename some test scripts and describe the naming convention", 2005-05-15) Signed-off-by: Stephen P. Smith Signed-off-by: Junio C Hamano --- t/{t7502-commit.sh => t7502-commit-porcelain.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename t/{t7502-commit.sh => t7502-commit-porcelain.sh} (100%) diff --git a/t/t7502-commit.sh b/t/t7502-commit-porcelain.sh similarity index 100% rename from t/t7502-commit.sh rename to t/t7502-commit-porcelain.sh From ea6cff84442dab363b588bac511f4fbc293673a0 Mon Sep 17 00:00:00 2001 From: "Stephen P. Smith" Date: Mon, 22 Oct 2018 20:53:40 -0700 Subject: [PATCH 4/5] t7500: rename commit tests script to comply with naming convention When the test naming convention was documented[1] the commit script was not renamed. Update the test description to note that the tests fall into four general categories: template, sign-off, -F and squash tests. Chose to not add "File" to the new script name as that did not seem to convey the current test contents for that switch. [1] f50c9f76c ("Rename some test scripts and describe the naming convention", 2005-05-15) Signed-off-by: Stephen P. Smith Signed-off-by: Junio C Hamano --- t/{t7500-commit.sh => t7500-commit-template-squash-signoff.sh} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename t/{t7500-commit.sh => t7500-commit-template-squash-signoff.sh} (99%) diff --git a/t/t7500-commit.sh b/t/t7500-commit-template-squash-signoff.sh similarity index 99% rename from t/t7500-commit.sh rename to t/t7500-commit-template-squash-signoff.sh index 31ab608b67..46a5cd4b73 100755 --- a/t/t7500-commit.sh +++ b/t/t7500-commit-template-squash-signoff.sh @@ -5,7 +5,7 @@ test_description='git commit -Tests for selected commit options.' +Tests for template, signoff, squash and -F functions.' . ./test-lib.sh From 83af35e37e8e070eaa02d716bfd7db88f0d93220 Mon Sep 17 00:00:00 2001 From: "Stephen P. Smith" Date: Mon, 22 Oct 2018 20:53:41 -0700 Subject: [PATCH 5/5] t7501: rename commit test to comply with naming convention The naming convention was documented [1] but this script was not renamed. The original commit message indicates the script tests basic commit functionality. Clean up the test name by changing the file name to specify the intent as documented in the initial commit. [1] f50c9f76c ("Rename some test scripts and describe the naming convention", 2005-05-15) Signed-off-by: Stephen P. Smith Signed-off-by: Junio C Hamano --- t/{t7501-commit.sh => t7501-commit-basic-functionality.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename t/{t7501-commit.sh => t7501-commit-basic-functionality.sh} (100%) diff --git a/t/t7501-commit.sh b/t/t7501-commit-basic-functionality.sh similarity index 100% rename from t/t7501-commit.sh rename to t/t7501-commit-basic-functionality.sh