(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:'Tests for rev-parse --prefix' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\tmkdir -p sub1/sub2 &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\techo top >top &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\techo file1 >sub1/file1 &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo file2 >sub1/sub2/file2 &&\n' span_id:26) (Token id: Id.Lit_Chars val: '\tgit add top sub1/file1 sub1/sub2/file2 &&\n' span_id: 27 ) (Token id:Id.Lit_Chars val:'\tgit commit -m commit\n' span_id:28) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'empty prefix -- file' span_id:35))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix "" -- top sub1/file1 >actual &&\n' span_id: 40 ) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >expected &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\t--\n' span_id:42) (Token id:Id.Lit_Chars val:'\ttop\n' span_id:43) (Token id:Id.Lit_Chars val:'\tsub1/file1\n' span_id:44) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:45) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:46) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'valid prefix -- file' span_id:53))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:57) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix sub1/ -- file1 sub2/file2 >actual &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >expected &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\t--\n' span_id:60) (Token id:Id.Lit_Chars val:'\tsub1/file1\n' span_id:61) (Token id:Id.Lit_Chars val:'\tsub1/sub2/file2\n' span_id:62) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:63) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:64) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'valid prefix -- ../file' span_id:71))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix sub1/ -- ../top sub2/file2 >actual &&\n' span_id: 76 ) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >expected &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\t--\n' span_id:78) (Token id:Id.Lit_Chars val:'\tsub1/../top\n' span_id:79) (Token id:Id.Lit_Chars val:'\tsub1/sub2/file2\n' span_id:80) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:81) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:82) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'empty prefix HEAD:./path' span_id:89))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix "" HEAD:./top >actual &&\n' span_id: 94 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD:top >expected &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:96) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'valid prefix HEAD:./path' span_id:103))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:107) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix sub1/ HEAD:./file1 >actual &&\n' span_id: 108 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD:sub1/file1 >expected &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:110) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'valid prefix HEAD:../path' span_id:117))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:121) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix sub1/ HEAD:../top >actual &&\n' span_id: 122 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD:top >expected &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:124) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prefix ignored with HEAD:top' span_id:131))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:135) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix sub1/ HEAD:top >actual &&\n' span_id: 136 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD:top >expected &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:138) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'disambiguate path with valid prefix' span_id:145))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:149) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix sub1/ file1 >actual &&\n' span_id: 150 ) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >expected &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\tsub1/file1\n' span_id:152) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:153) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:154) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file and refs with prefix' span_id:161))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:165) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix sub1/ master file1 >actual &&\n' span_id: 166 ) (Token id:Id.Lit_Chars val:'\tcat <<-EOF >expected &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\t$(git rev-parse master)\n' span_id:168) (Token id:Id.Lit_Chars val:'\tsub1/file1\n' span_id:169) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:170) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:171) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'two-levels deep' span_id:178))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:182) (Token id: Id.Lit_Chars val: '\tgit rev-parse --prefix sub1/sub2/ -- file2 >actual &&\n' span_id: 183 ) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >expected &&\n' span_id:184) (Token id:Id.Lit_Chars val:'\t--\n' span_id:185) (Token id:Id.Lit_Chars val:'\tsub1/sub2/file2\n' span_id:186) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:187) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:188) ) } ) (C {(test_done)}) ] )