(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git svn dcommit honors auto-props'>)}
          spids: [10]
        )
      ]
    )
    (C {<.>} {<'./lib-git-svn.sh'>})
    (command.ShFunction
      name: generate_auto_props
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 41
                      stdin_parts: [
                        <'[miscellany]\n'>
                        <'enable-auto-props='>
                        ($ Id.VSub_Number '$1')
                        <'\n'>
                        <'[auto-props]\n'>
                        <'*.sh  = svn:mime-type=application/x-shellscript; svn:eol-style=LF\n'>
                        <'*.txt = svn:mime-type=text/plain; svn:eol-style = native\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (C {<test_expect_success>} {(SQ <'initialize git svn'>)} 
      {
        (SQ <'\n'> <'\tmkdir import &&\n'> <'\t(\n'> <'\t\tcd import &&\n'> <'\t\techo foo >foo &&\n'> 
          <'\t\tsvn_cmd import -m "import for git svn" . "$svnrepo"\n'> <'\t) &&\n'> <'\trm -rf import &&\n'> <'\tgit svn init "$svnrepo" &&\n'> <'\tgit svn fetch\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'enable auto-props config'>)} 
      {(SQ <'\n'> <'\tmkdir user &&\n'> <'\tgenerate_auto_props yes >user/config\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'add files matching auto-props'>)} 
      {
        (SQ <'\n'> <'\twrite_script exec1.sh </dev/null &&\n'> <'\techo "hello" >hello.txt &&\n'> 
          <'\techo bar >bar &&\n'> <'\tgit add exec1.sh hello.txt bar &&\n'> <'\tgit commit -m "files for enabled auto-props" &&\n'> 
          <'\tgit svn dcommit --config-dir=user\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'disable auto-props config'>)} 
      {(SQ <'\n'> <'\tgenerate_auto_props no >user/config\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'add files matching disabled auto-props'>)} 
      {
        (SQ <'\n'> <'\twrite_script exec2.sh </dev/null &&\n'> <'\techo "world" >world.txt &&\n'> 
          <'\techo zot >zot &&\n'> <'\tgit add exec2.sh world.txt zot &&\n'> <'\tgit commit -m "files for disabled auto-props" &&\n'> 
          <'\tgit svn dcommit --config-dir=user\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check resulting svn repository'>)} 
      {
        (SQ <'\n'> <'(\n'> <'\tmkdir work &&\n'> <'\tcd work &&\n'> <'\tsvn_cmd co "$svnrepo" &&\n'> 
          <'\tcd svnrepo &&\n'> <'\n'> <'\t# Check properties from first commit.\n'> <'\tif test_have_prereq POSIXPERM\n'> <'\tthen\n'> 
          <'\t\ttest "x$(svn_cmd propget svn:executable exec1.sh)" = "x*"\n'> <'\tfi &&\n'> <'\ttest "x$(svn_cmd propget svn:mime-type exec1.sh)" = \\\n'> 
          <'\t     "xapplication/x-shellscript" &&\n'> <'\ttest "x$(svn_cmd propget svn:mime-type hello.txt)" = "xtext/plain" &&\n'> 
          <'\ttest "x$(svn_cmd propget svn:eol-style hello.txt)" = "xnative" &&\n'> <'\ttest "x$(svn_cmd propget svn:mime-type bar)" = "x" &&\n'> <'\n'> 
          <'\t# Check properties from second commit.\n'> <'\tif test_have_prereq POSIXPERM\n'> <'\tthen\n'> 
          <'\t\ttest "x$(svn_cmd propget svn:executable exec2.sh)" = "x*"\n'> <'\tfi &&\n'> <'\ttest "x$(svn_cmd propget svn:mime-type exec2.sh)" = "x" &&\n'> 
          <'\ttest "x$(svn_cmd propget svn:mime-type world.txt)" = "x" &&\n'> <'\ttest "x$(svn_cmd propget svn:eol-style world.txt)" = "x" &&\n'> 
          <'\ttest "x$(svn_cmd propget svn:mime-type zot)" = "x"\n'> <')\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check renamed file'>)} 
      {
        (SQ <'\n'> <'\ttest -d user &&\n'> <'\tgenerate_auto_props yes > user/config &&\n'> 
          <'\tgit mv foo foo.sh &&\n'> <'\tgit commit -m "foo => foo.sh" &&\n'> <'\tgit svn dcommit --config-dir=user &&\n'> <'\t(\n'> 
          <'\t\tcd work/svnrepo &&\n'> <'\t\tsvn_cmd up &&\n'> <'\t\ttest ! -e foo &&\n'> <'\t\ttest -e foo.sh &&\n'> 
          <'\t\ttest "x$(svn_cmd propget svn:mime-type foo.sh)" = \\\n'> <'\t\t     "xapplication/x-shellscript" &&\n'> 
          <'\t\ttest "x$(svn_cmd propget svn:eol-style foo.sh)" = "xLF"\n'> <'\t)\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)