(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"checkout switching away from an invalid branch">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <"\n"> <"\techo hello >world &&\n"> <"\tgit add world &&\n"> <"\tgit commit -m initial\n">)
      }
    )
    (C {(test_expect_success)} {(SQ <"checkout should not start branch from a tree">)} 
      {(SQ <"\n"> <"\ttest_must_fail git checkout -b newbranch master^{tree}\n">)}
    )
    (C {(test_expect_success)} {(SQ <"checkout master from invalid HEAD">)} 
      {(SQ <"\n"> <"\techo $_z40 >.git/HEAD &&\n"> <"\tgit checkout master --\n">)}
    )
    (C {(test_expect_success)} {(SQ <"checkout notices failure to lock HEAD">)} 
      {
        (SQ <"\n"> <"\ttest_when_finished \"rm -f .git/HEAD.lock\" &&\n"> <"\t>.git/HEAD.lock &&\n"> 
          <"\ttest_must_fail git checkout -b other\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"create ref directory/file conflict scenario">)} 
      {
        (SQ <"\n"> <"\tgit update-ref refs/heads/outer/inner master &&\n"> <"\n"> 
          <"\t# do not rely on symbolic-ref to get a known state,\n"> <"\t# as it may use the same code we are testing\n"> <"\treset_to_df () {\n"> 
          <"\t\techo \"ref: refs/heads/outer\" >.git/HEAD\n"> <"\t}\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"checkout away from d/f HEAD (unpacked, to branch)">)} 
      {(SQ <"\n"> <"\treset_to_df &&\n"> <"\tgit checkout master\n">)}
    )
    (C {(test_expect_success)} {(SQ <"checkout away from d/f HEAD (unpacked, to detached)">)} 
      {(SQ <"\n"> <"\treset_to_df &&\n"> <"\tgit checkout --detach master\n">)}
    )
    (C {(test_expect_success)} {(SQ <"pack refs">)} {(SQ <"\n"> <"\tgit pack-refs --all --prune\n">)})
    (C {(test_expect_success)} {(SQ <"checkout away from d/f HEAD (packed, to branch)">)} 
      {(SQ <"\n"> <"\treset_to_df &&\n"> <"\tgit checkout master\n">)}
    )
    (C {(test_expect_success)} {(SQ <"checkout away from d/f HEAD (packed, to detached)">)} 
      {(SQ <"\n"> <"\treset_to_df &&\n"> <"\tgit checkout --detach master\n">)}
    )
    (C {(test_done)})
  ]
)