(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: 'Clone repositories with path case variations'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./lib-git-p4.sh)})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'start p4d with case folding enabled' span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\tstart_p4d -C1\n' span_id:23)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'Create a repo with path case variations' span_id:30))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:34) 
          (Token
            id: Id.Lit_Chars
            val: '\tclient_view "//depot/... //client/..." &&\n'
            span_id: 35
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir -p Path/to &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\t\t>Path/to/File2.txt &&\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add Path/to/File2.txt &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file2" &&\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\t\trm -rf Path &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir -p path/TO &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\t\t>path/TO/file1.txt &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add path/TO/file1.txt &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file1" &&\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\t\trm -rf path &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir -p path/to &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\t\t>path/to/file3.txt &&\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add path/to/file3.txt &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file3" &&\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\t\trm -rf path &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir -p x-outside-spec &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\t>x-outside-spec/file4.txt &&\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\t\tp4 add x-outside-spec/file4.txt &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file4" &&\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\t\trm -rf x-outside-spec\n' span_id:61) (Token id:Id.Lit_Chars val:'\t)\n' span_id:62)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Clone root' span_id:69))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:73) 
          (Token
            id: Id.Lit_Chars
            val: '\tclient_view "//depot/... //client/..." &&\n'
            span_id: 74
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:76) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\t\tgit config core.ignorecase false &&\n' span_id:79) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot &&\n'
            span_id: 80
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# This method is used instead of "test -f" to ensure the case is\n'
            span_id: 81
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# checked even if the test is executed on case-insensitive file systems.\n'
            span_id: 82
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# All files are there as expected although the path cases look random.\n'
            span_id: 83
          ) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:84) 
          (Token id:Id.Lit_Chars val:'\t\tPath/to/File2.txt\n' span_id:85) (Token id:Id.Lit_Chars val:'\t\tpath/TO/file1.txt\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\t\tpath/to/file3.txt\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\tx-outside-spec/file4.txt\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:89) (Token id:Id.Lit_Chars val:'\t\tgit ls-files >actual &&\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:91) (Token id:Id.Lit_Chars val:'\t)\n' span_id:92)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Clone root (ignorecase)' span_id:99))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) 
          (Token
            id: Id.Lit_Chars
            val: '\tclient_view "//depot/... //client/..." &&\n'
            span_id: 104
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:106) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\t\tgit config core.ignorecase true &&\n' span_id:109) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot &&\n'
            span_id: 110
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# This method is used instead of "test -f" to ensure the case is\n'
            span_id: 111
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# checked even if the test is executed on case-insensitive file systems.\n'
            span_id: 112
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# All files are there as expected although the path cases look random.\n'
            span_id: 113
          ) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:114) 
          (Token id:Id.Lit_Chars val:'\t\tpath/TO/File2.txt\n' span_id:115) (Token id:Id.Lit_Chars val:'\t\tpath/TO/file1.txt\n' span_id:116) 
          (Token id:Id.Lit_Chars val:'\t\tpath/TO/file3.txt\n' span_id:117) (Token id:Id.Lit_Chars val:'\t\tx-outside-spec/file4.txt\n' span_id:118) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:119) (Token id:Id.Lit_Chars val:'\t\tgit ls-files >actual &&\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:121) (Token id:Id.Lit_Chars val:'\t)\n' span_id:122)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'Clone root and ignore one file' span_id:129))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:133) 
          (Token id:Id.Lit_Chars val:'\tclient_view \\\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\t"//depot/... //client/..." \\\n' span_id:135) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t"-//depot/path/TO/file1.txt //client/path/TO/file1.txt" &&\n'
            span_id: 136
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:137) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\t\tgit config core.ignorecase false &&\n' span_id:141) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot &&\n'
            span_id: 142
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# We ignore one file in the client spec and all path cases change from\n'
            span_id: 143
          ) (Token id:Id.Lit_Chars val:'\t\t# "TO" to "to"!\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\t\tPath/to/File2.txt\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t\tpath/to/file3.txt\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\tx-outside-spec/file4.txt\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\tgit ls-files >actual &&\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:151) (Token id:Id.Lit_Chars val:'\t)\n' span_id:152)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'Clone root and ignore one file (ignorecase)' span_id:159))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:163) 
          (Token id:Id.Lit_Chars val:'\tclient_view \\\n' span_id:164) (Token id:Id.Lit_Chars val:'\t\t"//depot/... //client/..." \\\n' span_id:165) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t"-//depot/path/TO/file1.txt //client/path/TO/file1.txt" &&\n'
            span_id: 166
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:167) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:168) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\t\tgit config core.ignorecase true &&\n' span_id:171) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot &&\n'
            span_id: 172
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# We ignore one file in the client spec and all path cases change from\n'
            span_id: 173
          ) (Token id:Id.Lit_Chars val:'\t\t# "TO" to "to"!\n' span_id:174) 
          (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\t\tPath/to/File2.txt\n' span_id:176) 
          (Token id:Id.Lit_Chars val:'\t\tPath/to/file3.txt\n' span_id:177) (Token id:Id.Lit_Chars val:'\t\tx-outside-spec/file4.txt\n' span_id:178) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:179) (Token id:Id.Lit_Chars val:'\t\tgit ls-files >actual &&\n' span_id:180) 
          (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:181) (Token id:Id.Lit_Chars val:'\t)\n' span_id:182)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Clone path' span_id:189))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:193) 
          (Token
            id: Id.Lit_Chars
            val: '\tclient_view "//depot/Path/... //client/..." &&\n'
            span_id: 194
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:195) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:196) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:197) 
          (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:198) (Token id:Id.Lit_Chars val:'\t\tgit config core.ignorecase false &&\n' span_id:199) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot &&\n'
            span_id: 200
          ) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:201) 
          (Token id:Id.Lit_Chars val:'\t\tto/File2.txt\n' span_id:202) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:203) 
          (Token id:Id.Lit_Chars val:'\t\tgit ls-files >actual &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:205) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:206)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Clone path (ignorecase)' span_id:213))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:217) 
          (Token
            id: Id.Lit_Chars
            val: '\tclient_view "//depot/Path/... //client/..." &&\n'
            span_id: 218
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:219) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:220) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:221) 
          (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:222) (Token id:Id.Lit_Chars val:'\t\tgit config core.ignorecase true &&\n' span_id:223) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot &&\n'
            span_id: 224
          ) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:225) 
          (Token id:Id.Lit_Chars val:'\t\tTO/File2.txt\n' span_id:226) (Token id:Id.Lit_Chars val:'\t\tTO/file1.txt\n' span_id:227) 
          (Token id:Id.Lit_Chars val:'\t\tTO/file3.txt\n' span_id:228) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:229) 
          (Token id:Id.Lit_Chars val:'\t\tgit ls-files >actual &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:231) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:232)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Add a new file and clone path with new file (ignorecase)'
            span_id: 248
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:252) 
          (Token
            id: Id.Lit_Chars
            val: '\tclient_view "//depot/... //client/..." &&\n'
            span_id: 253
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$cli" &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\t\tmkdir -p Path/to &&\n' span_id:256) 
          (Token id:Id.Lit_Chars val:'\t\t>Path/to/File0.txt &&\n' span_id:257) (Token id:Id.Lit_Chars val:'\t\tp4 add Path/to/File0.txt &&\n' span_id:258) 
          (Token id:Id.Lit_Chars val:'\t\tp4 submit -d "Add file" &&\n' span_id:259) (Token id:Id.Lit_Chars val:'\t\trm -rf Path\n' span_id:260) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:261) (Token id:Id.Lit_Chars val:'\n' span_id:262) 
          (Token
            id: Id.Lit_Chars
            val: '\tclient_view "//depot/Path/... //client/..." &&\n'
            span_id: 263
          ) (Token id:Id.Lit_Chars val:'\ttest_when_finished cleanup_git &&\n' span_id:264) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:265) (Token id:Id.Lit_Chars val:'\t\tcd "$git" &&\n' span_id:266) 
          (Token id:Id.Lit_Chars val:'\t\tgit init . &&\n' span_id:267) (Token id:Id.Lit_Chars val:'\t\tgit config core.ignorecase true &&\n' span_id:268) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit p4 clone --use-client-spec --destination="$git" //depot &&\n'
            span_id: 269
          ) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:270) 
          (Token id:Id.Lit_Chars val:'\t\tto/File0.txt\n' span_id:271) (Token id:Id.Lit_Chars val:'\t\tto/File2.txt\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\t\tto/file1.txt\n' span_id:273) (Token id:Id.Lit_Chars val:'\t\tto/file3.txt\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:275) (Token id:Id.Lit_Chars val:'\t\tgit ls-files >actual &&\n' span_id:276) 
          (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:277) (Token id:Id.Lit_Chars val:'\t)\n' span_id:278)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'kill p4d' span_id:285))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:289) 
          (Token id:Id.Lit_Chars val:'\tkill_p4d\n' span_id:290)
        )
      }
    )
    (C {(test_done)})
  ]
)