(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ("Test the svn importer's input handling routines.\n") ('\n') 
                ('These tests provide some simple checks that the line_buffer API\n') ('behaves as advertised.\n') ('\n') 
                ('While at it, check that input of newlines and null bytes are handled\n') ('correctly.\n')
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'hello world' span_id:23))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\techo ">HELLO" >expect &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\ttest-line-buffer <<-\\EOF >actual &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tbinary 6\n' span_id:30) (Token id:Id.Lit_Chars val:'\tHELLO\n' span_id:31) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:32) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:33)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'0-length read, send along greeting' span_id:40))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\techo ">HELLO" >expect &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\ttest-line-buffer <<-\\EOF >actual &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\tbinary 0\n' span_id:47) (Token id:Id.Lit_Chars val:'\tcopy 6\n' span_id:48) (Token id:Id.Lit_Chars val:'\tHELLO\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:50) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:51)
        )
      }
    )
    (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'read from file descriptor' span_id:61))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\trm -f input &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\techo hello >expect &&\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\techo hello >input &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\techo copy 6 |\n' span_id:69) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-line-buffer "&4" 4<input >actual &&\n'
            span_id: 70
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:71)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'skip, copy null byte' span_id:78))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\techo Q | q_to_nul >expect &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\tq_to_nul <<-\\EOF | test-line-buffer >actual &&\n' span_id:84) 
          (Token id:Id.Lit_Chars val:'\tskip 2\n' span_id:85) (Token id:Id.Lit_Chars val:'\tQ\n' span_id:86) (Token id:Id.Lit_Chars val:'\tcopy 2\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\tQ\n' span_id:88) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:90)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'read null byte' span_id:97))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:101) 
          (Token
            id: Id.Lit_Chars
            val: '\techo ">QhelloQ" | q_to_nul >expect &&\n'
            span_id: 102
          ) (Token id:Id.Lit_Chars val:'\tq_to_nul <<-\\EOF | test-line-buffer >actual &&\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\tbinary 8\n' span_id:104) (Token id:Id.Lit_Chars val:'\tQhelloQ\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:106) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:107)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'long reads are truncated' span_id:114))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:118) 
          (Token id:Id.Lit_Chars val:'\techo ">foo" >expect &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\ttest-line-buffer <<-\\EOF >actual &&\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\tbinary 5\n' span_id:121) (Token id:Id.Lit_Chars val:'\tfoo\n' span_id:122) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:124)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'long copies are truncated' span_id:131))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:135) 
          (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" ">" foo >expect &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\ttest-line-buffer <<-\\EOF >actual &&\n' span_id:137) 
          (Token id:Id.Lit_Chars val:'\tbinary 1\n' span_id:138) (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\tcopy 5\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\tfoo\n' span_id:141) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:143)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'long binary reads are truncated' span_id:150))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\techo ">foo" >expect &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\ttest-line-buffer <<-\\EOF >actual &&\n' span_id:156) 
          (Token id:Id.Lit_Chars val:'\tbinary 5\n' span_id:157) (Token id:Id.Lit_Chars val:'\tfoo\n' span_id:158) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:159) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:160)
        )
      }
    )
    (C {(test_done)})
  ]
)