(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 update-index on filesystem w/o symlinks test.\n'
                  span_id: 15
                ) (Token id:Id.Lit_Chars val:'\n' span_id:16) 
                (Token
                  id: Id.Lit_Chars
                  val: 'This tests that git update-index keeps the symbolic link property\n'
                  span_id: 17
                ) 
                (Token
                  id: Id.Lit_Chars
                  val: 'even if a plain file is in the working tree if core.symlinks is false.'
                  span_id: 18
                )
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:preparation span_id:31))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'git config core.symlinks false &&\n' span_id:36) (Token id:Id.Lit_Chars val:'l=$(printf file | git hash-object -t blob -w --stdin) &&\n' span_id:37) 
          (Token
            id: Id.Lit_Chars
            val: 'echo "120000 $l\tsymlink" | git update-index --index-info'
            span_id: 38
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modify the symbolic link' span_id:46))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'printf new-file > symlink &&\n' span_id:51) (Token id:Id.Lit_Chars val:'git update-index symlink' span_id:52)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'the index entry must still be a symbolic link' span_id:60))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) 
          (Token
            id: Id.Lit_Chars
            val: 'case "$(git ls-files --stage --cached symlink)" in\n'
            span_id: 65
          ) (Token id:Id.Lit_Chars val:'120000" "*symlink) echo pass;;\n' span_id:66) 
          (Token
            id: Id.Lit_Chars
            val: '*) echo fail; git ls-files --stage --cached symlink; (exit 1);;\n'
            span_id: 67
          ) (Token id:Id.Lit_Chars val:esac span_id:68)
        )
      }
    )
    (C {(test_done)})
  ]
)