(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 tests for excluded paths during clone and sync'
                  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:'create exclude repo' span_id:52))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:56) (Token id:Id.Lit_Chars val:'\t(\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\t\tmkdir -p wanted discard &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t\techo wanted >wanted/foo &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\techo discard >discard/foo &&\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add wanted/foo discard/foo &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "initial revision"\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:'check the repo was created correctly' span_id:71))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\tgit p4 clone --dest="$git" //depot/...@all &&\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\ttest_path_is_file wanted/foo &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file discard/foo\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:82)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone, excluding part of repo' span_id:89))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:94) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone -//depot/discard/... --dest="$git" //depot/...@all &&\n'
            span_id: 95
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file wanted/foo &&\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\t\ttest_path_is_missing discard/foo\n' span_id:99) (Token id:Id.Lit_Chars val:'\t)\n' span_id:100)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone, then sync with exclude' span_id:107))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:112) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit p4 clone -//depot/discard/... --dest="$git" //depot/...@all &&\n'
            span_id: 113
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:114) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\t\tp4 edit wanted/foo discard/foo &&\n' span_id:116) 
          (Token id:Id.Lit_Chars val:'\t\tdate >>wanted/foo &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\t\tdate >>discard/foo &&\n' span_id:118) 
          (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "updating" &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\t\tgit p4 sync -//depot/discard/... &&\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\t\ttest_path_is_file wanted/foo &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\t\ttest_path_is_missing discard/foo\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:125)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'kill p4d' span_id:132))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\tkill_p4d\n' span_id:137)
        )
      }
    )
    (C {(test_done)})
  ]
)