(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)})
  ]
)