(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:test_description spids:[12])
          op: Equal
          rhs: {(SQ <'Various filesystem issues'>)}
          spids: [12]
        )
      ]
      spids: [12]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:auml spids:[23])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: (command.CommandList children:[(C {(printf)} {(SQ <'\\303\\244'>)})])
                left_token: <Left_CommandSub '$('>
                spids: [24 30]
              )
            }
          spids: [23]
        )
      ]
      spids: [23]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:aumlcdiar spids:[32])
          op: Equal
          rhs: 
            {
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(printf)} {(SQ <'\\141\\314\\210'>)})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [33 39]
              )
            }
          spids: [32]
        )
      ]
      spids: [32]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test_have_prereq)} {(CASE_INSENSITIVE_FS)})]
          action: [
            (C {(say)} {(DQ ('will test on a case insensitive filesystem'))})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:test_case spids:[58])
                  op: Equal
                  rhs: {(test_expect_failure)}
                  spids: [58]
                )
              ]
              spids: [58]
            )
          ]
          spids: [16777215 48]
        )
      ]
      else_action: [
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:test_case spids:[64])
              op: Equal
              rhs: {(test_expect_success)}
              spids: [64]
            )
          ]
          spids: [64]
        )
      ]
      spids: [61 67]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test_have_prereq)} {(UTF8_NFD_TO_NFC)})]
          action: [
            (C {(say)} {(DQ ('will test on a unicode corrupting filesystem'))})
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:test_unicode spids:[86])
                  op: Equal
                  rhs: {(test_expect_failure)}
                  spids: [86]
                )
              ]
              spids: [86]
            )
          ]
          spids: [16777215 76]
        )
      ]
      else_action: [
        (command.Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:test_unicode spids:[92])
              op: Equal
              rhs: {(test_expect_success)}
              spids: [92]
            )
          ]
          spids: [92]
        )
      ]
      spids: [89 95]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(test_have_prereq)} {(SYMLINKS)})
        (C {(say)} {(DQ ('will test on a filesystem lacking symbolic links'))})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test_have_prereq)} {(CASE_INSENSITIVE_FS)})]
          action: [
            (C {(test_expect_success)} 
              {(DQ ('detection of case insensitive filesystem during repo init'))} {(SQ <'\n'> <'\ttest $(git config --bool core.ignorecase) = true\n'>)}
            )
          ]
          spids: [16777215 118]
        )
      ]
      else_action: [
        (C {(test_expect_success)} {(DQ ('detection of case insensitive filesystem during repo init'))} 
          {
            (SQ <'\n'> <'\t{\n'> 
              <'\t\ttest_must_fail git config --bool core.ignorecase >/dev/null ||\n'> <'\t\t\ttest $(git config --bool core.ignorecase) = false\n'> <'\t}\n'>
            )
          }
        )
      ]
      spids: [131 147]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test_have_prereq)} {(SYMLINKS)})]
          action: [
            (C {(test_expect_success)} 
              {(DQ ('detection of filesystem w/o symlink support during repo init'))} 
              {
                (SQ <'\n'> <'\t{\n'> <'\t\ttest_must_fail git config --bool core.symlinks ||\n'> 
                  <'\t\ttest "$(git config --bool core.symlinks)" = true\n'> <'\t}\n'>
                )
              }
            )
          ]
          spids: [16777215 156]
        )
      ]
      else_action: [
        (C {(test_expect_success)} 
          {(DQ ('detection of filesystem w/o symlink support during repo init'))} {(SQ <'\n'> <'\tv=$(git config --bool core.symlinks) &&\n'> <'\ttest "$v" = false\n'>)}
        )
      ]
      spids: [172 186]
    )
    (C {(test_expect_success)} {(DQ ('setup case tests'))} 
      {
        (SQ <'\n'> <'\tgit config core.ignorecase true &&\n'> <'\ttouch camelcase &&\n'> 
          <'\tgit add camelcase &&\n'> <'\tgit commit -m "initial" &&\n'> <'\tgit tag initial &&\n'> <'\tgit checkout -b topic &&\n'> 
          <'\tgit mv camelcase tmp &&\n'> <'\tgit mv tmp CamelCase &&\n'> <'\tgit commit -m "rename" &&\n'> <'\tgit checkout -f master\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'rename (case change)'>)} 
      {(SQ <'\n'> <'\tgit mv camelcase CamelCase &&\n'> <'\tgit commit -m "rename"\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'merge (case change)'>)} 
      {
        (SQ <'\n'> <'\trm -f CamelCase &&\n'> <'\trm -f camelcase &&\n'> 
          <'\tgit reset --hard initial &&\n'> <'\tgit merge topic\n'>
        )
      }
    )
    (C {(test_expect_failure)} {(CASE_INSENSITIVE_FS)} {(SQ <'add (with different case)'>)} 
      {
        (SQ <'\n'> <'\tgit reset --hard initial &&\n'> <'\trm camelcase &&\n'> 
          <'\techo 1 >CamelCase &&\n'> <'\tgit add CamelCase &&\n'> <'\tcamel=$(git ls-files | grep -i camelcase) &&\n'> 
          <'\ttest $(echo "$camel" | wc -l) = 1 &&\n'> <'\ttest "z$(git cat-file blob :$camel)" = z1\n'>
        )
      }
    )
    (C {(test_expect_success)} {(DQ ('setup unicode normalization tests'))} 
      {
        (SQ <'\n'> <'\ttest_create_repo unicode &&\n'> <'\tcd unicode &&\n'> 
          <'\tgit config core.precomposeunicode false &&\n'> <'\ttouch "$aumlcdiar" &&\n'> <'\tgit add "$aumlcdiar" &&\n'> <'\tgit commit -m initial &&\n'> 
          <'\tgit tag initial &&\n'> <'\tgit checkout -b topic &&\n'> <'\tgit mv $aumlcdiar tmp &&\n'> <'\tgit mv tmp "$auml" &&\n'> 
          <'\tgit commit -m rename &&\n'> <'\tgit checkout -f master\n'>
        )
      }
    )
    (C {($ VSub_Name '$test_unicode')} {(SQ <'rename (silent unicode normalization)'>)} 
      {(SQ <'\n'> <'\tgit mv "$aumlcdiar" "$auml" &&\n'> <'\tgit commit -m rename\n'>)}
    )
    (C {($ VSub_Name '$test_unicode')} {(SQ <'merge (silent unicode normalization)'>)} 
      {(SQ <'\n'> <'\tgit reset --hard initial &&\n'> <'\tgit merge topic\n'>)}
    )
    (C {(test_done)})
  ]
)