(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:'check svn dumpfile importer' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: reinit_git
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Pipeline
                      children: [(C {(test_declared_prereq)} {(PIPE)})]
                      negated: T
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(DQ ('reinit_git: need to declare PIPE prerequisite'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:37)
                          fd: -1
                          arg_word: {(4)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:45)
                      arg_word: {(127)}
                    )
                  ]
                  spids: [23 32]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(rm)} {(-fr)} {(.git)})
                (C {(rm)} {(-f)} {(stream)} {(backflow)})
                (C {(git)} {(init)})
                (C {(mkfifo)} {(stream)} {(backflow)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: try_dump
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:input)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [97]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:maybe_fail_svnfe)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: (Token id:Id.VSub_Number val:2 span_id:105)
                            suffix_op: 
                              (suffix_op.Unary
                                op_id: Id.VTest_ColonPlus
                                arg_word: {(test_) ($ Id.VSub_Number '$2')}
                              )
                          )
                        }
                      spids: [103]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:maybe_fail_fi)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: (Token id:Id.VSub_Number val:3 span_id:116)
                            suffix_op: 
                              (suffix_op.Unary
                                op_id: Id.VTest_ColonPlus
                                arg_word: {(test_) ($ Id.VSub_Number '$3')}
                              )
                          )
                        }
                      spids: [114]
                    )
                  ]
                )
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [
                            {($ Id.VSub_DollarName '$maybe_fail_svnfe')}
                            {(test-svn-fe)}
                            {(DQ ($ Id.VSub_DollarName '$input'))}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:137)
                              fd: -1
                              arg_word: {(stream)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_Less val:'3<' span_id:140)
                              fd: 3
                              arg_word: {(backflow)}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Amp val:'&' span_id:143)
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {($ Id.VSub_DollarName '$maybe_fail_fi')}
                    {(git)}
                    {(fast-import)}
                    {(--cat-blob-fd) (Id.Lit_Equals '=') (3)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:161)
                      fd: -1
                      arg_word: {(stream)}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'3>' span_id:164)
                      fd: 3
                      arg_word: {(backflow)}
                    )
                  ]
                )
                (C {(wait)} {($ Id.VSub_Bang '$!')})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: properties
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:185)
              cond: [(C {(test)} {(DQ ($ Id.VSub_Pound '$#'))} {(-ne)} {(0)})]
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:property)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$1'))}
                              spids: [201]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:value)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$2'))}
                              spids: [209]
                            )
                          ]
                        )
                        (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} 
                          {
                            (DQ ('K ') 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:property span_id:229)
                                prefix_op: (Id.VSub_Pound)
                              )
                            )
                          }
                        )
                        (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} 
                          {(DQ ($ Id.VSub_DollarName '$property'))}
                        )
                        (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} 
                          {
                            (DQ ('V ') 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:value span_id:263)
                                prefix_op: (Id.VSub_Pound)
                              )
                            )
                          }
                        )
                        (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} 
                          {(DQ ($ Id.VSub_DollarName '$value'))}
                        )
                        (C {(shift)} {(2)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:292)
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: text_no_props
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:text)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1') ('\n'))}
                      spids: [310]
                    )
                  ]
                )
                (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} {(DQ ('Prop-content-length: 10'))})
                (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} 
                  {
                    (DQ ('Text-content-length: ') 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:text span_id:346)
                        prefix_op: (Id.VSub_Pound)
                      )
                    )
                  }
                )
                (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} 
                  {
                    (DQ ('Content-length: ') 
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: 
                              (arith_expr.ArithWord
                                w: 
                                  {
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:text span_id:366)
                                      prefix_op: (Id.VSub_Pound)
                                    )
                                  }
                              )
                            right: (arith_expr.ArithWord w:{(Id.Lit_Digits 10)})
                          )
                      )
                    )
                  }
                )
                (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} {(DQ )} {(DQ (PROPS-END))})
                (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} {(DQ ($ Id.VSub_DollarName '$text'))})
              ]
            )
          ]
        )
    )
    (command.Simple
      redirects: [
        (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:412) fd:-1 arg_word:{(empty)})
      ]
    )
    (C {(test_expect_success)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'empty dump' span_id:421))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:425) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:426) (Token id:Id.Lit_Chars val:'\techo "SVN-fs-dump-format-version: 2" >input &&\n' span_id:427) 
          (Token id:Id.Lit_Chars val:'\ttry_dump input\n' span_id:428)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'v4 dumps not supported' span_id:437))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:441) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:442) (Token id:Id.Lit_Chars val:'\techo "SVN-fs-dump-format-version: 4" >v4.dump &&\n' span_id:443) 
          (Token id:Id.Lit_Chars val:'\ttry_dump v4.dump must_fail\n' span_id:444)
        )
      }
    )
    (C {(test_expect_failure)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'empty revision' span_id:453))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:457) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:458) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "rev <nobody, nobody@local>: %s\\n" "" "" >expect &&\n'
            span_id: 459
          ) (Token id:Id.Lit_Chars val:'\tcat >emptyrev.dump <<-\\EOF &&\n' span_id:460) 
          (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:461) (Token id:Id.Lit_Chars val:'\n' span_id:462) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:463) (Token id:Id.Lit_Chars val:'\tProp-content-length: 0\n' span_id:464) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 0\n' span_id:465) (Token id:Id.Lit_Chars val:'\n' span_id:466) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 2\n' span_id:467) (Token id:Id.Lit_Chars val:'\tProp-content-length: 0\n' span_id:468) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 0\n' span_id:469) (Token id:Id.Lit_Chars val:'\n' span_id:470) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:471) 
          (Token id:Id.Lit_Chars val:'\ttry_dump emptyrev.dump &&\n' span_id:472) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log -p --format="rev <%an, %ae>: %s" HEAD >actual &&\n'
            span_id: 473
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:474)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'empty properties' span_id:483))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:487) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:488) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "rev <nobody, nobody@local>: %s\\n" "" "" >expect &&\n'
            span_id: 489
          ) (Token id:Id.Lit_Chars val:'\tcat >emptyprop.dump <<-\\EOF &&\n' span_id:490) 
          (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:491) (Token id:Id.Lit_Chars val:'\n' span_id:492) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:493) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:494) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:495) (Token id:Id.Lit_Chars val:'\n' span_id:496) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:497) 
          (Token id:Id.Lit_Chars val:'\n' span_id:498) (Token id:Id.Lit_Chars val:'\tRevision-number: 2\n' span_id:499) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:500) (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:501) 
          (Token id:Id.Lit_Chars val:'\n' span_id:502) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:503) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:504) (Token id:Id.Lit_Chars val:'\ttry_dump emptyprop.dump &&\n' span_id:505) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log -p --format="rev <%an, %ae>: %s" HEAD >actual &&\n'
            span_id: 506
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:507)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'author name and commit message' span_id:516))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:520) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:521) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "<author@example.com, author@example.com@local>" >expect.author &&\n'
            span_id: 522
          ) (Token id:Id.Lit_Chars val:'\tcat >message <<-\\EOF &&\n' span_id:523) 
          (Token id:Id.Lit_Chars val:'\tA concise summary of the change\n' span_id:524) (Token id:Id.Lit_Chars val:'\n' span_id:525) 
          (Token
            id: Id.Lit_Chars
            val: '\tA detailed description of the change, why it is needed, what\n'
            span_id: 526
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\twas broken and why applying this is the best course of action.\n'
            span_id: 527
          ) (Token id:Id.Lit_Chars val:'\n' span_id:528) (Token id:Id.Lit_Chars val:'\t* file.c\n' span_id:529) 
          (Token
            id: Id.Lit_Chars
            val: '\t    Details pertaining to an individual file.\n'
            span_id: 530
          ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:531) (Token id:Id.Lit_Chars val:'\t{\n' span_id:532) 
          (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:533) (Token id:Id.Lit_Chars val:'\t\t\tsvn:author author@example.com \\\n' span_id:534) 
          (Token id:Id.Lit_Chars val:'\t\t\tsvn:log "$(cat message)" &&\n' span_id:535) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:536) 
          (Token id:Id.Lit_Chars val:'\t} >props &&\n' span_id:537) (Token id:Id.Lit_Chars val:'\t{\n' span_id:538) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "SVN-fs-dump-format-version: 3" &&\n'
            span_id: 539
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:540) 
          (Token id:Id.Lit_Chars val:'\t\techo "Revision-number: 1" &&\n' span_id:541) (Token id:Id.Lit_Chars val:'\t\techo Prop-content-length: $(wc -c <props) &&\n' span_id:542) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $(wc -c <props) &&\n'
            span_id: 543
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:544) 
          (Token id:Id.Lit_Chars val:'\t\tcat props\n' span_id:545) (Token id:Id.Lit_Chars val:'\t} >log.dump &&\n' span_id:546) 
          (Token id:Id.Lit_Chars val:'\ttry_dump log.dump &&\n' span_id:547) (Token id:Id.Lit_Chars val:'\tgit log -p --format="%B" HEAD >actual.log &&\n' span_id:548) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --format="<%an, %ae>" >actual.author &&\n'
            span_id: 549
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp message actual.log &&\n' span_id:550) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect.author actual.author\n'
            span_id: 551
          )
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'unsupported properties are ignored' span_id:560))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:564) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:565) (Token id:Id.Lit_Chars val:'\techo author >expect &&\n' span_id:566) 
          (Token id:Id.Lit_Chars val:'\tcat >extraprop.dump <<-\\EOF &&\n' span_id:567) (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:568) 
          (Token id:Id.Lit_Chars val:'\n' span_id:569) (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:570) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 56\n' span_id:571) (Token id:Id.Lit_Chars val:'\tContent-length: 56\n' span_id:572) 
          (Token id:Id.Lit_Chars val:'\n' span_id:573) (Token id:Id.Lit_Chars val:'\tK 8\n' span_id:574) 
          (Token id:Id.Lit_Chars val:'\tnonsense\n' span_id:575) (Token id:Id.Lit_Chars val:'\tV 1\n' span_id:576) (Token id:Id.Lit_Chars val:'\ty\n' span_id:577) 
          (Token id:Id.Lit_Chars val:'\tK 10\n' span_id:578) (Token id:Id.Lit_Chars val:'\tsvn:author\n' span_id:579) 
          (Token id:Id.Lit_Chars val:'\tV 6\n' span_id:580) (Token id:Id.Lit_Chars val:'\tauthor\n' span_id:581) 
          (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:582) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:583) 
          (Token id:Id.Lit_Chars val:'\ttry_dump extraprop.dump &&\n' span_id:584) (Token id:Id.Lit_Chars val:'\tgit log -p --format=%an HEAD >actual &&\n' span_id:585) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:586)
        )
      }
    )
    (C {(test_expect_failure)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'timestamp and empty file' span_id:595))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:599) 
          (Token
            id: Id.Lit_Chars
            val: '\techo author@example.com >expect.author &&\n'
            span_id: 600
          ) (Token id:Id.Lit_Chars val:'\techo 1999-01-01 >expect.date &&\n' span_id:601) 
          (Token id:Id.Lit_Chars val:'\techo file >expect.files &&\n' span_id:602) (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:603) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:604) (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:605) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:author author@example.com \\\n'
            span_id: 606
          ) (Token id:Id.Lit_Chars val:'\t\t\tsvn:date "1999-01-01T00:01:002.000000Z" \\\n' span_id:607) 
          (Token id:Id.Lit_Chars val:'\t\t\tsvn:log "add empty file" &&\n' span_id:608) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:609) 
          (Token id:Id.Lit_Chars val:'\t} >props &&\n' span_id:610) (Token id:Id.Lit_Chars val:'\t{\n' span_id:611) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:612) (Token id:Id.Lit_Chars val:'\t\tSVN-fs-dump-format-version: 3\n' span_id:613) 
          (Token id:Id.Lit_Chars val:'\n' span_id:614) (Token id:Id.Lit_Chars val:'\t\tRevision-number: 1\n' span_id:615) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:616) (Token id:Id.Lit_Chars val:'\t\techo Prop-content-length: $(wc -c <props) &&\n' span_id:617) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $(wc -c <props) &&\n'
            span_id: 618
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:619) 
          (Token id:Id.Lit_Chars val:'\t\tcat props &&\n' span_id:620) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF\n' span_id:621) 
          (Token id:Id.Lit_Chars val:'\n' span_id:622) (Token id:Id.Lit_Chars val:'\t\tNode-path: empty-file\n' span_id:623) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:624) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:625) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 0\n' span_id:626) (Token id:Id.Lit_Chars val:'\n' span_id:627) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:628) 
          (Token id:Id.Lit_Chars val:'\t} >emptyfile.dump &&\n' span_id:629) (Token id:Id.Lit_Chars val:'\ttry_dump emptyfile.dump &&\n' span_id:630) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --format=%an HEAD >actual.author &&\n'
            span_id: 631
          ) (Token id:Id.Lit_Chars val:'\tgit log --date=short --format=%ad HEAD >actual.date &&\n' span_id:632) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit ls-tree -r --name-only HEAD >actual.files &&\n'
            span_id: 633
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.author actual.author &&\n' span_id:634) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect.date actual.date &&\n' span_id:635) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.files actual.files &&\n' span_id:636) 
          (Token id:Id.Lit_Chars val:'\tgit checkout HEAD empty-file &&\n' span_id:637) (Token id:Id.Lit_Chars val:'\ttest_cmp empty file\n' span_id:638)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'directory with files' span_id:647))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:651) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:652) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "%s\\n" directory/file1 directory/file2 >expect.files &&\n'
            span_id: 653
          ) (Token id:Id.Lit_Chars val:'\techo hi >hi &&\n' span_id:654) 
          (Token id:Id.Lit_Chars val:'\techo hello >hello &&\n' span_id:655) (Token id:Id.Lit_Chars val:'\t{\n' span_id:656) 
          (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:657) (Token id:Id.Lit_Chars val:'\t\t\tsvn:author author@example.com \\\n' span_id:658) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:date "1999-02-01T00:01:002.000000Z" \\\n'
            span_id: 659
          ) (Token id:Id.Lit_Chars val:'\t\t\tsvn:log "add directory with some files in it" &&\n' span_id:660) 
          (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:661) (Token id:Id.Lit_Chars val:'\t} >props &&\n' span_id:662) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:663) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:664) 
          (Token id:Id.Lit_Chars val:'\t\tSVN-fs-dump-format-version: 3\n' span_id:665) (Token id:Id.Lit_Chars val:'\n' span_id:666) 
          (Token id:Id.Lit_Chars val:'\t\tRevision-number: 1\n' span_id:667) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:668) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Prop-content-length: $(wc -c <props) &&\n'
            span_id: 669
          ) (Token id:Id.Lit_Chars val:'\t\techo Content-length: $(wc -c <props) &&\n' span_id:670) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:671) (Token id:Id.Lit_Chars val:'\t\tcat props &&\n' span_id:672) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:673) (Token id:Id.Lit_Chars val:'\n' span_id:674) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: directory\n' span_id:675) (Token id:Id.Lit_Chars val:'\t\tNode-kind: dir\n' span_id:676) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:677) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:678) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 10\n' span_id:679) (Token id:Id.Lit_Chars val:'\n' span_id:680) (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:681) 
          (Token id:Id.Lit_Chars val:'\n' span_id:682) (Token id:Id.Lit_Chars val:'\t\tNode-path: directory/file1\n' span_id:683) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:684) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:685) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:686) (Token id:Id.Lit_Chars val:'\t\ttext_no_props hello &&\n' span_id:687) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:688) (Token id:Id.Lit_Chars val:'\t\tNode-path: directory/file2\n' span_id:689) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:690) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:691) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:692) (Token id:Id.Lit_Chars val:'\t\ttext_no_props hi\n' span_id:693) 
          (Token id:Id.Lit_Chars val:'\t} >directory.dump &&\n' span_id:694) (Token id:Id.Lit_Chars val:'\ttry_dump directory.dump &&\n' span_id:695) 
          (Token id:Id.Lit_Chars val:'\n' span_id:696) (Token id:Id.Lit_Chars val:'\tgit ls-tree -r --name-only HEAD >actual.files &&\n' span_id:697) 
          (Token id:Id.Lit_Chars val:'\tgit checkout HEAD directory &&\n' span_id:698) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.files actual.files &&\n' span_id:699) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp hello directory/file1 &&\n' span_id:700) (Token id:Id.Lit_Chars val:'\ttest_cmp hi directory/file2\n' span_id:701)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'branch name with backslash' span_id:710))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:714) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:715) (Token id:Id.Lit_Chars val:'\tsort <<-\\EOF >expect.branch-files &&\n' span_id:716) 
          (Token id:Id.Lit_Chars val:'\ttrunk/file1\n' span_id:717) (Token id:Id.Lit_Chars val:'\ttrunk/file2\n' span_id:718) 
          (Token id:Id.Lit_Chars val:'\t"branches/UpdateFOPto094\\\\/file1"\n' span_id:719) (Token id:Id.Lit_Chars val:'\t"branches/UpdateFOPto094\\\\/file2"\n' span_id:720) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:721) (Token id:Id.Lit_Chars val:'\n' span_id:722) 
          (Token id:Id.Lit_Chars val:'\techo hi >hi &&\n' span_id:723) (Token id:Id.Lit_Chars val:'\techo hello >hello &&\n' span_id:724) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:725) (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:726) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:author author@example.com \\\n'
            span_id: 727
          ) (Token id:Id.Lit_Chars val:'\t\t\tsvn:date "1999-02-02T00:01:02.000000Z" \\\n' span_id:728) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:log "add directory with some files in it" &&\n'
            span_id: 729
          ) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:730) 
          (Token id:Id.Lit_Chars val:'\t} >props.setup &&\n' span_id:731) (Token id:Id.Lit_Chars val:'\t{\n' span_id:732) 
          (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:733) (Token id:Id.Lit_Chars val:'\t\t\tsvn:author brancher@example.com \\\n' span_id:734) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:date "2007-12-06T21:38:34.000000Z" \\\n'
            span_id: 735
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:log "Updating fop to .94 and adjust fo-stylesheets" &&\n'
            span_id: 736
          ) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:737) 
          (Token id:Id.Lit_Chars val:'\t} >props.branch &&\n' span_id:738) (Token id:Id.Lit_Chars val:'\t{\n' span_id:739) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:740) (Token id:Id.Lit_Chars val:'\t\tSVN-fs-dump-format-version: 3\n' span_id:741) 
          (Token id:Id.Lit_Chars val:'\n' span_id:742) (Token id:Id.Lit_Chars val:'\t\tRevision-number: 1\n' span_id:743) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:744) (Token id:Id.Lit_Chars val:'\t\techo Prop-content-length: $(wc -c <props.setup) &&\n' span_id:745) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $(wc -c <props.setup) &&\n'
            span_id: 746
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:747) 
          (Token id:Id.Lit_Chars val:'\t\tcat props.setup &&\n' span_id:748) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:749) 
          (Token id:Id.Lit_Chars val:'\n' span_id:750) (Token id:Id.Lit_Chars val:'\t\tNode-path: trunk\n' span_id:751) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: dir\n' span_id:752) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:753) 
          (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:754) (Token id:Id.Lit_Chars val:'\t\tContent-length: 10\n' span_id:755) 
          (Token id:Id.Lit_Chars val:'\n' span_id:756) (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:757) (Token id:Id.Lit_Chars val:'\n' span_id:758) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: branches\n' span_id:759) (Token id:Id.Lit_Chars val:'\t\tNode-kind: dir\n' span_id:760) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:761) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:762) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 10\n' span_id:763) (Token id:Id.Lit_Chars val:'\n' span_id:764) (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:765) 
          (Token id:Id.Lit_Chars val:'\n' span_id:766) (Token id:Id.Lit_Chars val:'\t\tNode-path: trunk/file1\n' span_id:767) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:768) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:769) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:770) (Token id:Id.Lit_Chars val:'\t\ttext_no_props hello &&\n' span_id:771) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:772) (Token id:Id.Lit_Chars val:'\t\tNode-path: trunk/file2\n' span_id:773) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:774) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:775) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:776) (Token id:Id.Lit_Chars val:'\t\ttext_no_props hi &&\n' span_id:777) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:778) (Token id:Id.Lit_Chars val:'\n' span_id:779) 
          (Token id:Id.Lit_Chars val:'\t\tRevision-number: 2\n' span_id:780) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:781) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Prop-content-length: $(wc -c <props.branch) &&\n'
            span_id: 782
          ) (Token id:Id.Lit_Chars val:'\t\techo Content-length: $(wc -c <props.branch) &&\n' span_id:783) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:784) (Token id:Id.Lit_Chars val:'\t\tcat props.branch &&\n' span_id:785) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF\n' span_id:786) (Token id:Id.Lit_Chars val:'\n' span_id:787) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tNode-path: branches/UpdateFOPto094\\\n'
            span_id: 788
          ) (Token id:Id.Lit_Chars val:'\t\tNode-kind: dir\n' span_id:789) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:790) (Token id:Id.Lit_Chars val:'\t\tNode-copyfrom-rev: 1\n' span_id:791) 
          (Token id:Id.Lit_Chars val:'\t\tNode-copyfrom-path: trunk\n' span_id:792) (Token id:Id.Lit_Chars val:'\n' span_id:793) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: dir\n' span_id:794) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:795) 
          (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 34\n' span_id:796) (Token id:Id.Lit_Chars val:'\t\tContent-length: 34\n' span_id:797) 
          (Token id:Id.Lit_Chars val:'\n' span_id:798) (Token id:Id.Lit_Chars val:'\t\tK 13\n' span_id:799) 
          (Token id:Id.Lit_Chars val:'\t\tsvn:mergeinfo\n' span_id:800) (Token id:Id.Lit_Chars val:'\t\tV 0\n' span_id:801) (Token id:Id.Lit_Chars val:'\n' span_id:802) 
          (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:803) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:804) 
          (Token id:Id.Lit_Chars val:'\t} >branch.dump &&\n' span_id:805) (Token id:Id.Lit_Chars val:'\ttry_dump branch.dump &&\n' span_id:806) 
          (Token id:Id.Lit_Chars val:'\n' span_id:807) (Token id:Id.Lit_Chars val:'\tgit ls-tree -r --name-only HEAD |\n' span_id:808) 
          (Token id:Id.Lit_Chars val:'\tsort >actual.branch-files &&\n' span_id:809) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.branch-files actual.branch-files\n' span_id:810)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'node without action' span_id:819))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:823) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:824) (Token id:Id.Lit_Chars val:'\tcat >inaction.dump <<-\\EOF &&\n' span_id:825) 
          (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:826) (Token id:Id.Lit_Chars val:'\n' span_id:827) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:828) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:829) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:830) (Token id:Id.Lit_Chars val:'\n' span_id:831) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:832) 
          (Token id:Id.Lit_Chars val:'\n' span_id:833) (Token id:Id.Lit_Chars val:'\tNode-path: directory\n' span_id:834) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: dir\n' span_id:835) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:836) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:837) (Token id:Id.Lit_Chars val:'\n' span_id:838) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:839) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:840) (Token id:Id.Lit_Chars val:'\ttry_dump inaction.dump must_fail\n' span_id:841)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'action: add node without text' span_id:850))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:854) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:855) (Token id:Id.Lit_Chars val:'\tcat >textless.dump <<-\\EOF &&\n' span_id:856) 
          (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:857) (Token id:Id.Lit_Chars val:'\n' span_id:858) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:859) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:860) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:861) (Token id:Id.Lit_Chars val:'\n' span_id:862) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:863) 
          (Token id:Id.Lit_Chars val:'\n' span_id:864) (Token id:Id.Lit_Chars val:'\tNode-path: textless\n' span_id:865) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:866) (Token id:Id.Lit_Chars val:'\tNode-action: add\n' span_id:867) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:868) (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:869) 
          (Token id:Id.Lit_Chars val:'\n' span_id:870) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:871) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:872) (Token id:Id.Lit_Chars val:'\ttry_dump textless.dump must_fail\n' span_id:873)
        )
      }
    )
    (C {(test_expect_failure)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'change file mode but keep old content' span_id:882))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:886) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:887) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:888) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:889) (Token id:Id.Lit_Chars val:'\t:120000 100644 OBJID OBJID T\tgreeting\n' span_id:890) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:891) (Token id:Id.Lit_Chars val:'\t:100644 120000 OBJID OBJID T\tgreeting\n' span_id:892) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:893) (Token id:Id.Lit_Chars val:'\t:000000 100644 OBJID OBJID A\tgreeting\n' span_id:894) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:895) (Token id:Id.Lit_Chars val:'\techo "link hello" >expect.blob &&\n' span_id:896) 
          (Token id:Id.Lit_Chars val:'\techo hello >hello &&\n' span_id:897) (Token id:Id.Lit_Chars val:'\tcat >filemode.dump <<-\\EOF &&\n' span_id:898) 
          (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:899) (Token id:Id.Lit_Chars val:'\n' span_id:900) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:901) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:902) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:903) (Token id:Id.Lit_Chars val:'\n' span_id:904) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:905) 
          (Token id:Id.Lit_Chars val:'\n' span_id:906) (Token id:Id.Lit_Chars val:'\tNode-path: greeting\n' span_id:907) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:908) (Token id:Id.Lit_Chars val:'\tNode-action: add\n' span_id:909) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:910) (Token id:Id.Lit_Chars val:'\tText-content-length: 11\n' span_id:911) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 21\n' span_id:912) (Token id:Id.Lit_Chars val:'\n' span_id:913) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:914) 
          (Token id:Id.Lit_Chars val:'\tlink hello\n' span_id:915) (Token id:Id.Lit_Chars val:'\n' span_id:916) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 2\n' span_id:917) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:918) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:919) (Token id:Id.Lit_Chars val:'\n' span_id:920) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:921) 
          (Token id:Id.Lit_Chars val:'\n' span_id:922) (Token id:Id.Lit_Chars val:'\tNode-path: greeting\n' span_id:923) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:924) (Token id:Id.Lit_Chars val:'\tNode-action: change\n' span_id:925) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 33\n' span_id:926) (Token id:Id.Lit_Chars val:'\tContent-length: 33\n' span_id:927) 
          (Token id:Id.Lit_Chars val:'\n' span_id:928) (Token id:Id.Lit_Chars val:'\tK 11\n' span_id:929) 
          (Token id:Id.Lit_Chars val:'\tsvn:special\n' span_id:930) (Token id:Id.Lit_Chars val:'\tV 1\n' span_id:931) (Token id:Id.Lit_Chars val:'\t*\n' span_id:932) 
          (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:933) (Token id:Id.Lit_Chars val:'\n' span_id:934) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 3\n' span_id:935) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:936) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:937) (Token id:Id.Lit_Chars val:'\n' span_id:938) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:939) 
          (Token id:Id.Lit_Chars val:'\n' span_id:940) (Token id:Id.Lit_Chars val:'\tNode-path: greeting\n' span_id:941) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:942) (Token id:Id.Lit_Chars val:'\tNode-action: change\n' span_id:943) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:944) (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:945) 
          (Token id:Id.Lit_Chars val:'\n' span_id:946) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:947) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:948) (Token id:Id.Lit_Chars val:'\ttry_dump filemode.dump &&\n' span_id:949) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:950) (Token id:Id.Lit_Chars val:'\t\tgit rev-list HEAD |\n' span_id:951) 
          (Token id:Id.Lit_Chars val:'\t\tgit diff-tree --root --stdin |\n' span_id:952) (Token id:Id.Lit_Chars val:'\t\tsed "s/$_x40/OBJID/g"\n' span_id:953) 
          (Token id:Id.Lit_Chars val:'\t} >actual &&\n' span_id:954) (Token id:Id.Lit_Chars val:'\tgit show HEAD:greeting >actual.blob &&\n' span_id:955) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit show HEAD^:greeting >actual.target &&\n'
            span_id: 956
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:957) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect.blob actual.blob &&\n' span_id:958) (Token id:Id.Lit_Chars val:'\ttest_cmp hello actual.target\n' span_id:959)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'NUL in property value' span_id:968))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:972) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:973) (Token id:Id.Lit_Chars val:'\techo "commit message" >expect.message &&\n' span_id:974) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:975) (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:976) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tunimportant "something with a NUL (Q)" \\\n'
            span_id: 977
          ) (Token id:Id.Lit_Chars val:'\t\t\tsvn:log "commit message"&&\n' span_id:978) 
          (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:979) (Token id:Id.Lit_Chars val:'\t} |\n' span_id:980) 
          (Token id:Id.Lit_Chars val:'\tq_to_nul >props &&\n' span_id:981) (Token id:Id.Lit_Chars val:'\t{\n' span_id:982) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:983) (Token id:Id.Lit_Chars val:'\t\tSVN-fs-dump-format-version: 3\n' span_id:984) 
          (Token id:Id.Lit_Chars val:'\n' span_id:985) (Token id:Id.Lit_Chars val:'\t\tRevision-number: 1\n' span_id:986) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:987) (Token id:Id.Lit_Chars val:'\t\techo Prop-content-length: $(wc -c <props) &&\n' span_id:988) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $(wc -c <props) &&\n'
            span_id: 989
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:990) 
          (Token id:Id.Lit_Chars val:'\t\tcat props\n' span_id:991) (Token id:Id.Lit_Chars val:'\t} >nulprop.dump &&\n' span_id:992) 
          (Token id:Id.Lit_Chars val:'\ttry_dump nulprop.dump &&\n' span_id:993) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-tree --always -s --format=%s HEAD >actual.message &&\n'
            span_id: 994
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.message actual.message\n' span_id:995)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'NUL in log message, file content, and property name'
            span_id: 1004
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1008) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Caveat: svnadmin 1.6.16 (r1073529) truncates at \\0 in the\n'
            span_id: 1009
          ) (Token id:Id.Lit_Chars val:'\t# svn:specialQnotreally example.\n' span_id:1010) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:1011) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1012) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1013) (Token id:Id.Lit_Chars val:'\t:100644 100644 OBJID OBJID M\tgreeting\n' span_id:1014) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1015) (Token id:Id.Lit_Chars val:'\t:000000 100644 OBJID OBJID A\tgreeting\n' span_id:1016) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1017) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "\\n%s\\n" "something with an ASCII NUL (Q)" >expect.message &&\n'
            span_id: 1018
          ) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" "helQo" >expect.hello1 &&\n' span_id:1019) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "%s\\n" "link hello" >expect.hello2 &&\n'
            span_id: 1020
          ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1021) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tproperties svn:log "something with an ASCII NUL (Q)" &&\n'
            span_id: 1022
          ) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:1023) 
          (Token id:Id.Lit_Chars val:'\t} |\n' span_id:1024) (Token id:Id.Lit_Chars val:'\tq_to_nul >props &&\n' span_id:1025) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1026) (Token id:Id.Lit_Chars val:'\t\tq_to_nul <<-\\EOF &&\n' span_id:1027) 
          (Token id:Id.Lit_Chars val:'\t\tSVN-fs-dump-format-version: 3\n' span_id:1028) (Token id:Id.Lit_Chars val:'\n' span_id:1029) 
          (Token id:Id.Lit_Chars val:'\t\tRevision-number: 1\n' span_id:1030) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1031) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 10\n' span_id:1032) (Token id:Id.Lit_Chars val:'\n' span_id:1033) 
          (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1034) (Token id:Id.Lit_Chars val:'\n' span_id:1035) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: greeting\n' span_id:1036) (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1037) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:1038) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1039) 
          (Token id:Id.Lit_Chars val:'\t\tText-content-length: 6\n' span_id:1040) (Token id:Id.Lit_Chars val:'\t\tContent-length: 16\n' span_id:1041) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1042) (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1043) 
          (Token id:Id.Lit_Chars val:'\t\thelQo\n' span_id:1044) (Token id:Id.Lit_Chars val:'\n' span_id:1045) 
          (Token id:Id.Lit_Chars val:'\t\tRevision-number: 2\n' span_id:1046) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1047) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Prop-content-length: $(wc -c <props) &&\n'
            span_id: 1048
          ) (Token id:Id.Lit_Chars val:'\t\techo Content-length: $(wc -c <props) &&\n' span_id:1049) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1050) (Token id:Id.Lit_Chars val:'\t\tcat props &&\n' span_id:1051) 
          (Token id:Id.Lit_Chars val:'\t\tq_to_nul <<-\\EOF\n' span_id:1052) (Token id:Id.Lit_Chars val:'\n' span_id:1053) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: greeting\n' span_id:1054) (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1055) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: change\n' span_id:1056) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 43\n' span_id:1057) 
          (Token id:Id.Lit_Chars val:'\t\tText-content-length: 11\n' span_id:1058) (Token id:Id.Lit_Chars val:'\t\tContent-length: 54\n' span_id:1059) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1060) (Token id:Id.Lit_Chars val:'\t\tK 21\n' span_id:1061) 
          (Token id:Id.Lit_Chars val:'\t\tsvn:specialQnotreally\n' span_id:1062) (Token id:Id.Lit_Chars val:'\t\tV 1\n' span_id:1063) 
          (Token id:Id.Lit_Chars val:'\t\t*\n' span_id:1064) (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1065) 
          (Token id:Id.Lit_Chars val:'\t\tlink hello\n' span_id:1066) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1067) 
          (Token id:Id.Lit_Chars val:'\t} >8bitclean.dump &&\n' span_id:1068) (Token id:Id.Lit_Chars val:'\ttry_dump 8bitclean.dump &&\n' span_id:1069) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1070) (Token id:Id.Lit_Chars val:'\t\tgit rev-list HEAD |\n' span_id:1071) 
          (Token id:Id.Lit_Chars val:'\t\tgit diff-tree --root --stdin |\n' span_id:1072) (Token id:Id.Lit_Chars val:'\t\tsed "s/$_x40/OBJID/g"\n' span_id:1073) 
          (Token id:Id.Lit_Chars val:'\t} >actual &&\n' span_id:1074) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1075) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit cat-file commit HEAD | nul_to_q &&\n'
            span_id: 1076
          ) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:1077) 
          (Token id:Id.Lit_Chars val:'\t} |\n' span_id:1078) (Token id:Id.Lit_Chars val:'\tsed -ne "/^\\$/,\\$ p" >actual.message &&\n' span_id:1079) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cat-file blob HEAD^:greeting | nul_to_q >actual.hello1 &&\n'
            span_id: 1080
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cat-file blob HEAD:greeting | nul_to_q >actual.hello2 &&\n'
            span_id: 1081
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1082) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect.message actual.message &&\n'
            span_id: 1083
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.hello1 actual.hello1 &&\n' span_id:1084) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect.hello2 actual.hello2\n'
            span_id: 1085
          )
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'change file mode and reiterate content' span_id:1094))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1098) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:1099) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1100) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1101) (Token id:Id.Lit_Chars val:'\t:120000 100644 OBJID OBJID T\tgreeting\n' span_id:1102) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1103) (Token id:Id.Lit_Chars val:'\t:100644 120000 OBJID OBJID T\tgreeting\n' span_id:1104) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1105) (Token id:Id.Lit_Chars val:'\t:000000 100644 OBJID OBJID A\tgreeting\n' span_id:1106) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1107) (Token id:Id.Lit_Chars val:'\techo "link hello" >expect.blob &&\n' span_id:1108) 
          (Token id:Id.Lit_Chars val:'\techo hello >hello &&\n' span_id:1109) (Token id:Id.Lit_Chars val:'\tcat >filemode2.dump <<-\\EOF &&\n' span_id:1110) 
          (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:1111) (Token id:Id.Lit_Chars val:'\n' span_id:1112) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:1113) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1114) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1115) (Token id:Id.Lit_Chars val:'\n' span_id:1116) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1117) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1118) (Token id:Id.Lit_Chars val:'\tNode-path: greeting\n' span_id:1119) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:1120) (Token id:Id.Lit_Chars val:'\tNode-action: add\n' span_id:1121) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1122) (Token id:Id.Lit_Chars val:'\tText-content-length: 11\n' span_id:1123) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 21\n' span_id:1124) (Token id:Id.Lit_Chars val:'\n' span_id:1125) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1126) 
          (Token id:Id.Lit_Chars val:'\tlink hello\n' span_id:1127) (Token id:Id.Lit_Chars val:'\n' span_id:1128) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 2\n' span_id:1129) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1130) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1131) (Token id:Id.Lit_Chars val:'\n' span_id:1132) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1133) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1134) (Token id:Id.Lit_Chars val:'\tNode-path: greeting\n' span_id:1135) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:1136) (Token id:Id.Lit_Chars val:'\tNode-action: change\n' span_id:1137) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 33\n' span_id:1138) (Token id:Id.Lit_Chars val:'\tText-content-length: 11\n' span_id:1139) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 44\n' span_id:1140) (Token id:Id.Lit_Chars val:'\n' span_id:1141) (Token id:Id.Lit_Chars val:'\tK 11\n' span_id:1142) 
          (Token id:Id.Lit_Chars val:'\tsvn:special\n' span_id:1143) (Token id:Id.Lit_Chars val:'\tV 1\n' span_id:1144) (Token id:Id.Lit_Chars val:'\t*\n' span_id:1145) 
          (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1146) (Token id:Id.Lit_Chars val:'\tlink hello\n' span_id:1147) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1148) (Token id:Id.Lit_Chars val:'\tRevision-number: 3\n' span_id:1149) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1150) (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1151) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1152) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1153) (Token id:Id.Lit_Chars val:'\n' span_id:1154) 
          (Token id:Id.Lit_Chars val:'\tNode-path: greeting\n' span_id:1155) (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:1156) 
          (Token id:Id.Lit_Chars val:'\tNode-action: change\n' span_id:1157) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1158) 
          (Token id:Id.Lit_Chars val:'\tText-content-length: 11\n' span_id:1159) (Token id:Id.Lit_Chars val:'\tContent-length: 21\n' span_id:1160) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1161) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1162) 
          (Token id:Id.Lit_Chars val:'\tlink hello\n' span_id:1163) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1164) 
          (Token id:Id.Lit_Chars val:'\ttry_dump filemode2.dump &&\n' span_id:1165) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1166) 
          (Token id:Id.Lit_Chars val:'\t\tgit rev-list HEAD |\n' span_id:1167) (Token id:Id.Lit_Chars val:'\t\tgit diff-tree --root --stdin |\n' span_id:1168) 
          (Token id:Id.Lit_Chars val:'\t\tsed "s/$_x40/OBJID/g"\n' span_id:1169) (Token id:Id.Lit_Chars val:'\t} >actual &&\n' span_id:1170) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit show HEAD:greeting >actual.blob &&\n'
            span_id: 1171
          ) (Token id:Id.Lit_Chars val:'\tgit show HEAD^:greeting >actual.target &&\n' span_id:1172) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1173) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.blob actual.blob &&\n' span_id:1174) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp hello actual.target\n' span_id:1175)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'deltas supported' span_id:1184))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1188) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:1189) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1190) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# (old) h + (inline) ello + (old) \\n\n'
            span_id: 1191
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\tprintf "SVNQ%b%b%s" "Q\\003\\006\\005\\004" "\\001Q\\0204\\001\\002" "ello" |\n'
            span_id: 1192
          ) (Token id:Id.Lit_Chars val:'\t\tq_to_nul\n' span_id:1193) 
          (Token id:Id.Lit_Chars val:'\t} >delta &&\n' span_id:1194) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1195) 
          (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:1196) (Token id:Id.Lit_Chars val:'\t\t\tsvn:author author@example.com \\\n' span_id:1197) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:date "1999-01-05T00:01:002.000000Z" \\\n'
            span_id: 1198
          ) (Token id:Id.Lit_Chars val:'\t\t\tsvn:log "add greeting" &&\n' span_id:1199) 
          (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:1200) (Token id:Id.Lit_Chars val:'\t} >props &&\n' span_id:1201) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1202) (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:1203) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:author author@example.com \\\n'
            span_id: 1204
          ) (Token id:Id.Lit_Chars val:'\t\t\tsvn:date "1999-01-06T00:01:002.000000Z" \\\n' span_id:1205) 
          (Token id:Id.Lit_Chars val:'\t\t\tsvn:log "change it" &&\n' span_id:1206) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:1207) 
          (Token id:Id.Lit_Chars val:'\t} >props2 &&\n' span_id:1208) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1209) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo SVN-fs-dump-format-version: 3 &&\n'
            span_id: 1210
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1211) 
          (Token id:Id.Lit_Chars val:'\t\techo Revision-number: 1 &&\n' span_id:1212) (Token id:Id.Lit_Chars val:'\t\techo Prop-content-length: $(wc -c <props) &&\n' span_id:1213) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $(wc -c <props) &&\n'
            span_id: 1214
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1215) 
          (Token id:Id.Lit_Chars val:'\t\tcat props &&\n' span_id:1216) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:1217) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1218) (Token id:Id.Lit_Chars val:'\t\tNode-path: hello\n' span_id:1219) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1220) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:1221) 
          (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1222) (Token id:Id.Lit_Chars val:'\t\tText-content-length: 3\n' span_id:1223) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 13\n' span_id:1224) (Token id:Id.Lit_Chars val:'\n' span_id:1225) 
          (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1226) (Token id:Id.Lit_Chars val:'\t\thi\n' span_id:1227) (Token id:Id.Lit_Chars val:'\n' span_id:1228) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1229) (Token id:Id.Lit_Chars val:'\t\techo Revision-number: 2 &&\n' span_id:1230) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Prop-content-length: $(wc -c <props2) &&\n'
            span_id: 1231
          ) (Token id:Id.Lit_Chars val:'\t\techo Content-length: $(wc -c <props2) &&\n' span_id:1232) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1233) (Token id:Id.Lit_Chars val:'\t\tcat props2 &&\n' span_id:1234) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:1235) (Token id:Id.Lit_Chars val:'\n' span_id:1236) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: hello\n' span_id:1237) (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1238) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: change\n' span_id:1239) (Token id:Id.Lit_Chars val:'\t\tText-delta: true\n' span_id:1240) 
          (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1241) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1242) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Text-content-length: $(wc -c <delta) &&\n'
            span_id: 1243
          ) (Token id:Id.Lit_Chars val:'\t\techo Content-length: $((10 + $(wc -c <delta))) &&\n' span_id:1244) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1245) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END &&\n' span_id:1246) 
          (Token id:Id.Lit_Chars val:'\t\tcat delta\n' span_id:1247) (Token id:Id.Lit_Chars val:'\t} >delta.dump &&\n' span_id:1248) 
          (Token id:Id.Lit_Chars val:'\ttry_dump delta.dump\n' span_id:1249)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'property deltas supported' span_id:1258))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1262) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:1263) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1264) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1265) (Token id:Id.Lit_Chars val:'\t:100755 100644 OBJID OBJID M\tscript.sh\n' span_id:1266) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1267) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1268) 
          (Token id:Id.Lit_Chars val:'\t\tproperties \\\n' span_id:1269) (Token id:Id.Lit_Chars val:'\t\t\tsvn:author author@example.com \\\n' span_id:1270) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn:date "1999-03-06T00:01:002.000000Z" \\\n'
            span_id: 1271
          ) (Token id:Id.Lit_Chars val:'\t\t\tsvn:log "make an executable, or chmod -x it" &&\n' span_id:1272) 
          (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:1273) (Token id:Id.Lit_Chars val:'\t} >revprops &&\n' span_id:1274) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1275) (Token id:Id.Lit_Chars val:'\t\techo SVN-fs-dump-format-version: 3 &&\n' span_id:1276) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1277) (Token id:Id.Lit_Chars val:'\t\techo Revision-number: 1 &&\n' span_id:1278) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Prop-content-length: $(wc -c <revprops) &&\n'
            span_id: 1279
          ) (Token id:Id.Lit_Chars val:'\t\techo Content-length: $(wc -c <revprops) &&\n' span_id:1280) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1281) (Token id:Id.Lit_Chars val:'\t\tcat revprops &&\n' span_id:1282) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1283) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:1284) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: script.sh\n' span_id:1285) (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1286) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:1287) (Token id:Id.Lit_Chars val:'\t\tText-content-length: 0\n' span_id:1288) 
          (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 39\n' span_id:1289) (Token id:Id.Lit_Chars val:'\t\tContent-length: 39\n' span_id:1290) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1291) (Token id:Id.Lit_Chars val:'\t\tK 14\n' span_id:1292) 
          (Token id:Id.Lit_Chars val:'\t\tsvn:executable\n' span_id:1293) (Token id:Id.Lit_Chars val:'\t\tV 4\n' span_id:1294) 
          (Token id:Id.Lit_Chars val:'\t\ttrue\n' span_id:1295) (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1296) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1297) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1298) 
          (Token id:Id.Lit_Chars val:'\t\techo Revision-number: 2 &&\n' span_id:1299) (Token id:Id.Lit_Chars val:'\t\techo Prop-content-length: $(wc -c <revprops) &&\n' span_id:1300) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $(wc -c <revprops) &&\n'
            span_id: 1301
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1302) 
          (Token id:Id.Lit_Chars val:'\t\tcat revprops &&\n' span_id:1303) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1304) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF\n' span_id:1305) (Token id:Id.Lit_Chars val:'\t\tNode-path: script.sh\n' span_id:1306) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1307) (Token id:Id.Lit_Chars val:'\t\tNode-action: change\n' span_id:1308) 
          (Token id:Id.Lit_Chars val:'\t\tProp-delta: true\n' span_id:1309) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 30\n' span_id:1310) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 30\n' span_id:1311) (Token id:Id.Lit_Chars val:'\n' span_id:1312) (Token id:Id.Lit_Chars val:'\t\tD 14\n' span_id:1313) 
          (Token id:Id.Lit_Chars val:'\t\tsvn:executable\n' span_id:1314) (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1315) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1316) (Token id:Id.Lit_Chars val:'\t} >propdelta.dump &&\n' span_id:1317) 
          (Token id:Id.Lit_Chars val:'\ttry_dump propdelta.dump &&\n' span_id:1318) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1319) 
          (Token id:Id.Lit_Chars val:'\t\tgit rev-list HEAD |\n' span_id:1320) (Token id:Id.Lit_Chars val:'\t\tgit diff-tree --stdin |\n' span_id:1321) 
          (Token id:Id.Lit_Chars val:'\t\tsed "s/$_x40/OBJID/g"\n' span_id:1322) (Token id:Id.Lit_Chars val:'\t} >actual &&\n' span_id:1323) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1324)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} {(SQ (Token id:Id.Lit_Chars val:'properties on /' span_id:1333))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1337) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:1338) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >expect &&\n' span_id:1339) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1340) (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1341) 
          (Token
            id: Id.Lit_Chars
            val: '\t:000000 100644 OBJID OBJID A\tgreeting\n'
            span_id: 1342
          ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1343) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -e "s/X$//" <<-\\EOF >changeroot.dump &&\n'
            span_id: 1344
          ) (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:1345) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1346) (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:1347) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1348) (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1349) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1350) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1351) (Token id:Id.Lit_Chars val:'\n' span_id:1352) 
          (Token id:Id.Lit_Chars val:'\tNode-path: greeting\n' span_id:1353) (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:1354) 
          (Token id:Id.Lit_Chars val:'\tNode-action: add\n' span_id:1355) (Token id:Id.Lit_Chars val:'\tText-content-length: 0\n' span_id:1356) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1357) (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1358) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1359) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1360) (Token id:Id.Lit_Chars val:'\n' span_id:1361) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 2\n' span_id:1362) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1363) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1364) (Token id:Id.Lit_Chars val:'\n' span_id:1365) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1366) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1367) (Token id:Id.Lit_Chars val:'\tNode-path: X\n' span_id:1368) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: dir\n' span_id:1369) (Token id:Id.Lit_Chars val:'\tNode-action: change\n' span_id:1370) 
          (Token id:Id.Lit_Chars val:'\tProp-delta: true\n' span_id:1371) (Token id:Id.Lit_Chars val:'\tProp-content-length: 43\n' span_id:1372) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 43\n' span_id:1373) (Token id:Id.Lit_Chars val:'\n' span_id:1374) (Token id:Id.Lit_Chars val:'\tK 10\n' span_id:1375) 
          (Token id:Id.Lit_Chars val:'\tsvn:ignore\n' span_id:1376) (Token id:Id.Lit_Chars val:'\tV 11\n' span_id:1377) 
          (Token id:Id.Lit_Chars val:'\tbuild-area\n' span_id:1378) (Token id:Id.Lit_Chars val:'\n' span_id:1379) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1380) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1381) (Token id:Id.Lit_Chars val:'\ttry_dump changeroot.dump &&\n' span_id:1382) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1383) (Token id:Id.Lit_Chars val:'\t\tgit rev-list HEAD |\n' span_id:1384) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit diff-tree --root --always --stdin |\n'
            span_id: 1385
          ) (Token id:Id.Lit_Chars val:'\t\tsed "s/$_x40/OBJID/g"\n' span_id:1386) 
          (Token id:Id.Lit_Chars val:'\t} >actual &&\n' span_id:1387) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1388)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'deltas for typechange' span_id:1397))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1401) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:1402) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1403) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1404) (Token id:Id.Lit_Chars val:'\t:120000 100644 OBJID OBJID T\ttest-file\n' span_id:1405) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1406) (Token id:Id.Lit_Chars val:'\t:100755 120000 OBJID OBJID T\ttest-file\n' span_id:1407) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1408) (Token id:Id.Lit_Chars val:'\t:000000 100755 OBJID OBJID A\ttest-file\n' span_id:1409) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1410) (Token id:Id.Lit_Chars val:'\tcat >deleteprop.dump <<-\\EOF &&\n' span_id:1411) 
          (Token id:Id.Lit_Chars val:'\tSVN-fs-dump-format-version: 3\n' span_id:1412) (Token id:Id.Lit_Chars val:'\n' span_id:1413) 
          (Token id:Id.Lit_Chars val:'\tRevision-number: 1\n' span_id:1414) (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1415) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1416) (Token id:Id.Lit_Chars val:'\n' span_id:1417) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1418) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1419) (Token id:Id.Lit_Chars val:'\tNode-path: test-file\n' span_id:1420) 
          (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:1421) (Token id:Id.Lit_Chars val:'\tNode-action: add\n' span_id:1422) 
          (Token id:Id.Lit_Chars val:'\tProp-delta: true\n' span_id:1423) (Token id:Id.Lit_Chars val:'\tProp-content-length: 35\n' span_id:1424) 
          (Token id:Id.Lit_Chars val:'\tText-content-length: 17\n' span_id:1425) (Token id:Id.Lit_Chars val:'\tContent-length: 52\n' span_id:1426) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1427) (Token id:Id.Lit_Chars val:'\tK 14\n' span_id:1428) 
          (Token id:Id.Lit_Chars val:'\tsvn:executable\n' span_id:1429) (Token id:Id.Lit_Chars val:'\tV 0\n' span_id:1430) (Token id:Id.Lit_Chars val:'\n' span_id:1431) 
          (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1432) (Token id:Id.Lit_Chars val:'\tlink testing 123\n' span_id:1433) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1434) (Token id:Id.Lit_Chars val:'\tRevision-number: 2\n' span_id:1435) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1436) (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1437) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1438) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1439) (Token id:Id.Lit_Chars val:'\n' span_id:1440) 
          (Token id:Id.Lit_Chars val:'\tNode-path: test-file\n' span_id:1441) (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:1442) 
          (Token id:Id.Lit_Chars val:'\tNode-action: change\n' span_id:1443) (Token id:Id.Lit_Chars val:'\tProp-delta: true\n' span_id:1444) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 53\n' span_id:1445) (Token id:Id.Lit_Chars val:'\tText-content-length: 17\n' span_id:1446) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 70\n' span_id:1447) (Token id:Id.Lit_Chars val:'\n' span_id:1448) (Token id:Id.Lit_Chars val:'\tK 11\n' span_id:1449) 
          (Token id:Id.Lit_Chars val:'\tsvn:special\n' span_id:1450) (Token id:Id.Lit_Chars val:'\tV 1\n' span_id:1451) (Token id:Id.Lit_Chars val:'\t*\n' span_id:1452) 
          (Token id:Id.Lit_Chars val:'\tD 14\n' span_id:1453) (Token id:Id.Lit_Chars val:'\tsvn:executable\n' span_id:1454) 
          (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1455) (Token id:Id.Lit_Chars val:'\tlink testing 231\n' span_id:1456) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1457) (Token id:Id.Lit_Chars val:'\tRevision-number: 3\n' span_id:1458) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 10\n' span_id:1459) (Token id:Id.Lit_Chars val:'\tContent-length: 10\n' span_id:1460) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1461) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1462) (Token id:Id.Lit_Chars val:'\n' span_id:1463) 
          (Token id:Id.Lit_Chars val:'\tNode-path: test-file\n' span_id:1464) (Token id:Id.Lit_Chars val:'\tNode-kind: file\n' span_id:1465) 
          (Token id:Id.Lit_Chars val:'\tNode-action: change\n' span_id:1466) (Token id:Id.Lit_Chars val:'\tProp-delta: true\n' span_id:1467) 
          (Token id:Id.Lit_Chars val:'\tProp-content-length: 27\n' span_id:1468) (Token id:Id.Lit_Chars val:'\tText-content-length: 17\n' span_id:1469) 
          (Token id:Id.Lit_Chars val:'\tContent-length: 44\n' span_id:1470) (Token id:Id.Lit_Chars val:'\n' span_id:1471) (Token id:Id.Lit_Chars val:'\tD 11\n' span_id:1472) 
          (Token id:Id.Lit_Chars val:'\tsvn:special\n' span_id:1473) (Token id:Id.Lit_Chars val:'\tPROPS-END\n' span_id:1474) 
          (Token id:Id.Lit_Chars val:'\tlink testing 321\n' span_id:1475) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1476) 
          (Token id:Id.Lit_Chars val:'\ttry_dump deleteprop.dump &&\n' span_id:1477) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1478) 
          (Token id:Id.Lit_Chars val:'\t\tgit rev-list HEAD |\n' span_id:1479) (Token id:Id.Lit_Chars val:'\t\tgit diff-tree --root --stdin |\n' span_id:1480) 
          (Token id:Id.Lit_Chars val:'\t\tsed "s/$_x40/OBJID/g"\n' span_id:1481) (Token id:Id.Lit_Chars val:'\t} >actual &&\n' span_id:1482) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1483)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:'deltas need not consume the whole preimage' span_id:1492))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1496) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:1497) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:1498) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1499) (Token id:Id.Lit_Chars val:'\t:120000 100644 OBJID OBJID T\tpostimage\n' span_id:1500) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1501) (Token id:Id.Lit_Chars val:'\t:100644 120000 OBJID OBJID T\tpostimage\n' span_id:1502) 
          (Token id:Id.Lit_Chars val:'\tOBJID\n' span_id:1503) (Token id:Id.Lit_Chars val:'\t:000000 100644 OBJID OBJID A\tpostimage\n' span_id:1504) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1505) (Token id:Id.Lit_Chars val:'\techo "first preimage" >expect.1 &&\n' span_id:1506) 
          (Token id:Id.Lit_Chars val:'\tprintf target >expect.2 &&\n' span_id:1507) (Token id:Id.Lit_Chars val:'\tprintf lnk >expect.3 &&\n' span_id:1508) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1509) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tprintf "SVNQ%b%b%b" "QQ\\017\\001\\017" "\\0217" "first preimage\\n" |\n'
            span_id: 1510
          ) (Token id:Id.Lit_Chars val:'\t\tq_to_nul\n' span_id:1511) 
          (Token id:Id.Lit_Chars val:'\t} >delta.1 &&\n' span_id:1512) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1513) 
          (Token id:Id.Lit_Chars val:'\t\tproperties svn:special "*" &&\n' span_id:1514) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END\n' span_id:1515) 
          (Token id:Id.Lit_Chars val:'\t} >symlink.props &&\n' span_id:1516) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1517) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\tprintf "SVNQ%b%b%b" "Q\\002\\013\\004\\012" "\\0201\\001\\001\\0211" "lnk target" |\n'
            span_id: 1518
          ) (Token id:Id.Lit_Chars val:'\t\tq_to_nul\n' span_id:1519) 
          (Token id:Id.Lit_Chars val:'\t} >delta.2 &&\n' span_id:1520) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1521) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tprintf "SVNQ%b%b" "Q\\004\\003\\004Q" "\\001Q\\002\\002" |\n'
            span_id: 1522
          ) (Token id:Id.Lit_Chars val:'\t\tq_to_nul\n' span_id:1523) 
          (Token id:Id.Lit_Chars val:'\t} >delta.3 &&\n' span_id:1524) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1525) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:1526) (Token id:Id.Lit_Chars val:'\t\tSVN-fs-dump-format-version: 3\n' span_id:1527) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1528) (Token id:Id.Lit_Chars val:'\t\tRevision-number: 1\n' span_id:1529) 
          (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1530) (Token id:Id.Lit_Chars val:'\t\tContent-length: 10\n' span_id:1531) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1532) (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1533) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1534) (Token id:Id.Lit_Chars val:'\t\tNode-path: postimage\n' span_id:1535) 
          (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1536) (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:1537) 
          (Token id:Id.Lit_Chars val:'\t\tText-delta: true\n' span_id:1538) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1539) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1540) (Token id:Id.Lit_Chars val:'\t\techo Text-content-length: $(wc -c <delta.1) &&\n' span_id:1541) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $((10 + $(wc -c <delta.1))) &&\n'
            span_id: 1542
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1543) 
          (Token id:Id.Lit_Chars val:'\t\techo PROPS-END &&\n' span_id:1544) (Token id:Id.Lit_Chars val:'\t\tcat delta.1 &&\n' span_id:1545) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:1546) (Token id:Id.Lit_Chars val:'\n' span_id:1547) 
          (Token id:Id.Lit_Chars val:'\t\tRevision-number: 2\n' span_id:1548) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1549) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 10\n' span_id:1550) (Token id:Id.Lit_Chars val:'\n' span_id:1551) 
          (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1552) (Token id:Id.Lit_Chars val:'\n' span_id:1553) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: postimage\n' span_id:1554) (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1555) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: change\n' span_id:1556) (Token id:Id.Lit_Chars val:'\t\tText-delta: true\n' span_id:1557) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1558) (Token id:Id.Lit_Chars val:'\t\techo Prop-content-length: $(wc -c <symlink.props) &&\n' span_id:1559) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Text-content-length: $(wc -c <delta.2) &&\n'
            span_id: 1560
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $(($(wc -c <symlink.props) + $(wc -c <delta.2))) &&\n'
            span_id: 1561
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1562) 
          (Token id:Id.Lit_Chars val:'\t\tcat symlink.props &&\n' span_id:1563) (Token id:Id.Lit_Chars val:'\t\tcat delta.2 &&\n' span_id:1564) 
          (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:1565) (Token id:Id.Lit_Chars val:'\n' span_id:1566) 
          (Token id:Id.Lit_Chars val:'\t\tRevision-number: 3\n' span_id:1567) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1568) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 10\n' span_id:1569) (Token id:Id.Lit_Chars val:'\n' span_id:1570) 
          (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1571) (Token id:Id.Lit_Chars val:'\n' span_id:1572) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: postimage\n' span_id:1573) (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1574) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: change\n' span_id:1575) (Token id:Id.Lit_Chars val:'\t\tText-delta: true\n' span_id:1576) 
          (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1577) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1578) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Text-content-length: $(wc -c <delta.3) &&\n'
            span_id: 1579
          ) (Token id:Id.Lit_Chars val:'\t\techo Content-length: $((10 + $(wc -c <delta.3))) &&\n' span_id:1580) 
          (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1581) (Token id:Id.Lit_Chars val:'\t\techo PROPS-END &&\n' span_id:1582) 
          (Token id:Id.Lit_Chars val:'\t\tcat delta.3 &&\n' span_id:1583) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:1584) 
          (Token id:Id.Lit_Chars val:'\t} >deltapartial.dump &&\n' span_id:1585) (Token id:Id.Lit_Chars val:'\ttry_dump deltapartial.dump &&\n' span_id:1586) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1587) (Token id:Id.Lit_Chars val:'\t\tgit rev-list HEAD |\n' span_id:1588) 
          (Token id:Id.Lit_Chars val:'\t\tgit diff-tree --root --stdin |\n' span_id:1589) (Token id:Id.Lit_Chars val:'\t\tsed "s/$_x40/OBJID/g"\n' span_id:1590) 
          (Token id:Id.Lit_Chars val:'\t} >actual &&\n' span_id:1591) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1592) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit show HEAD:postimage >actual.3 &&\n'
            span_id: 1593
          ) (Token id:Id.Lit_Chars val:'\tgit show HEAD^:postimage >actual.2 &&\n' span_id:1594) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit show HEAD^^:postimage >actual.1 &&\n'
            span_id: 1595
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.1 actual.1 &&\n' span_id:1596) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect.2 actual.2 &&\n' span_id:1597) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.3 actual.3\n' span_id:1598)
        )
      }
    )
    (C {(test_expect_success)} {(PIPE)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'no hang for delta trying to read past end of preimage'
            span_id: 1607
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1611) 
          (Token id:Id.Lit_Chars val:'\treinit_git &&\n' span_id:1612) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1613) 
          (Token id:Id.Lit_Chars val:'\t\t# COPY 1\n' span_id:1614) (Token id:Id.Lit_Chars val:'\t\tprintf "SVNQ%b%b" "Q\\001\\001\\002Q" "\\001Q" |\n' span_id:1615) 
          (Token id:Id.Lit_Chars val:'\t\tq_to_nul\n' span_id:1616) (Token id:Id.Lit_Chars val:'\t} >greedy.delta &&\n' span_id:1617) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1618) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF &&\n' span_id:1619) 
          (Token id:Id.Lit_Chars val:'\t\tSVN-fs-dump-format-version: 3\n' span_id:1620) (Token id:Id.Lit_Chars val:'\n' span_id:1621) 
          (Token id:Id.Lit_Chars val:'\t\tRevision-number: 1\n' span_id:1622) (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1623) 
          (Token id:Id.Lit_Chars val:'\t\tContent-length: 10\n' span_id:1624) (Token id:Id.Lit_Chars val:'\n' span_id:1625) 
          (Token id:Id.Lit_Chars val:'\t\tPROPS-END\n' span_id:1626) (Token id:Id.Lit_Chars val:'\n' span_id:1627) 
          (Token id:Id.Lit_Chars val:'\t\tNode-path: bootstrap\n' span_id:1628) (Token id:Id.Lit_Chars val:'\t\tNode-kind: file\n' span_id:1629) 
          (Token id:Id.Lit_Chars val:'\t\tNode-action: add\n' span_id:1630) (Token id:Id.Lit_Chars val:'\t\tText-delta: true\n' span_id:1631) 
          (Token id:Id.Lit_Chars val:'\t\tProp-content-length: 10\n' span_id:1632) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1633) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Text-content-length: $(wc -c <greedy.delta) &&\n'
            span_id: 1634
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Content-length: $((10 + $(wc -c <greedy.delta))) &&\n'
            span_id: 1635
          ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1636) 
          (Token id:Id.Lit_Chars val:'\t\techo PROPS-END &&\n' span_id:1637) (Token id:Id.Lit_Chars val:'\t\tcat greedy.delta &&\n' span_id:1638) 
          (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:1639) (Token id:Id.Lit_Chars val:'\t} >greedydelta.dump &&\n' span_id:1640) 
          (Token
            id: Id.Lit_Chars
            val: '\ttry_dump greedydelta.dump must_fail might_fail\n'
            span_id: 1641
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up svn repo' span_id:1648))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1652) 
          (Token id:Id.Lit_Chars val:'\tsvnconf=$PWD/svnconf &&\n' span_id:1653) (Token id:Id.Lit_Chars val:'\tmkdir -p "$svnconf" &&\n' span_id:1654) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1655) (Token id:Id.Lit_Chars val:'\tif\n' span_id:1656) 
          (Token id:Id.Lit_Chars val:'\t\tsvnadmin -h >/dev/null 2>&1 &&\n' span_id:1657) (Token id:Id.Lit_Chars val:'\t\tsvnadmin create simple-svn &&\n' span_id:1658) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvnadmin load simple-svn <"$TEST_DIRECTORY/t9135/svn.dump" &&\n'
            span_id: 1659
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn export --config-dir "$svnconf" "file://$PWD/simple-svn" simple-svnco\n'
            span_id: 1660
          ) (Token id:Id.Lit_Chars val:'\tthen\n' span_id:1661) 
          (Token id:Id.Lit_Chars val:'\t\ttest_set_prereq SVNREPO\n' span_id:1662) (Token id:Id.Lit_Chars val:'\tfi\n' span_id:1663)
        )
      }
    )
    (C {(test_expect_success)} {(SVNREPO) (Id.Lit_Comma ',') (PIPE)} 
      {(SQ (Token id:Id.Lit_Chars val:t9135/svn.dump span_id:1674))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1678) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p simple-git &&\n' span_id:1679) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1680) 
          (Token id:Id.Lit_Chars val:'\t\tcd simple-git &&\n' span_id:1681) (Token id:Id.Lit_Chars val:'\t\treinit_git &&\n' span_id:1682) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttry_dump "$TEST_DIRECTORY/t9135/svn.dump"\n'
            span_id: 1683
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1684) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1685) 
          (Token id:Id.Lit_Chars val:'\t\tcd simple-svnco &&\n' span_id:1686) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1687) 
          (Token id:Id.Lit_Chars val:'\t\tgit add . &&\n' span_id:1688) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../simple-git master &&\n' span_id:1689) 
          (Token id:Id.Lit_Chars val:'\t\tgit diff --exit-code FETCH_HEAD\n' span_id:1690) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1691)
        )
      }
    )
    (C {(test_done)})
  ]
)