diff options
Diffstat (limited to 'third_party/git/t/t6302-for-each-ref-filter.sh')
-rwxr-xr-x | third_party/git/t/t6302-for-each-ref-filter.sh | 457 |
1 files changed, 0 insertions, 457 deletions
diff --git a/third_party/git/t/t6302-for-each-ref-filter.sh b/third_party/git/t/t6302-for-each-ref-filter.sh deleted file mode 100755 index 781e470aeafb..000000000000 --- a/third_party/git/t/t6302-for-each-ref-filter.sh +++ /dev/null @@ -1,457 +0,0 @@ -#!/bin/sh - -test_description='test for-each-refs usage of ref-filter APIs' - -. ./test-lib.sh -. "$TEST_DIRECTORY"/lib-gpg.sh - -test_expect_success 'setup some history and refs' ' - test_commit one && - test_commit two && - test_commit three && - git checkout -b side && - test_commit four && - git tag -m "An annotated tag" annotated-tag && - git tag -m "Annonated doubly" doubly-annotated-tag annotated-tag && - - # Note that these "signed" tags might not actually be signed. - # Tests which care about the distinction should be marked - # with the GPG prereq. - if test_have_prereq GPG - then - sign=-s - else - sign= - fi && - git tag $sign -m "A signed tag" signed-tag && - git tag $sign -m "Signed doubly" doubly-signed-tag signed-tag && - - git checkout master && - git update-ref refs/odd/spot master -' - -test_expect_success 'filtering with --points-at' ' - cat >expect <<-\EOF && - refs/heads/master - refs/odd/spot - refs/tags/three - EOF - git for-each-ref --format="%(refname)" --points-at=master >actual && - test_cmp expect actual -' - -test_expect_success 'check signed tags with --points-at' ' - sed -e "s/Z$//" >expect <<-\EOF && - refs/heads/side Z - refs/tags/annotated-tag four - refs/tags/four Z - refs/tags/signed-tag four - EOF - git for-each-ref --format="%(refname) %(*subject)" --points-at=side >actual && - test_cmp expect actual -' - -test_expect_success 'filtering with --merged' ' - cat >expect <<-\EOF && - refs/heads/master - refs/odd/spot - refs/tags/one - refs/tags/three - refs/tags/two - EOF - git for-each-ref --format="%(refname)" --merged=master >actual && - test_cmp expect actual -' - -test_expect_success 'filtering with --no-merged' ' - cat >expect <<-\EOF && - refs/heads/side - refs/tags/annotated-tag - refs/tags/doubly-annotated-tag - refs/tags/doubly-signed-tag - refs/tags/four - refs/tags/signed-tag - EOF - git for-each-ref --format="%(refname)" --no-merged=master >actual && - test_cmp expect actual -' - -test_expect_success 'filtering with --contains' ' - cat >expect <<-\EOF && - refs/heads/master - refs/heads/side - refs/odd/spot - refs/tags/annotated-tag - refs/tags/doubly-annotated-tag - refs/tags/doubly-signed-tag - refs/tags/four - refs/tags/signed-tag - refs/tags/three - refs/tags/two - EOF - git for-each-ref --format="%(refname)" --contains=two >actual && - test_cmp expect actual -' - -test_expect_success 'filtering with --no-contains' ' - cat >expect <<-\EOF && - refs/tags/one - EOF - git for-each-ref --format="%(refname)" --no-contains=two >actual && - test_cmp expect actual -' - -test_expect_success 'filtering with --contains and --no-contains' ' - cat >expect <<-\EOF && - refs/tags/two - EOF - git for-each-ref --format="%(refname)" --contains=two --no-contains=three >actual && - test_cmp expect actual -' - -test_expect_success '%(color) must fail' ' - test_must_fail git for-each-ref --format="%(color)%(refname)" -' - -test_expect_success 'left alignment is default' ' - cat >expect <<-\EOF && - refname is refs/heads/master |refs/heads/master - refname is refs/heads/side |refs/heads/side - refname is refs/odd/spot |refs/odd/spot - refname is refs/tags/annotated-tag|refs/tags/annotated-tag - refname is refs/tags/doubly-annotated-tag|refs/tags/doubly-annotated-tag - refname is refs/tags/doubly-signed-tag|refs/tags/doubly-signed-tag - refname is refs/tags/four |refs/tags/four - refname is refs/tags/one |refs/tags/one - refname is refs/tags/signed-tag|refs/tags/signed-tag - refname is refs/tags/three |refs/tags/three - refname is refs/tags/two |refs/tags/two - EOF - git for-each-ref --format="%(align:30)refname is %(refname)%(end)|%(refname)" >actual && - test_cmp expect actual -' - -test_expect_success 'middle alignment' ' - cat >expect <<-\EOF && - | refname is refs/heads/master |refs/heads/master - | refname is refs/heads/side |refs/heads/side - | refname is refs/odd/spot |refs/odd/spot - |refname is refs/tags/annotated-tag|refs/tags/annotated-tag - |refname is refs/tags/doubly-annotated-tag|refs/tags/doubly-annotated-tag - |refname is refs/tags/doubly-signed-tag|refs/tags/doubly-signed-tag - | refname is refs/tags/four |refs/tags/four - | refname is refs/tags/one |refs/tags/one - |refname is refs/tags/signed-tag|refs/tags/signed-tag - | refname is refs/tags/three |refs/tags/three - | refname is refs/tags/two |refs/tags/two - EOF - git for-each-ref --format="|%(align:middle,30)refname is %(refname)%(end)|%(refname)" >actual && - test_cmp expect actual -' - -test_expect_success 'right alignment' ' - cat >expect <<-\EOF && - | refname is refs/heads/master|refs/heads/master - | refname is refs/heads/side|refs/heads/side - | refname is refs/odd/spot|refs/odd/spot - |refname is refs/tags/annotated-tag|refs/tags/annotated-tag - |refname is refs/tags/doubly-annotated-tag|refs/tags/doubly-annotated-tag - |refname is refs/tags/doubly-signed-tag|refs/tags/doubly-signed-tag - | refname is refs/tags/four|refs/tags/four - | refname is refs/tags/one|refs/tags/one - |refname is refs/tags/signed-tag|refs/tags/signed-tag - | refname is refs/tags/three|refs/tags/three - | refname is refs/tags/two|refs/tags/two - EOF - git for-each-ref --format="|%(align:30,right)refname is %(refname)%(end)|%(refname)" >actual && - test_cmp expect actual -' - -cat >expect <<-\EOF -| refname is refs/heads/master |refs/heads/master -| refname is refs/heads/side |refs/heads/side -| refname is refs/odd/spot |refs/odd/spot -| refname is refs/tags/annotated-tag |refs/tags/annotated-tag -|refname is refs/tags/doubly-annotated-tag |refs/tags/doubly-annotated-tag -| refname is refs/tags/doubly-signed-tag |refs/tags/doubly-signed-tag -| refname is refs/tags/four |refs/tags/four -| refname is refs/tags/one |refs/tags/one -| refname is refs/tags/signed-tag |refs/tags/signed-tag -| refname is refs/tags/three |refs/tags/three -| refname is refs/tags/two |refs/tags/two -EOF - -test_align_permutations() { - while read -r option - do - test_expect_success "align:$option" ' - git for-each-ref --format="|%(align:$option)refname is %(refname)%(end)|%(refname)" >actual && - test_cmp expect actual - ' - done -} - -test_align_permutations <<-\EOF - middle,42 - 42,middle - position=middle,42 - 42,position=middle - middle,width=42 - width=42,middle - position=middle,width=42 - width=42,position=middle -EOF - -# Last one wins (silently) when multiple arguments of the same type are given - -test_align_permutations <<-\EOF - 32,width=42,middle - width=30,42,middle - width=42,position=right,middle - 42,right,position=middle -EOF - -# Individual atoms inside %(align:...) and %(end) must not be quoted. - -test_expect_success 'alignment with format quote' " - cat >expect <<-\EOF && - |' '\''master| A U Thor'\'' '| - |' '\''side| A U Thor'\'' '| - |' '\''odd/spot| A U Thor'\'' '| - |' '\''annotated-tag| '\'' '| - |' '\''doubly-annotated-tag| '\'' '| - |' '\''doubly-signed-tag| '\'' '| - |' '\''four| A U Thor'\'' '| - |' '\''one| A U Thor'\'' '| - |' '\''signed-tag| '\'' '| - |' '\''three| A U Thor'\'' '| - |' '\''two| A U Thor'\'' '| - EOF - git for-each-ref --shell --format=\"|%(align:30,middle)'%(refname:short)| %(authorname)'%(end)|\" >actual && - test_cmp expect actual -" - -test_expect_success 'nested alignment with quote formatting' " - cat >expect <<-\EOF && - |' master '| - |' side '| - |' odd/spot '| - |' annotated-tag '| - |'doubly-annotated-tag '| - |'doubly-signed-tag '| - |' four '| - |' one '| - |' signed-tag '| - |' three '| - |' two '| - EOF - git for-each-ref --shell --format='|%(align:30,left)%(align:15,right)%(refname:short)%(end)%(end)|' >actual && - test_cmp expect actual -" - -test_expect_success 'check `%(contents:lines=1)`' ' - cat >expect <<-\EOF && - master |three - side |four - odd/spot |three - annotated-tag |An annotated tag - doubly-annotated-tag |Annonated doubly - doubly-signed-tag |Signed doubly - four |four - one |one - signed-tag |A signed tag - three |three - two |two - EOF - git for-each-ref --format="%(refname:short) |%(contents:lines=1)" >actual && - test_cmp expect actual -' - -test_expect_success 'check `%(contents:lines=0)`' ' - cat >expect <<-\EOF && - master | - side | - odd/spot | - annotated-tag | - doubly-annotated-tag | - doubly-signed-tag | - four | - one | - signed-tag | - three | - two | - EOF - git for-each-ref --format="%(refname:short) |%(contents:lines=0)" >actual && - test_cmp expect actual -' - -test_expect_success 'check `%(contents:lines=99999)`' ' - cat >expect <<-\EOF && - master |three - side |four - odd/spot |three - annotated-tag |An annotated tag - doubly-annotated-tag |Annonated doubly - doubly-signed-tag |Signed doubly - four |four - one |one - signed-tag |A signed tag - three |three - two |two - EOF - git for-each-ref --format="%(refname:short) |%(contents:lines=99999)" >actual && - test_cmp expect actual -' - -test_expect_success '`%(contents:lines=-1)` should fail' ' - test_must_fail git for-each-ref --format="%(refname:short) |%(contents:lines=-1)" -' - -test_expect_success 'setup for version sort' ' - test_commit foo1.3 && - test_commit foo1.6 && - test_commit foo1.10 -' - -test_expect_success 'version sort' ' - git for-each-ref --sort=version:refname --format="%(refname:short)" refs/tags/ | grep "foo" >actual && - cat >expect <<-\EOF && - foo1.3 - foo1.6 - foo1.10 - EOF - test_cmp expect actual -' - -test_expect_success 'version sort (shortened)' ' - git for-each-ref --sort=v:refname --format="%(refname:short)" refs/tags/ | grep "foo" >actual && - cat >expect <<-\EOF && - foo1.3 - foo1.6 - foo1.10 - EOF - test_cmp expect actual -' - -test_expect_success 'reverse version sort' ' - git for-each-ref --sort=-version:refname --format="%(refname:short)" refs/tags/ | grep "foo" >actual && - cat >expect <<-\EOF && - foo1.10 - foo1.6 - foo1.3 - EOF - test_cmp expect actual -' - -test_expect_success 'improper usage of %(if), %(then), %(else) and %(end) atoms' ' - test_must_fail git for-each-ref --format="%(if)" && - test_must_fail git for-each-ref --format="%(then) %(end)" && - test_must_fail git for-each-ref --format="%(else) %(end)" && - test_must_fail git for-each-ref --format="%(if) %(else) %(end)" && - test_must_fail git for-each-ref --format="%(if) %(then) %(then) %(end)" && - test_must_fail git for-each-ref --format="%(then) %(else) %(end)" && - test_must_fail git for-each-ref --format="%(if) %(else) %(end)" && - test_must_fail git for-each-ref --format="%(if) %(then) %(else)" && - test_must_fail git for-each-ref --format="%(if) %(else) %(then) %(end)" && - test_must_fail git for-each-ref --format="%(if) %(then) %(else) %(else) %(end)" && - test_must_fail git for-each-ref --format="%(if) %(end)" -' - -test_expect_success 'check %(if)...%(then)...%(end) atoms' ' - git for-each-ref --format="%(refname)%(if)%(authorname)%(then) Author: %(authorname)%(end)" >actual && - cat >expect <<-\EOF && - refs/heads/master Author: A U Thor - refs/heads/side Author: A U Thor - refs/odd/spot Author: A U Thor - refs/tags/annotated-tag - refs/tags/doubly-annotated-tag - refs/tags/doubly-signed-tag - refs/tags/foo1.10 Author: A U Thor - refs/tags/foo1.3 Author: A U Thor - refs/tags/foo1.6 Author: A U Thor - refs/tags/four Author: A U Thor - refs/tags/one Author: A U Thor - refs/tags/signed-tag - refs/tags/three Author: A U Thor - refs/tags/two Author: A U Thor - EOF - test_cmp expect actual -' - -test_expect_success 'check %(if)...%(then)...%(else)...%(end) atoms' ' - git for-each-ref --format="%(if)%(authorname)%(then)%(authorname)%(else)No author%(end): %(refname)" >actual && - cat >expect <<-\EOF && - A U Thor: refs/heads/master - A U Thor: refs/heads/side - A U Thor: refs/odd/spot - No author: refs/tags/annotated-tag - No author: refs/tags/doubly-annotated-tag - No author: refs/tags/doubly-signed-tag - A U Thor: refs/tags/foo1.10 - A U Thor: refs/tags/foo1.3 - A U Thor: refs/tags/foo1.6 - A U Thor: refs/tags/four - A U Thor: refs/tags/one - No author: refs/tags/signed-tag - A U Thor: refs/tags/three - A U Thor: refs/tags/two - EOF - test_cmp expect actual -' -test_expect_success 'ignore spaces in %(if) atom usage' ' - git for-each-ref --format="%(refname:short): %(if)%(HEAD)%(then)Head ref%(else)Not Head ref%(end)" >actual && - cat >expect <<-\EOF && - master: Head ref - side: Not Head ref - odd/spot: Not Head ref - annotated-tag: Not Head ref - doubly-annotated-tag: Not Head ref - doubly-signed-tag: Not Head ref - foo1.10: Not Head ref - foo1.3: Not Head ref - foo1.6: Not Head ref - four: Not Head ref - one: Not Head ref - signed-tag: Not Head ref - three: Not Head ref - two: Not Head ref - EOF - test_cmp expect actual -' - -test_expect_success 'check %(if:equals=<string>)' ' - git for-each-ref --format="%(if:equals=master)%(refname:short)%(then)Found master%(else)Not master%(end)" refs/heads/ >actual && - cat >expect <<-\EOF && - Found master - Not master - EOF - test_cmp expect actual -' - -test_expect_success 'check %(if:notequals=<string>)' ' - git for-each-ref --format="%(if:notequals=master)%(refname:short)%(then)Not master%(else)Found master%(end)" refs/heads/ >actual && - cat >expect <<-\EOF && - Found master - Not master - EOF - test_cmp expect actual -' - -test_expect_success '--merged is compatible with --no-merged' ' - git for-each-ref --merged HEAD --no-merged HEAD -' - -test_expect_success 'validate worktree atom' ' - cat >expect <<-EOF && - master: $(pwd) - master_worktree: $(pwd)/worktree_dir - side: not checked out - EOF - git worktree add -b master_worktree worktree_dir master && - git for-each-ref --format="%(refname:short): %(if)%(worktreepath)%(then)%(worktreepath)%(else)not checked out%(end)" refs/heads/ >actual && - rm -r worktree_dir && - git worktree prune && - test_cmp expect actual -' - -test_done |