(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'fetch/push involving ref namespaces' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:19) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:20) (Token id:Id.Lit_Chars val:'\tgit init original &&\n' span_id:21) (Token id:Id.Lit_Chars val:'\t(\n' span_id:22) (Token id:Id.Lit_Chars val:'\t\tcd original &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\t\techo 0 >count &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\t\tgit add count &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\t\ttest_commit 0 &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\t\techo 1 >count &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\t\tgit add count &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\t\ttest_commit 1 &&\n' span_id:29) (Token id: Id.Lit_Chars val: '\t\tgit remote add pushee-namespaced "ext::git --namespace=namespace %s ../pushee" &&\n' span_id: 30 ) (Token id:Id.Lit_Chars val:'\t\tgit remote add pushee-unnamespaced ../pushee\n' span_id:31) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tcommit0=$(cd original && git rev-parse HEAD^) &&\n' span_id:33) (Token id: Id.Lit_Chars val: '\tcommit1=$(cd original && git rev-parse HEAD) &&\n' span_id: 34 ) (Token id:Id.Lit_Chars val:'\tgit init pushee &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit init puller\n' span_id:36) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pushing into a repository using a ref namespace' span_id:43))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:47) (Token id:Id.Lit_Chars val:'\t(\n' span_id:48) (Token id:Id.Lit_Chars val:'\t\tcd original &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\t\tgit push pushee-namespaced master &&\n' span_id:50) (Token id: Id.Lit_Chars val: '\t\tgit ls-remote pushee-namespaced >actual &&\n' span_id: 51 ) (Token id:Id.Lit_Chars val:'\t\tprintf "$commit1\\trefs/heads/master\\n" >expected &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\t\tgit push pushee-namespaced --tags &&\n' span_id:54) (Token id: Id.Lit_Chars val: '\t\tgit ls-remote pushee-namespaced >actual &&\n' span_id: 55 ) (Token id:Id.Lit_Chars val:'\t\tprintf "$commit0\\trefs/tags/0\\n" >>expected &&\n' span_id:56) (Token id: Id.Lit_Chars val: '\t\tprintf "$commit1\\trefs/tags/1\\n" >>expected &&\n' span_id: 57 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual &&\n' span_id:58) (Token id: Id.Lit_Chars val: '\t\t# Verify that the GIT_NAMESPACE environment variable works as well\n' span_id: 59 ) (Token id: Id.Lit_Chars val: '\t\tGIT_NAMESPACE=namespace git ls-remote "ext::git %s ../pushee" >actual &&\n' span_id: 60 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual &&\n' span_id:61) (Token id: Id.Lit_Chars val: '\t\t# Verify that --namespace overrides GIT_NAMESPACE\n' span_id: 62 ) (Token id: Id.Lit_Chars val: '\t\tGIT_NAMESPACE=garbage git ls-remote pushee-namespaced >actual &&\n' span_id: 63 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\t\t# Try a namespace with no content\n' span_id:65) (Token id: Id.Lit_Chars val: '\t\tgit ls-remote "ext::git --namespace=garbage %s ../pushee" >actual &&\n' span_id: 66 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp /dev/null actual &&\n' span_id:67) (Token id: Id.Lit_Chars val: '\t\tgit ls-remote pushee-unnamespaced >actual &&\n' span_id: 68 ) (Token id: Id.Lit_Chars val: '\t\tsed -e "s|refs/|refs/namespaces/namespace/refs/|" expected >expected.unnamespaced &&\n' span_id: 69 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected.unnamespaced actual\n' span_id:70) (Token id:Id.Lit_Chars val:'\t)\n' span_id:71) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling from a repository using a ref namespace' span_id:78))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:82) (Token id:Id.Lit_Chars val:'\t(\n' span_id:83) (Token id:Id.Lit_Chars val:'\t\tcd puller &&\n' span_id:84) (Token id: Id.Lit_Chars val: '\t\tgit remote add -f pushee-namespaced "ext::git --namespace=namespace %s ../pushee" &&\n' span_id: 85 ) (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs/ >actual &&\n' span_id:86) (Token id: Id.Lit_Chars val: '\t\tprintf "$commit1 commit\\trefs/remotes/pushee-namespaced/master\\n" >expected &&\n' span_id: 87 ) (Token id: Id.Lit_Chars val: '\t\tprintf "$commit0 commit\\trefs/tags/0\\n" >>expected &&\n' span_id: 88 ) (Token id: Id.Lit_Chars val: '\t\tprintf "$commit1 commit\\trefs/tags/1\\n" >>expected &&\n' span_id: 89 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:90) (Token id:Id.Lit_Chars val:'\t)\n' span_id:91) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'mirroring a repository using a ref namespace' span_id:122))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:126) (Token id:Id.Lit_Chars val:'\tgit clone --mirror pushee mirror &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\t(\n' span_id:128) (Token id:Id.Lit_Chars val:'\t\tcd mirror &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs/ >actual &&\n' span_id:130) (Token id: Id.Lit_Chars val: '\t\tprintf "$commit1 commit\\trefs/namespaces/namespace/refs/heads/master\\n" >expected &&\n' span_id: 131 ) (Token id: Id.Lit_Chars val: '\t\tprintf "$commit0 commit\\trefs/namespaces/namespace/refs/tags/0\\n" >>expected &&\n' span_id: 132 ) (Token id: Id.Lit_Chars val: '\t\tprintf "$commit1 commit\\trefs/namespaces/namespace/refs/tags/1\\n" >>expected &&\n' span_id: 133 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:134) (Token id:Id.Lit_Chars val:'\t)\n' span_id:135) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'hide namespaced refs with transfer.hideRefs' span_id:142))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:146) (Token id:Id.Lit_Chars val:'\tGIT_NAMESPACE=namespace \\\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\tgit -C pushee -c transfer.hideRefs=refs/tags \\\n' span_id:148) (Token id: Id.Lit_Chars val: '\t\tls-remote "ext::git %s ." >actual &&\n' span_id: 149 ) (Token id:Id.Lit_Chars val:'\tprintf "$commit1\\trefs/heads/master\\n" >expected &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:151) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'check that transfer.hideRefs does not match unstripped refs' span_id: 158 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:162) (Token id:Id.Lit_Chars val:'\tGIT_NAMESPACE=namespace \\\n' span_id:163) (Token id: Id.Lit_Chars val: '\t\tgit -C pushee -c transfer.hideRefs=refs/namespaces/namespace/refs/tags \\\n' span_id: 164 ) (Token id:Id.Lit_Chars val:'\t\tls-remote "ext::git %s ." >actual &&\n' span_id:165) (Token id: Id.Lit_Chars val: '\tprintf "$commit1\\trefs/heads/master\\n" >expected &&\n' span_id: 166 ) (Token id:Id.Lit_Chars val:'\tprintf "$commit0\\trefs/tags/0\\n" >>expected &&\n' span_id:167) (Token id: Id.Lit_Chars val: '\tprintf "$commit1\\trefs/tags/1\\n" >>expected &&\n' span_id: 168 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:169) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'hide full refs with transfer.hideRefs' span_id:176))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\tGIT_NAMESPACE=namespace \\\n' span_id:181) (Token id: Id.Lit_Chars val: '\t\tgit -C pushee -c transfer.hideRefs="^refs/namespaces/namespace/refs/tags" \\\n' span_id: 182 ) (Token id:Id.Lit_Chars val:'\t\tls-remote "ext::git %s ." >actual &&\n' span_id:183) (Token id: Id.Lit_Chars val: '\tprintf "$commit1\\trefs/heads/master\\n" >expected &&\n' span_id: 184 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:185) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'try to update a hidden ref' span_id:192))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:196) (Token id: Id.Lit_Chars val: '\ttest_config -C pushee transfer.hideRefs refs/heads/master &&\n' span_id: 197 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -C original push pushee-namespaced master\n' span_id: 198 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'try to update a ref that is not hidden' span_id:205))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:209) (Token id: Id.Lit_Chars val: '\ttest_config -C pushee transfer.hideRefs refs/namespaces/namespace/refs/heads/master &&\n' span_id: 210 ) (Token id:Id.Lit_Chars val:'\tgit -C original push pushee-namespaced master\n' span_id:211) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'try to update a hidden full ref' span_id:218))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:222) (Token id: Id.Lit_Chars val: '\ttest_config -C pushee transfer.hideRefs "^refs/namespaces/namespace/refs/heads/master" &&\n' span_id: 223 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -C original push pushee-namespaced master\n' span_id: 224 ) ) } ) (C {(test_done)}) ] )