159 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
#
 | 
						|
# Copyright (c) 2009 Eric Wong
 | 
						|
 | 
						|
test_description='git svn creates empty directories'
 | 
						|
. ./lib-git-svn.sh
 | 
						|
 | 
						|
test_expect_success 'initialize repo' '
 | 
						|
	for i in a b c d d/e d/e/f "weird file name"
 | 
						|
	do
 | 
						|
		svn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i"
 | 
						|
	done
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'clone' 'git svn clone "$svnrepo" cloned'
 | 
						|
 | 
						|
test_expect_success 'empty directories exist' '
 | 
						|
	(
 | 
						|
		cd cloned &&
 | 
						|
		for i in a b c d d/e d/e/f "weird file name"
 | 
						|
		do
 | 
						|
			if ! test -d "$i"
 | 
						|
			then
 | 
						|
				echo >&2 "$i does not exist" &&
 | 
						|
				exit 1
 | 
						|
			fi
 | 
						|
		done
 | 
						|
	)
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'option automkdirs set to false' '
 | 
						|
	(
 | 
						|
		git svn init "$svnrepo" cloned-no-mkdirs &&
 | 
						|
		cd cloned-no-mkdirs &&
 | 
						|
		git config svn-remote.svn.automkdirs false &&
 | 
						|
		git svn fetch &&
 | 
						|
		for i in a b c d d/e d/e/f "weird file name"
 | 
						|
		do
 | 
						|
			if test -d "$i"
 | 
						|
			then
 | 
						|
				echo >&2 "$i exists" &&
 | 
						|
				exit 1
 | 
						|
			fi
 | 
						|
		done
 | 
						|
	)
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'more emptiness' '
 | 
						|
	svn_cmd mkdir -m "bang bang"  "$svnrepo"/"! !"
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'git svn rebase creates empty directory' '
 | 
						|
	( cd cloned && git svn rebase ) &&
 | 
						|
	test -d cloned/"! !"
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'git svn mkdirs recreates empty directories' '
 | 
						|
	(
 | 
						|
		cd cloned &&
 | 
						|
		rm -r * &&
 | 
						|
		git svn mkdirs &&
 | 
						|
		for i in a b c d d/e d/e/f "weird file name" "! !"
 | 
						|
		do
 | 
						|
			if ! test -d "$i"
 | 
						|
			then
 | 
						|
				echo >&2 "$i does not exist" &&
 | 
						|
				exit 1
 | 
						|
			fi
 | 
						|
		done
 | 
						|
	)
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'git svn mkdirs -r works' '
 | 
						|
	(
 | 
						|
		cd cloned &&
 | 
						|
		rm -r * &&
 | 
						|
		git svn mkdirs -r7 &&
 | 
						|
		for i in a b c d d/e d/e/f "weird file name"
 | 
						|
		do
 | 
						|
			if ! test -d "$i"
 | 
						|
			then
 | 
						|
				echo >&2 "$i does not exist" &&
 | 
						|
				exit 1
 | 
						|
			fi
 | 
						|
		done &&
 | 
						|
 | 
						|
		if test -d "! !"
 | 
						|
		then
 | 
						|
			echo >&2 "$i should not exist" &&
 | 
						|
			exit 1
 | 
						|
		fi &&
 | 
						|
 | 
						|
		git svn mkdirs -r8 &&
 | 
						|
		if ! test -d "! !"
 | 
						|
		then
 | 
						|
			echo >&2 "$i not exist" &&
 | 
						|
			exit 1
 | 
						|
		fi
 | 
						|
	)
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'initialize trunk' '
 | 
						|
	for i in trunk trunk/a trunk/"weird file name"
 | 
						|
	do
 | 
						|
		svn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i"
 | 
						|
	done
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'clone trunk' 'git svn clone -s "$svnrepo" trunk'
 | 
						|
 | 
						|
test_expect_success 'empty directories in trunk exist' '
 | 
						|
	(
 | 
						|
		cd trunk &&
 | 
						|
		for i in a "weird file name"
 | 
						|
		do
 | 
						|
			if ! test -d "$i"
 | 
						|
			then
 | 
						|
				echo >&2 "$i does not exist" &&
 | 
						|
				exit 1
 | 
						|
			fi
 | 
						|
		done
 | 
						|
	)
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'remove a top-level directory from svn' '
 | 
						|
	svn_cmd rm -m "remove d" "$svnrepo"/d
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'removed top-level directory does not exist' '
 | 
						|
	git svn clone "$svnrepo" removed &&
 | 
						|
	test ! -e removed/d
 | 
						|
 | 
						|
'
 | 
						|
unhandled=.git/svn/refs/remotes/git-svn/unhandled.log
 | 
						|
test_expect_success 'git svn gc-ed files work' '
 | 
						|
	(
 | 
						|
		cd removed &&
 | 
						|
		git svn gc &&
 | 
						|
		: Compress::Zlib may not be available &&
 | 
						|
		if test -f "$unhandled".gz
 | 
						|
		then
 | 
						|
			svn_cmd mkdir -m gz "$svnrepo"/gz &&
 | 
						|
			git reset --hard $(git rev-list HEAD | tail -1) &&
 | 
						|
			git svn rebase &&
 | 
						|
			test -f "$unhandled".gz &&
 | 
						|
			test -f "$unhandled" &&
 | 
						|
			for i in a b c "weird file name" gz "! !"
 | 
						|
			do
 | 
						|
				if ! test -d "$i"
 | 
						|
				then
 | 
						|
					echo >&2 "$i does not exist" &&
 | 
						|
					exit 1
 | 
						|
				fi
 | 
						|
			done
 | 
						|
		fi
 | 
						|
	)
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |