From: Nguyán ThÃi Ngác Duy <pclouds@xxxxxxxxx> While at it, also document ":" syntax. Signed-off-by: Nguyán ThÃi Ngác Duy <pclouds@xxxxxxxxx> Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- Documentation/glossary-content.txt | 3 + t/t3703-add-magic-pathspec.sh | 78 ++++++++++++++++++++++++++++++++++++ t/t4208-log-magic-pathspec.sh | 45 +++++++++++++++++++++ 3 files changed, 126 insertions(+), 0 deletions(-) create mode 100755 t/t3703-add-magic-pathspec.sh create mode 100755 t/t4208-log-magic-pathspec.sh diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt index 0ca029b..0318024 100644 --- a/Documentation/glossary-content.txt +++ b/Documentation/glossary-content.txt @@ -327,6 +327,9 @@ icase;; + It is envisioned that we will support more types of magic in later versions of git. ++ +A pathspec with only a colon means "there is no pathspec". This form +should not be combined with other pathspec. [[def_parent]]parent:: A <<def_commit_object,commit object>> contains a (possibly empty) list diff --git a/t/t3703-add-magic-pathspec.sh b/t/t3703-add-magic-pathspec.sh new file mode 100755 index 0000000..9e6708a --- /dev/null +++ b/t/t3703-add-magic-pathspec.sh @@ -0,0 +1,78 @@ +#!/bin/sh + +test_description='magic pathspec tests using git-add' + +. ./test-lib.sh + +test_expect_success 'setup' ' + mkdir sub anothersub && + : >sub/foo && + : >anothersub/foo +' + +test_expect_success 'colon alone magic should only used alone' ' + test_must_fail git add -n sub/foo : && + test_must_fail git add -n : sub/foo +' + +test_expect_success 'add :' ' + : >expected && + (cd sub && git add -n : >actual) && + test_cmp expected sub/actual +' + +test_expect_success 'add :/' " + cat >expected <<-EOF && + add 'anothersub/foo' + add 'expected' + add 'sub/actual' + add 'sub/foo' + EOF + (cd sub && git add -n :/ >actual) && + test_cmp expected sub/actual +" + +cat >expected <<EOF +add 'anothersub/foo' +EOF + +test_expect_success 'add :/anothersub' ' + (cd sub && git add -n :/anothersub >actual) && + test_cmp expected sub/actual +' + +test_expect_success 'add :/non-existent' ' + (cd sub && test_must_fail git add -n :/non-existent) +' + +cat >expected <<EOF +add 'sub/foo' +EOF + +test_expect_success 'add :(icase)foo' ' + (cd sub && git add -n ":(icase)FoO" >actual) && + test_cmp expected sub/actual +' + +test_expect_success 'a file with the same (long) magic name exists' ' + : >":(icase)ha" && + test_must_fail git add -n ":(icase)ha" 2>error && + git add -n "./:(icase)ha" +' + +cat >expected <<EOF +fatal: pathspec ':(icase)ha' did not match any files +EOF + +test_expect_failure 'show pathspecs exactly what are typed in' ' + test_cmp expected error +' + +test_expect_success 'a file with the same (short) magic name exists' ' + mkdir ":" && + : >":/bar" && + test_must_fail git add -n :/bar && + git add -n "./:/bar" +' + +test_done diff --git a/t/t4208-log-magic-pathspec.sh b/t/t4208-log-magic-pathspec.sh new file mode 100755 index 0000000..ff7f485 --- /dev/null +++ b/t/t4208-log-magic-pathspec.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +test_description='magic pathspec tests using git-log' + +. ./test-lib.sh + +test_expect_success 'setup' ' + test_commit initial && + test_tick && + git commit --allow-empty -m empty && + mkdir sub +' + +test_expect_failure '"git log :/" should be ambiguous' ' + test_must_fail git log :/ 2>error && + grep ambiguous error +' + +test_expect_failure '"git log :" should be ambiguous' ' + test_must_fail git log : 2>error && + grep ambiguous error +' + +test_expect_success 'git log -- :' ' + git log -- : +' + +test_expect_success 'git log HEAD -- :/' ' + cat >expected <<-EOF && + 24b24cf initial + EOF + (cd sub && git log --oneline HEAD -- :/ >../actual) && + test_cmp expected actual +' + +test_expect_success 'git log HEAD -- :' ' + cat >expected <<-EOF && + 41d179c empty + 24b24cf initial + EOF + (cd sub && git log --oneline HEAD -- : >../actual) && + test_cmp expected actual +' + +test_done -- 1.7.5.1.290.g1b565 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html