(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 p4 skipSubmitEdit config variables' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./lib-git-p4.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'start p4d' span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\tstart_p4d\n' span_id:23)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'init depot' span_id:30))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:34) (Token id:Id.Lit_Chars val:'\t(\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\t\techo file1 >file1 &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add file1 &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "change 1"\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:40)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no config, unedited, say yes' span_id:50))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:54) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone --dest="$git" //depot &&\n'
            span_id: 55
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\t\techo line >>file1 &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m "change 2" &&\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\t\techo y | git p4 submit &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\tp4 changes //depot/... >wc &&\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 2 wc\n' span_id:63) (Token id:Id.Lit_Chars val:'\t)\n' span_id:64)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'no config, unedited, say no' span_id:71))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone --dest="$git" //depot &&\n'
            span_id: 76
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:78) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\t\techo line >>file1 &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m "change 3 (not really)" &&\n' span_id:81) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tprintf "bad response\\nn\\n" | test_expect_code 1 git p4 submit &&\n'
            span_id: 82
          ) (Token id:Id.Lit_Chars val:'\t\tp4 changes //depot/... >wc &&\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 2 wc\n' span_id:84) (Token id:Id.Lit_Chars val:'\t)\n' span_id:85)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:skipSubmitEdit span_id:92))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:96) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone --dest="$git" //depot &&\n'
            span_id: 97
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:99) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:100) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config git-p4.skipSubmitEdit true &&\n'
            span_id: 101
          ) (Token id:Id.Lit_Chars val:'\t\t# will fail if editor is even invoked\n' span_id:102) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config core.editor /bin/false &&\n'
            span_id: 103
          ) (Token id:Id.Lit_Chars val:'\t\techo line >>file1 &&\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m "change 3" &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit &&\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\t\tp4 changes //depot/... >wc &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 3 wc\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:109)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:skipSubmitEditCheck span_id:116))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone --dest="$git" //depot &&\n'
            span_id: 121
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:123) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:124) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config git-p4.skipSubmitEditCheck true &&\n'
            span_id: 125
          ) (Token id:Id.Lit_Chars val:'\t\techo line >>file1 &&\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m "change 4" &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\t\tgit p4 submit &&\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\t\tp4 changes //depot/... >wc &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 4 wc\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:131)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no config, edited' span_id:141))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:145) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone --dest="$git" //depot &&\n'
            span_id: 146
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm ed.sh" &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\tcat >ed.sh <<-EOF &&\n' span_id:149) 
          (Token id:Id.Lit_Chars val:'\t\t#!$SHELL_PATH\n' span_id:150) (Token id:Id.Lit_Chars val:'\t\tsleep 1\n' span_id:151) 
          (Token id:Id.Lit_Chars val:'\t\ttouch "\\$1"\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\texit 0\n' span_id:153) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:154) (Token id:Id.Lit_Chars val:'\tchmod 755 ed.sh &&\n' span_id:155) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:156) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:157) 
          (Token id:Id.Lit_Chars val:'\t\techo line >>file1 &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m "change 5" &&\n' span_id:159) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tP4EDITOR="\\"$TRASH_DIRECTORY/ed.sh\\"" &&\n'
            span_id: 160
          ) (Token id:Id.Lit_Chars val:'\t\texport P4EDITOR &&\n' span_id:161) 
          (Token id:Id.Lit_Chars val:'\t\tgit p4 submit &&\n' span_id:162) (Token id:Id.Lit_Chars val:'\t\tp4 changes //depot/... >wc &&\n' span_id:163) 
          (Token id:Id.Lit_Chars val:'\t\ttest_line_count = 5 wc\n' span_id:164) (Token id:Id.Lit_Chars val:'\t)\n' span_id:165)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'kill p4d' span_id:172))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:176) 
          (Token id:Id.Lit_Chars val:'\tkill_p4d\n' span_id:177)
        )
      }
    )
    (C {(test_done)})
  ]
)