(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 dcommit --interactive series' span_id:12))}
          spids: [10]
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initialize repo' span_id:23))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:27) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd mkdir -m"mkdir test-interactive" "$svnrepo/test-interactive" &&\n'
            span_id: 28
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit svn clone "$svnrepo/test-interactive" test-interactive &&\n'
            span_id: 29
          ) (Token id:Id.Lit_Chars val:'\tcd test-interactive &&\n' span_id:30) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch foo && git add foo && git commit -m"foo: first commit" &&\n'
            span_id: 31
          ) (Token id:Id.Lit_Chars val:'\tgit svn dcommit\n' span_id:32) 
          (Token id:Id.Lit_Chars val:'\t' span_id:33)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'answers: y [\\n] yes' span_id:40))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:44) (Token id:Id.Lit_Chars val:'\t(\n' span_id:45) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #1" >> foo && git commit -a -m"change #1" &&\n'
            span_id: 46
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #2" >> foo && git commit -a -m"change #2" &&\n'
            span_id: 47
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #3" >> foo && git commit -a -m"change #3" &&\n'
            span_id: 48
          ) (Token id:Id.Lit_Chars val:'\t\t( echo "y\n' span_id:49) (Token id:Id.Lit_Chars val:'\n' span_id:50) 
          (Token
            id: Id.Lit_Chars
            val: 'y" | GIT_SVN_NOTTY=1 git svn dcommit --interactive ) &&\n'
            span_id: 51
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest $(git rev-parse HEAD) = $(git rev-parse remotes/git-svn)\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:53) (Token id:Id.Lit_Chars val:'\t' span_id:54)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'answers: yes yes no' span_id:61))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) (Token id:Id.Lit_Chars val:'\t(\n' span_id:66) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #1" >> foo && git commit -a -m"change #1" &&\n'
            span_id: 67
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #2" >> foo && git commit -a -m"change #2" &&\n'
            span_id: 68
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #3" >> foo && git commit -a -m"change #3" &&\n'
            span_id: 69
          ) (Token id:Id.Lit_Chars val:'\t\t( echo "yes\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'yes\n' span_id:71) (Token id:Id.Lit_Chars val:'no" | GIT_SVN_NOTTY=1 git svn dcommit --interactive ) &&\n' span_id:72) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest $(git rev-parse HEAD^^^) = $(git rev-parse remotes/git-svn) &&\n'
            span_id: 73
          ) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard remotes/git-svn\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:75) (Token id:Id.Lit_Chars val:'\t' span_id:76)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'answers: yes quit' span_id:83))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id:Id.Lit_Chars val:'\t(\n' span_id:88) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #1" >> foo && git commit -a -m"change #1" &&\n'
            span_id: 89
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #2" >> foo && git commit -a -m"change #2" &&\n'
            span_id: 90
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #3" >> foo && git commit -a -m"change #3" &&\n'
            span_id: 91
          ) (Token id:Id.Lit_Chars val:'\t\t( echo "yes\n' span_id:92) 
          (Token
            id: Id.Lit_Chars
            val: 'quit" | GIT_SVN_NOTTY=1 git svn dcommit --interactive ) &&\n'
            span_id: 93
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest $(git rev-parse HEAD^^^) = $(git rev-parse remotes/git-svn) &&\n'
            span_id: 94
          ) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard remotes/git-svn\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:96) (Token id:Id.Lit_Chars val:'\t' span_id:97)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'answers: all' span_id:104))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:109) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #1" >> foo && git commit -a -m"change #1" &&\n'
            span_id: 110
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #2" >> foo && git commit -a -m"change #2" &&\n'
            span_id: 111
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "change #3" >> foo && git commit -a -m"change #3" &&\n'
            span_id: 112
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t( echo "all" | GIT_SVN_NOTTY=1 git svn dcommit --interactive ) &&\n'
            span_id: 113
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest $(git rev-parse HEAD) = $(git rev-parse remotes/git-svn) &&\n'
            span_id: 114
          ) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard remotes/git-svn\n' span_id:115) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:116) (Token id:Id.Lit_Chars val:'\t' span_id:117)
        )
      }
    )
    (C {(test_done)})
  ]
)