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