| #!/bin/sh | 
 | # | 
 | # Copyright (c) 2008 Brad King | 
 |  | 
 | test_description='git svn dcommit honors auto-props' | 
 |  | 
 | . ./lib-git-svn.sh | 
 |  | 
 | generate_auto_props() { | 
 | cat << EOF | 
 | [miscellany] | 
 | enable-auto-props=$1 | 
 | [auto-props] | 
 | *.sh  = svn:mime-type=application/x-shellscript; svn:eol-style=LF | 
 | *.txt = svn:mime-type=text/plain; svn:eol-style = native | 
 | EOF | 
 | } | 
 |  | 
 | test_expect_success 'initialize git svn' ' | 
 | 	mkdir import && | 
 | 	( | 
 | 		cd import && | 
 | 		echo foo >foo && | 
 | 		svn_cmd import -m "import for git svn" . "$svnrepo" | 
 | 	) && | 
 | 	rm -rf import && | 
 | 	git svn init "$svnrepo" && | 
 | 	git svn fetch | 
 | ' | 
 |  | 
 | test_expect_success 'enable auto-props config' ' | 
 | 	mkdir user && | 
 | 	generate_auto_props yes >user/config | 
 | ' | 
 |  | 
 | test_expect_success 'add files matching auto-props' ' | 
 | 	write_script exec1.sh </dev/null && | 
 | 	echo "hello" >hello.txt && | 
 | 	echo bar >bar && | 
 | 	git add exec1.sh hello.txt bar && | 
 | 	git commit -m "files for enabled auto-props" && | 
 | 	git svn dcommit --config-dir=user | 
 | ' | 
 |  | 
 | test_expect_success 'disable auto-props config' ' | 
 | 	generate_auto_props no >user/config | 
 | ' | 
 |  | 
 | test_expect_success 'add files matching disabled auto-props' ' | 
 | 	write_script exec2.sh </dev/null && | 
 | 	echo "world" >world.txt && | 
 | 	echo zot >zot && | 
 | 	git add exec2.sh world.txt zot && | 
 | 	git commit -m "files for disabled auto-props" && | 
 | 	git svn dcommit --config-dir=user | 
 | ' | 
 |  | 
 | test_expect_success 'check resulting svn repository' ' | 
 | ( | 
 | 	mkdir work && | 
 | 	cd work && | 
 | 	svn_cmd co "$svnrepo" && | 
 | 	cd svnrepo && | 
 |  | 
 | 	# Check properties from first commit. | 
 | 	if test_have_prereq POSIXPERM | 
 | 	then | 
 | 		test "x$(svn_cmd propget svn:executable exec1.sh)" = "x*" | 
 | 	fi && | 
 | 	test "x$(svn_cmd propget svn:mime-type exec1.sh)" = \ | 
 | 	     "xapplication/x-shellscript" && | 
 | 	test "x$(svn_cmd propget svn:mime-type hello.txt)" = "xtext/plain" && | 
 | 	test "x$(svn_cmd propget svn:eol-style hello.txt)" = "xnative" && | 
 | 	test "x$(svn_cmd propget svn:mime-type bar)" = "x" && | 
 |  | 
 | 	# Check properties from second commit. | 
 | 	if test_have_prereq POSIXPERM | 
 | 	then | 
 | 		test "x$(svn_cmd propget svn:executable exec2.sh)" = "x*" | 
 | 	fi && | 
 | 	test "x$(svn_cmd propget svn:mime-type exec2.sh)" = "x" && | 
 | 	test "x$(svn_cmd propget svn:mime-type world.txt)" = "x" && | 
 | 	test "x$(svn_cmd propget svn:eol-style world.txt)" = "x" && | 
 | 	test "x$(svn_cmd propget svn:mime-type zot)" = "x" | 
 | ) | 
 | ' | 
 |  | 
 | test_expect_success 'check renamed file' ' | 
 | 	test -d user && | 
 | 	generate_auto_props yes > user/config && | 
 | 	git mv foo foo.sh && | 
 | 	git commit -m "foo => foo.sh" && | 
 | 	git svn dcommit --config-dir=user && | 
 | 	( | 
 | 		cd work/svnrepo && | 
 | 		svn_cmd up && | 
 | 		test ! -e foo && | 
 | 		test -e foo.sh && | 
 | 		test "x$(svn_cmd propget svn:mime-type foo.sh)" = \ | 
 | 		     "xapplication/x-shellscript" && | 
 | 		test "x$(svn_cmd propget svn:eol-style foo.sh)" = "xLF" | 
 | 	) | 
 | ' | 
 |  | 
 | test_done |