(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'git ls-remote'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <'\n'> <'\t>file &&\n'> <'\tgit add file &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m initial &&\n'> <'\tgit tag mark &&\n'> <'\tgit show-ref --tags -d | sed -e "s/ /\t/" >expected.tag &&\n'> <'\t(\n'> <'\t\techo "$(git rev-parse HEAD)\tHEAD"\n'> <'\t\tgit show-ref -d\t| sed -e "s/ /\t/"\n'> <'\t) >expected.all &&\n'> <'\n'> <'\tgit remote add self "$(pwd)/.git"\n'> ) } ) (C {(test_expect_success)} {(SQ <'ls-remote --tags .git'>)} {(SQ <'\n'> <'\tgit ls-remote --tags .git >actual &&\n'> <'\ttest_cmp expected.tag actual\n'>)} ) (C {(test_expect_success)} {(SQ <'ls-remote .git'>)} {(SQ <'\n'> <'\tgit ls-remote .git >actual &&\n'> <'\ttest_cmp expected.all actual\n'>)} ) (C {(test_expect_success)} {(SQ <'ls-remote --tags self'>)} {(SQ <'\n'> <'\tgit ls-remote --tags self >actual &&\n'> <'\ttest_cmp expected.tag actual\n'>)} ) (C {(test_expect_success)} {(SQ <'ls-remote self'>)} {(SQ <'\n'> <'\tgit ls-remote self >actual &&\n'> <'\ttest_cmp expected.all actual\n'>)} ) (C {(test_expect_success)} {(SQ <'dies when no remote specified and no default remotes found'>)} {(SQ <'\n'> <'\ttest_must_fail git ls-remote\n'>)} ) (C {(test_expect_success)} {(SQ <'use "origin" when no remote specified'>)} { (SQ <'\n'> <'\tURL="$(pwd)/.git" &&\n'> <'\techo "From $URL" >exp_err &&\n'> <'\n'> <'\tgit remote add origin "$URL" &&\n'> <'\tgit ls-remote 2>actual_err >actual &&\n'> <'\n'> <'\ttest_cmp exp_err actual_err &&\n'> <'\ttest_cmp expected.all actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'suppress "From <url>" with -q'>)} { (SQ <'\n'> <'\tgit ls-remote -q 2>actual_err &&\n'> <'\ttest_must_fail test_cmp exp_err actual_err\n'> ) } ) (C {(test_expect_success)} {(SQ <'use branch.<name>.remote if possible'>)} { (SQ <'\n'> <'\t#\n'> <'\t# Test that we are indeed using branch.<name>.remote, not "origin", even\n'> <'\t# though the "origin" remote has been set.\n'> <'\t#\n'> <'\n'> <'\t# setup a new remote to differentiate from "origin"\n'> <'\tgit clone . other.git &&\n'> <'\t(\n'> <'\t\tcd other.git &&\n'> <'\t\techo "$(git rev-parse HEAD)\tHEAD"\n'> <'\t\tgit show-ref\t| sed -e "s/ /\t/"\n'> <'\t) >exp &&\n'> <'\n'> <'\tURL="other.git" &&\n'> <'\techo "From $URL" >exp_err &&\n'> <'\n'> <'\tgit remote add other $URL &&\n'> <'\tgit config branch.master.remote other &&\n'> <'\n'> <'\tgit ls-remote 2>actual_err >actual &&\n'> <'\ttest_cmp exp_err actual_err &&\n'> <'\ttest_cmp exp actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'confuses pattern as remote when no remote specified'>)} {(SQ <'\n'> <'\tcat >exp <<-\\EOF &&\n'> <'\tfatal: '>) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <'refs*master'>) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <' does not appear to be a git repository\n'> <'\tfatal: Could not read from remote repository.\n'> <'\n'> <'\tPlease make sure you have the correct access rights\n'> <'\tand the repository exists.\n'> <'\tEOF\n'> <'\t#\n'> <'\t# Do not expect "git ls-remote <pattern>" to work; ls-remote needs\n'> <'\t# <remote> if you want to feed <pattern>, just like you cannot say\n'> <'\t# fetch <branch>.\n'> <'\t# We could just as easily have used "master"; the "*" emphasizes its\n'> <'\t# role as a pattern.\n'> <'\ttest_must_fail git ls-remote refs*master >actual 2>&1 &&\n'> <'\ttest_i18ncmp exp actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'die with non-2 for wrong repository even with --exit-code'>)} { (SQ <'\n'> <'\t{\n'> <'\t\tgit ls-remote --exit-code ./no-such-repository\n'> <'\t\tstatus=$?\n'> <'\t} &&\n'> <'\ttest $status != 2 && test $status != 0\n'> ) } ) (C {(test_expect_success)} {(SQ <'Report success even when nothing matches'>)} { (SQ <'\n'> <'\tgit ls-remote other.git "refs/nsn/*" >actual &&\n'> <'\t>expect &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'Report no-match with --exit-code'>)} { (SQ <'\n'> <'\ttest_expect_code 2 git ls-remote --exit-code other.git "refs/nsn/*" >actual &&\n'> <'\t>expect &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'Report match with --exit-code'>)} { (SQ <'\n'> <'\tgit ls-remote --exit-code other.git "refs/tags/*" >actual &&\n'> <'\tgit ls-remote . tags/mark >expect &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'set up some extra tags for ref hiding'>)} {(SQ <'\n'> <'\tgit tag magic/one &&\n'> <'\tgit tag magic/two\n'>)} ) (ForEach iter_name: configsection iter_words: [{(transfer)} {(uploadpack)}] do_arg_iter: False body: (DoGroup children: [ (C {(test_expect_success)} {(DQ ('Hide some refs with ') ($ VSub_Name '$configsection') (.hiderefs))} { (SQ <'\n'> <'\t\ttest_config $configsection.hiderefs refs/tags &&\n'> <'\t\tgit ls-remote . >actual &&\n'> <'\t\ttest_unconfig $configsection.hiderefs &&\n'> <'\t\tgit ls-remote . |\n'> <'\t\tsed -e "/\trefs\\/tags\\//d" >expect &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t'> ) } ) (C {(test_expect_success)} {(DQ ('Override hiding of ') ($ VSub_Name '$configsection') (.hiderefs))} { (SQ <'\n'> <'\t\ttest_when_finished "test_unconfig $configsection.hiderefs" &&\n'> <'\t\tgit config --add $configsection.hiderefs refs/tags &&\n'> <'\t\tgit config --add $configsection.hiderefs "!refs/tags/magic" &&\n'> <'\t\tgit config --add $configsection.hiderefs refs/tags/magic/one &&\n'> <'\t\tgit ls-remote . >actual &&\n'> <'\t\tgrep refs/tags/magic/two actual &&\n'> <'\t\t! grep refs/tags/magic/one actual\n'> <'\t'> ) } ) ] spids: [280 325] ) spids: [275 -1] ) (C {(test_expect_success)} {(SQ <'overrides work between mixed transfer/upload-pack hideRefs'>)} { (SQ <'\n'> <'\ttest_config uploadpack.hiderefs refs/tags &&\n'> <'\ttest_config transfer.hiderefs "!refs/tags/magic" &&\n'> <'\tgit ls-remote . >actual &&\n'> <'\tgrep refs/tags/magic actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'ls-remote --symref'>)} { (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tref: refs/heads/master\tHEAD\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\tHEAD\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/master\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/remotes/origin/HEAD\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/remotes/origin/master\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/tags/mark\n'> <'\tEOF\n'> <'\tgit ls-remote --symref >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'ls-remote with filtered symref (refname)'>)} { (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tref: refs/heads/master\tHEAD\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\tHEAD\n'> <'\tEOF\n'> <'\tgit ls-remote --symref . HEAD >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_failure)} {(SQ <'ls-remote with filtered symref (--heads)'>)} { (SQ <'\n'> <'\tgit symbolic-ref refs/heads/foo refs/tags/mark &&\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tref: refs/tags/mark\trefs/heads/foo\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/foo\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/master\n'> <'\tEOF\n'> <'\tgit ls-remote --symref --heads . >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'ls-remote --symref omits filtered-out matches'>)} { (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/foo\n'> <'\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/master\n'> <'\tEOF\n'> <'\tgit ls-remote --symref --heads . >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\tgit ls-remote --symref . "refs/heads/*" >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_lazy_prereq)} {(GIT_DAEMON)} { (SQ <'\n'> <'\ttest_tristate GIT_TEST_GIT_DAEMON &&\n'> <'\ttest "$GIT_TEST_GIT_DAEMON" != false\n'> ) } ) (C {(test_expect_success)} {(PIPE) (Lit_Comma ',') (JGIT) (Lit_Comma ',') (GIT_DAEMON)} {(SQ <'indicate no refs in standards-compliant empty remote'>)} { (SQ <'\n'> <'\tJGIT_DAEMON_PORT=${JGIT_DAEMON_PORT-${this_test#t}} &&\n'> <'\tJGIT_DAEMON_PID= &&\n'> <'\tgit init --bare empty.git &&\n'> <'\t>empty.git/git-daemon-export-ok &&\n'> <'\tmkfifo jgit_daemon_output &&\n'> <'\t{\n'> <'\t\tjgit daemon --port="$JGIT_DAEMON_PORT" . >jgit_daemon_output &\n'> <'\t\tJGIT_DAEMON_PID=$!\n'> <'\t} &&\n'> <'\ttest_when_finished kill "$JGIT_DAEMON_PID" &&\n'> <'\t{\n'> <'\t\tread line &&\n'> <'\t\tcase $line in\n'> <'\t\tExporting*)\n'> <'\t\t\t;;\n'> <'\t\t*)\n'> <'\t\t\techo "Expected: Exporting" &&\n'> <'\t\t\tfalse;;\n'> <'\t\tesac &&\n'> <'\t\tread line &&\n'> <'\t\tcase $line in\n'> <'\t\t"Listening on"*)\n'> <'\t\t\t;;\n'> <'\t\t*)\n'> <'\t\t\techo "Expected: Listening on" &&\n'> <'\t\t\tfalse;;\n'> <'\t\tesac\n'> <'\t} <jgit_daemon_output &&\n'> <'\t# --exit-code asks the command to exit with 2 when no\n'> <'\t# matching refs are found.\n'> < '\ttest_expect_code 2 git ls-remote --exit-code git://localhost:$JGIT_DAEMON_PORT/empty.git\n' > ) } ) (C {(test_done)}) ] )