(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:'git svn authorship' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup svn repository' span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd checkout "$svnrepo" work.svn &&\n'
            span_id: 22
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\t\tcd work.svn &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\t\techo >file\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\t\tsvn_cmd add file\n' span_id:26) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "first commit" file\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:28)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'interact with it via git svn' span_id:35))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\tmkdir work.git &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\t(\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\t\tcd work.git &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\t\tgit svn init "$svnrepo"\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\t\tgit svn fetch &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\t\techo modification >file &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m second &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\tgit svn dcommit &&\n' span_id:51) 
          (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\t\techo "further modification" >file &&\n' span_id:53) 
          (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m third &&\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:57) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit svn --add-author-from dcommit &&\n'
            span_id: 58
          ) (Token id:Id.Lit_Chars val:'\n' span_id:59) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "yet further modification" >file &&\n'
            span_id: 60
          ) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m fourth &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\t\tgit svn --add-author-from --use-log-author dcommit &&\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\n' span_id:66) (Token id:Id.Lit_Chars val:'\t\tgit log &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\t\tgit show -s HEAD^^ >../actual.2 &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\t\tgit show -s HEAD^  >../actual.3 &&\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\t\tgit show -s HEAD   >../actual.4\n' span_id:71) (Token id:Id.Lit_Chars val:'\n' span_id:72) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\n' span_id:74) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Make sure that --add-author-from without --use-log-author\n'
            span_id: 75
          ) (Token id:Id.Lit_Chars val:'\t# did not affect the authorship information\n' span_id:76) 
          (Token
            id: Id.Lit_Chars
            val: '\tmyself=$(grep "^Author: " actual.2) &&\n'
            span_id: 77
          ) (Token id:Id.Lit_Chars val:'\tunaffected=$(grep "^Author: " actual.3) &&\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'\ttest "z$myself" = "z$unaffected" &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Make sure lack of --add-author-from did not add cruft\n'
            span_id: 81
          ) (Token id:Id.Lit_Chars val:'\t! grep "^    From: A U Thor " actual.2 &&\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\n' span_id:83) (Token id:Id.Lit_Chars val:'\t# Make sure --add-author-from added cruft\n' span_id:84) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^    From: A U Thor " actual.3 &&\n'
            span_id: 85
          ) (Token id:Id.Lit_Chars val:'\tgrep "^    From: A U Thor " actual.4 &&\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\n' span_id:87) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Make sure --add-author-from with --use-log-author affected\n'
            span_id: 88
          ) (Token id:Id.Lit_Chars val:'\t# the authorship information\n' span_id:89) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "^Author: A U Thor " actual.4 &&\n'
            span_id: 90
          ) (Token id:Id.Lit_Chars val:'\n' span_id:91) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Make sure there are no commit messages with excess blank lines\n'
            span_id: 92
          ) (Token id:Id.Lit_Chars val:'\ttest $(grep "^ " actual.2 | wc -l) = 3 &&\n' span_id:93) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(grep "^ " actual.3 | wc -l) = 5 &&\n'
            span_id: 94
          ) (Token id:Id.Lit_Chars val:'\ttest $(grep "^ " actual.4 | wc -l) = 5 &&\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\n' span_id:96) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Make sure there are no svn commit messages with excess blank lines\n'
            span_id: 97
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\t\tcd work.svn &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:100) 
          (Token id:Id.Lit_Chars val:'\t\t\n' span_id:101) (Token id:Id.Lit_Chars val:'\t\ttest $(svn_cmd log -r2:2 | wc -l) = 5 &&\n' span_id:102) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest $(svn_cmd log -r4:4 | wc -l) = 7\n'
            span_id: 103
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:104)
        )
      }
    )
    (C {(test_done)})
  ]
)