(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git svn dcommit honors auto-props'>)}
          spids: [10]
        )
      ]
      spids: [10]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (FuncDef
      name: generate_auto_props
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ('[miscellany]\n') ('enable-auto-props=') ($ 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_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [29]
                )
              ]
            )
          ]
          spids: [25]
        )
      spids: [21 24]
    )
    (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)})
  ]
)