(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 transparency to shell metachars in filenames'
                  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 "file1"\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:'shell metachars in filenames' span_id:47))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:51) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone --dest="$git" //depot &&\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:53) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:55) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config git-p4.skipSubmitEditCheck true &&\n'
            span_id: 56
          ) (Token id:Id.Lit_Chars val:'\t\techo f1 >foo\\$bar &&\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\t\tgit add foo\\$bar &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\t\techo f2 >"file with spaces" &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t\tgit add "file with spaces" &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "add files" &&\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tP4EDITOR="test-chmtime +5" git p4 submit\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\t(\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\t\tp4 sync ... &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\t\ttest -e "file with spaces" &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\t\ttest -e "foo\\$bar"\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:69)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'deleting with shell metachars' span_id:76))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone --dest="$git" //depot &&\n'
            span_id: 81
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:83) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:84) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config git-p4.skipSubmitEditCheck true &&\n'
            span_id: 85
          ) (Token id:Id.Lit_Chars val:'\t\tgit rm foo\\$bar &&\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\t\tgit rm file\\ with\\ spaces &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "remove files" &&\n' span_id:88) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tP4EDITOR="test-chmtime +5" git p4 submit\n'
            span_id: 89
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\t(\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\t\tp4 sync ... &&\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\t\ttest ! -e "file with spaces" &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\t\ttest ! -e foo\\$bar\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:96)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch with shell char' span_id:116))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\ttest_create_repo "$git" &&\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:123) (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\n' span_id:125) (Token id:Id.Lit_Chars val:'\t\tmkdir -p main &&\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\n' span_id:127) (Token id:Id.Lit_Chars val:'\t\techo f1 >main/f1 &&\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add main/f1 &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "main/f1" &&\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\n' span_id:131) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tp4 integrate //depot/main/... //depot/branch\\$3/... &&\n'
            span_id: 132
          ) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "integrate main to branch\\$3" &&\n' span_id:133) 
          (Token id:Id.Lit_Chars val:'\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\techo f1 >branch\\$3/shell_char_branch_file &&\n' span_id:135) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tp4 add branch\\$3/shell_char_branch_file &&\n'
            span_id: 136
          ) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "branch\\$3/shell_char_branch_file" &&\n' span_id:137) 
          (Token id:Id.Lit_Chars val:'\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\tp4 branch -i <<-EOF &&\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\t\tBranch: branch\\$3\n' span_id:140) (Token id:Id.Lit_Chars val:'\t\tView: //depot/main/... //depot/branch\\$3/...\n' span_id:141) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:142) (Token id:Id.Lit_Chars val:'\n' span_id:143) 
          (Token id:Id.Lit_Chars val:'\t\tp4 edit main/f1 &&\n' span_id:144) (Token id:Id.Lit_Chars val:'\t\techo "a change" >> main/f1 &&\n' span_id:145) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tp4 submit -d "a change" main/f1 &&\n'
            span_id: 146
          ) (Token id:Id.Lit_Chars val:'\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\t\tp4 integrate -b branch\\$3 &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\t\tp4 resolve -am branch\\$3/... &&\n' span_id:149) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tp4 submit -d "integrate main to branch\\$3" &&\n'
            span_id: 150
          ) (Token id:Id.Lit_Chars val:'\n' span_id:151) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\n' span_id:153) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config git-p4.branchList main:branch\\$3 &&\n'
            span_id: 154
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --dest=. --detect-branches //depot@all &&\n'
            span_id: 155
          ) (Token id:Id.Lit_Chars val:'\t\tgit log --all --graph --decorate --stat &&\n' span_id:156) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit reset --hard p4/depot/branch\\$3 &&\n'
            span_id: 157
          ) (Token id:Id.Lit_Chars val:'\t\ttest -f shell_char_branch_file &&\n' span_id:158) 
          (Token id:Id.Lit_Chars val:'\t\ttest -f f1\n' span_id:159) (Token id:Id.Lit_Chars val:'\t)\n' span_id:160)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'kill p4d' span_id:167))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:171) 
          (Token id:Id.Lit_Chars val:'\tkill_p4d\n' span_id:172)
        )
      }
    )
    (C {(test_done)})
  ]
)