(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: 
            {
              (SQ <"git update-index on filesystem w/o symlinks test.\n"> <"\n"> 
                <"This tests that git update-index keeps the symbolic link property\n"> <"even if a plain file is in the working tree if core.symlinks is false.">
              )
            }
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <preparation>)} 
      {
        (SQ <"\n"> <"git config core.symlinks false &&\n"> 
          <"l=$(printf file | git hash-object -t blob -w --stdin) &&\n"> <"echo \"120000 $l\tsymlink\" | git update-index --index-info">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"modify the symbolic link">)} 
      {(SQ <"\n"> <"printf new-file > symlink &&\n"> <"git update-index symlink">)}
    )
    (C {(test_expect_success)} {(SQ <"the index entry must still be a symbolic link">)} 
      {
        (SQ <"\n"> <"case \"$(git ls-files --stage --cached symlink)\" in\n"> 
          <"120000\" \"*symlink) echo pass;;\n"> <"*) echo fail; git ls-files --stage --cached symlink; (exit 1);;\n"> <esac>
        )
      }
    )
    (C {(test_done)})
  ]
)