(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git column'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<./test-lib.sh>})
    (C {<test_expect_success>} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'\tcat >lista <<\\EOF\n'> <'one\n'> <'two\n'> <'three\n'> <'four\n'> <'five\n'> 
          <'six\n'> <'seven\n'> <'eight\n'> <'nine\n'> <'ten\n'> <'eleven\n'> <'EOF\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <never>)} 
      {
        (SQ <'\n'> <'\tgit column --indent=Z --mode=never <lista >actual &&\n'> 
          <'\ttest_cmp lista actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <always>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'Zone\n'> <'Ztwo\n'> <'Zthree\n'> <'Zfour\n'> 
          <'Zfive\n'> <'Zsix\n'> <'Zseven\n'> <'Zeight\n'> <'Znine\n'> <'Zten\n'> <'Zeleven\n'> <'EOF\n'> 
          <'\tgit column --indent=Z --mode=plain <lista >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'80 columns'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> 
          <'one    two    three  four   five   six    seven  eight  nine   ten    eleven\n'> <'EOF\n'> <'\tCOLUMNS=80 git column --mode=column <lista >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<expected>})
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
          here_end_span_id: 113
          stdin_parts: [
            <'one\n'>
            <'two\n'>
            <'three\n'>
            <'four\n'>
            <'five\n'>
            <'six\n'>
            <'seven\n'>
            <'eight\n'>
            <'nine\n'>
            <'ten\n'>
            <'eleven\n'>
          ]
        )
      ]
    )
    (C {<test_expect_success>} {<COLUMNS_CAN_BE_1>} {(SQ <'COLUMNS = 1'>)} 
      {
        (SQ <'\n'> <'\tCOLUMNS=1 git column --mode=column <lista >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'width = 1'>)} 
      {
        (SQ <'\n'> <'\tgit column --mode=column --width=1 <lista >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:COLUMNS)
          op: assign_op.Equal
          rhs: {<20>}
          spids: [143]
        )
      ]
    )
    (C {<export>} {<COLUMNS>})
    (C {<test_expect_success>} {(SQ <'20 columns'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'one    seven\n'> <'two    eight\n'> 
          <'three  nine\n'> <'four   ten\n'> <'five   eleven\n'> <'six\n'> <'EOF\n'> 
          <'\tgit column --mode=column <lista >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'20 columns, nodense'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'one    seven\n'> <'two    eight\n'> 
          <'three  nine\n'> <'four   ten\n'> <'five   eleven\n'> <'six\n'> <'EOF\n'> 
          <'\tgit column --mode=column,nodense < lista > actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'20 columns, dense'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'one   five  nine\n'> <'two   six   ten\n'> 
          <'three seven eleven\n'> <'four  eight\n'> <'EOF\n'> <'\tgit column --mode=column,dense < lista > actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'20 columns, padding 2'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'one     seven\n'> <'two     eight\n'> 
          <'three   nine\n'> <'four    ten\n'> <'five    eleven\n'> <'six\n'> <'EOF\n'> 
          <'\tgit column --mode=column --padding 2 <lista >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'20 columns, indented'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'  one    seven\n'> <'  two    eight\n'> 
          <'  three  nine\n'> <'  four   ten\n'> <'  five   eleven\n'> <'  six\n'> <'EOF\n'> 
          <'\tgit column --mode=column --indent="  " <lista >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'20 columns, row first'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'one    two\n'> <'three  four\n'> <'five   six\n'> 
          <'seven  eight\n'> <'nine   ten\n'> <'eleven\n'> <'EOF\n'> <'\tgit column --mode=row <lista >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'20 columns, row first, nodense'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'one    two\n'> <'three  four\n'> <'five   six\n'> 
          <'seven  eight\n'> <'nine   ten\n'> <'eleven\n'> <'EOF\n'> <'\tgit column --mode=row,nodense <lista >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'20 columns, row first, dense'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<\\EOF &&\n'> <'one   two    three\n'> <'four  five   six\n'> 
          <'seven eight  nine\n'> <'ten   eleven\n'> <'EOF\n'> <'\tgit column --mode=row,dense <lista >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)