(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'Test git check-ref-format'>)}
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.FuncDef
      name: valid_ref
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(lhs_expr.LhsName name:prereq) op:Equal rhs:(word.EmptyWord))]
            )
            (command.Case
              to_match: {($ VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '[') (A-Z) (KW_Bang '!') (Lit_Other ']') (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:prereq)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:desc)
                  op: Equal
                  rhs: 
                    {
                      (DQ ("ref name '") ($ VSub_Number '$1') ("' is valid") 
                        (word_part.BracedVarSub
                          token: <VSub_Number 2>
                          suffix_op: 
                            (suffix_op.StringUnary
                              op_id: VTest_ColonPlus
                              arg_word: {(' with options ') ($ VSub_Number '$2')}
                            )
                        )
                      )
                    }
                )
              ]
            )
            (C {(test_expect_success)} {($ VSub_DollarName '$prereq')} {(DQ ($ VSub_DollarName '$desc'))} 
              {
                (DQ ('\n') ('\t\tgit check-ref-format ') ($ VSub_Number '$2') (" '") ($ VSub_Number '$1') 
                  ("'\n") ('\t')
                )
              }
            )
          ]
        )
    )
    (command.FuncDef
      name: invalid_ref
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(lhs_expr.LhsName name:prereq) op:Equal rhs:(word.EmptyWord))]
            )
            (command.Case
              to_match: {($ VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '[') (A-Z) (KW_Bang '!') (Lit_Other ']') (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:prereq)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                )
              ]
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:desc)
                  op: Equal
                  rhs: 
                    {
                      (DQ ("ref name '") ($ VSub_Number '$1') ("' is invalid") 
                        (word_part.BracedVarSub
                          token: <VSub_Number 2>
                          suffix_op: 
                            (suffix_op.StringUnary
                              op_id: VTest_ColonPlus
                              arg_word: {(' with options ') ($ VSub_Number '$2')}
                            )
                        )
                      )
                    }
                )
              ]
            )
            (C {(test_expect_success)} {($ VSub_DollarName '$prereq')} {(DQ ($ VSub_DollarName '$desc'))} 
              {
                (DQ ('\n') ('\t\ttest_must_fail git check-ref-format ') ($ VSub_Number '$2') (" '") 
                  ($ VSub_Number '$1') ("'\n") ('\t')
                )
              }
            )
          ]
        )
    )
    (C {(invalid_ref)} {(SQ )})
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(SQ </>)})
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(SQ </>)} {(--allow-onelevel)})
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(SQ </>)} {(--normalize)})
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(SQ </>)} {(SQ <'--allow-onelevel --normalize'>)})
    (C {(valid_ref)} {(SQ <foo/bar/baz>)})
    (C {(valid_ref)} {(SQ <foo/bar/baz>)} {(--normalize)})
    (C {(invalid_ref)} {(SQ <refs///heads/foo>)})
    (C {(valid_ref)} {(SQ <refs///heads/foo>)} {(--normalize)})
    (C {(invalid_ref)} {(SQ <heads/foo/>)})
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(SQ </heads/foo>)})
    (C {(valid_ref)} {(KW_Bang '!') (MINGW)} {(SQ </heads/foo>)} {(--normalize)})
    (C {(invalid_ref)} {(SQ <///heads/foo>)})
    (C {(valid_ref)} {(SQ <///heads/foo>)} {(--normalize)})
    (C {(invalid_ref)} {(SQ <./foo>)})
    (C {(invalid_ref)} {(SQ <./foo/bar>)})
    (C {(invalid_ref)} {(SQ <foo/./bar>)})
    (C {(invalid_ref)} {(SQ <foo/bar/.>)})
    (C {(invalid_ref)} {(SQ <.refs/foo>)})
    (C {(invalid_ref)} {(SQ <refs/heads/foo.>)})
    (C {(invalid_ref)} {(SQ <heads/foo..bar>)})
    (C {(invalid_ref)} {(SQ <'heads/foo?bar'>)})
    (C {(valid_ref)} {(SQ <foo./bar>)})
    (C {(invalid_ref)} {(SQ <heads/foo.lock>)})
    (C {(invalid_ref)} {(SQ <heads///foo.lock>)})
    (C {(invalid_ref)} {(SQ <foo.lock/bar>)})
    (C {(invalid_ref)} {(SQ <foo.lock///bar>)})
    (C {(valid_ref)} {(SQ <'heads/foo@bar'>)})
    (C {(invalid_ref)} {(SQ <'heads/v@{ation'>)})
    (C {(invalid_ref)} {(SQ <'heads/foo\\bar'>)})
    (C {(invalid_ref)} 
      {
        (DQ 
          (word_part.CommandSubPart
            command_list: (command.CommandList children:[(C {(printf)} {(SQ <'heads/foo\\t'>)})])
            left_token: <Left_CommandSub '$('>
          )
        )
      }
    )
    (C {(invalid_ref)} 
      {
        (DQ 
          (word_part.CommandSubPart
            command_list: (command.CommandList children:[(C {(printf)} {(SQ <'heads/foo\\177'>)})])
            left_token: <Left_CommandSub '$('>
          )
        )
      }
    )
    (C {(valid_ref)} 
      {
        (DQ 
          (word_part.CommandSubPart
            command_list: 
              (command.CommandList
                children: [(C {(printf)} {(SQ <'heads/fu\\303\\237'>)})]
              )
            left_token: <Left_CommandSub '$('>
          )
        )
      }
    )
    (C {(valid_ref)} {(SQ <'heads/*foo/bar'>)} {(--refspec-pattern)})
    (C {(valid_ref)} {(SQ <'heads/foo*/bar'>)} {(--refspec-pattern)})
    (C {(valid_ref)} {(SQ <'heads/f*o/bar'>)} {(--refspec-pattern)})
    (C {(invalid_ref)} {(SQ <'heads/f*o*/bar'>)} {(--refspec-pattern)})
    (C {(invalid_ref)} {(SQ <'heads/foo*/bar*'>)} {(--refspec-pattern)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <foo>)})]
    )
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--normalize)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--allow-onelevel --normalize'>)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <foo/bar>)})]
    )
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--normalize)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <'foo/*'>)})]
    )
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <'*/foo'>)})]
    )
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--normalize)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --normalize'>)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <'foo/*/bar'>)})]
    )
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <'*'>)})]
    )
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <'foo/*/*'>)})]
    )
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <'*/foo/*'>)})]
    )
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ <'*/*/foo'>)})]
    )
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(invalid_ref)} {(DQ ($ VSub_DollarName '$ref'))} {(SQ <'--refspec-pattern --allow-onelevel'>)})
    (command.Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref) op:Equal rhs:{(SQ </foo>)})]
    )
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(DQ ($ VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(DQ ($ VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(DQ ($ VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(DQ ($ VSub_DollarName '$ref'))} 
      {(SQ <'--refspec-pattern --allow-onelevel'>)}
    )
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(DQ ($ VSub_DollarName '$ref'))} {(--normalize)})
    (C {(valid_ref)} {(KW_Bang '!') (MINGW)} {(DQ ($ VSub_DollarName '$ref'))} 
      {(SQ <'--allow-onelevel --normalize'>)}
    )
    (C {(invalid_ref)} {(KW_Bang '!') (MINGW)} {(DQ ($ VSub_DollarName '$ref'))} 
      {(SQ <'--refspec-pattern --normalize'>)}
    )
    (C {(valid_ref)} {(KW_Bang '!') (MINGW)} {(DQ ($ VSub_DollarName '$ref'))} 
      {(SQ <'--refspec-pattern --allow-onelevel --normalize'>)}
    )
    (C {(test_expect_success)} {(DQ ('check-ref-format --branch @{-1}'))} 
      {
        (SQ <'\n'> <'\tT=$(git write-tree) &&\n'> <'\tsha1=$(echo A | git commit-tree $T) &&\n'> 
          <'\tgit update-ref refs/heads/master $sha1 &&\n'> <'\tgit update-ref refs/remotes/origin/master $sha1 &&\n'> <'\tgit checkout master &&\n'> 
          <'\tgit checkout origin/master &&\n'> <'\tgit checkout master &&\n'> <'\trefname=$(git check-ref-format --branch @{-1}) &&\n'> 
          <'\ttest "$refname" = "$sha1" &&\n'> <'\trefname2=$(git check-ref-format --branch @{-2}) &&\n'> <'\ttest "$refname2" = master'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'check-ref-format --branch from subdir'>)} 
      {
        (SQ <'\n'> <'\tmkdir subdir &&\n'> <'\n'> <'\tT=$(git write-tree) &&\n'> 
          <'\tsha1=$(echo A | git commit-tree $T) &&\n'> <'\tgit update-ref refs/heads/master $sha1 &&\n'> 
          <'\tgit update-ref refs/remotes/origin/master $sha1 &&\n'> <'\tgit checkout master &&\n'> <'\tgit checkout origin/master &&\n'> <'\tgit checkout master &&\n'> 
          <'\trefname=$(\n'> <'\t\tcd subdir &&\n'> <'\t\tgit check-ref-format --branch @{-1}\n'> <'\t) &&\n'> 
          <'\ttest "$refname" = "$sha1"\n'>
        )
      }
    )
    (command.FuncDef
      name: valid_ref_normalized
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(lhs_expr.LhsName name:prereq) op:Equal rhs:(word.EmptyWord))]
            )
            (command.Case
              to_match: {($ VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '[') (A-Z) (KW_Bang '!') (Lit_Other ']') (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:prereq)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                )
              ]
            )
            (C {(test_expect_success)} {($ VSub_DollarName '$prereq')} 
              {
                (DQ ("ref name '") ($ VSub_Number '$1') ("' simplifies to '") ($ VSub_Number '$2') ("'"))
              } 
              {
                (DQ ('\n') ('\t\trefname=') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) 
                  ("(git check-ref-format --normalize '") ($ VSub_Number '$1') ("') &&\n") ('\t\ttest ') 
                  (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (refname) 
                  (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (" = '") ($ VSub_Number '$2') ("'\n") ('\t')
                )
              }
            )
          ]
        )
    )
    (command.FuncDef
      name: invalid_ref_normalized
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(lhs_expr.LhsName name:prereq) op:Equal rhs:(word.EmptyWord))]
            )
            (command.Case
              to_match: {($ VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '[') (A-Z) (KW_Bang '!') (Lit_Other ']') (Lit_Other '*')}]
                  action: [
                    (command.Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (lhs_expr.LhsName name:prereq)
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                )
              ]
            )
            (C {(test_expect_success)} {($ VSub_DollarName '$prereq')} 
              {(DQ ("check-ref-format --normalize rejects '") ($ VSub_Number '$1') ("'"))} 
              {
                (DQ ('\n') ("\t\ttest_must_fail git check-ref-format --normalize '") 
                  ($ VSub_Number '$1') ("'\n") ('\t')
                )
              }
            )
          ]
        )
    )
    (C {(valid_ref_normalized)} {(SQ <heads/foo>)} {(SQ <heads/foo>)})
    (C {(valid_ref_normalized)} {(SQ <refs///heads/foo>)} {(SQ <refs/heads/foo>)})
    (C {(valid_ref_normalized)} {(KW_Bang '!') (MINGW)} {(SQ </heads/foo>)} {(SQ <heads/foo>)})
    (C {(valid_ref_normalized)} {(SQ <///heads/foo>)} {(SQ <heads/foo>)})
    (C {(invalid_ref_normalized)} {(SQ <foo>)})
    (C {(invalid_ref_normalized)} {(KW_Bang '!') (MINGW)} {(SQ </foo>)})
    (C {(invalid_ref_normalized)} {(SQ <heads/foo/../bar>)})
    (C {(invalid_ref_normalized)} {(SQ <heads/./foo>)})
    (C {(invalid_ref_normalized)} {(SQ <'heads\\foo'>)})
    (C {(invalid_ref_normalized)} {(SQ <heads/foo.lock>)})
    (C {(invalid_ref_normalized)} {(SQ <heads///foo.lock>)})
    (C {(invalid_ref_normalized)} {(SQ <foo.lock/bar>)})
    (C {(invalid_ref_normalized)} {(SQ <foo.lock///bar>)})
    (C {(test_done)})
  ]
)