108 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| test_description='check output directory names used by git-clone'
 | |
| . ./test-lib.sh
 | |
| 
 | |
| # we use a fake ssh wrapper that ignores the arguments
 | |
| # entirely; we really only care that we get _some_ repo,
 | |
| # as the real test is what clone does on the local side
 | |
| test_expect_success 'setup ssh wrapper' '
 | |
| 	write_script "$TRASH_DIRECTORY/ssh-wrapper" <<-\EOF &&
 | |
| 	git upload-pack "$TRASH_DIRECTORY"
 | |
| 	EOF
 | |
| 	GIT_SSH="$TRASH_DIRECTORY/ssh-wrapper" &&
 | |
| 	GIT_SSH_VARIANT=ssh &&
 | |
| 	export GIT_SSH &&
 | |
| 	export GIT_SSH_VARIANT &&
 | |
| 	export TRASH_DIRECTORY
 | |
| '
 | |
| 
 | |
| # make sure that cloning $1 results in local directory $2
 | |
| test_clone_dir () {
 | |
| 	url=$1; shift
 | |
| 	dir=$1; shift
 | |
| 	expect=success
 | |
| 	bare=non-bare
 | |
| 	clone_opts=
 | |
| 	for i in "$@"
 | |
| 	do
 | |
| 		case "$i" in
 | |
| 		fail)
 | |
| 			expect=failure
 | |
| 			;;
 | |
| 		bare)
 | |
| 			bare=bare
 | |
| 			clone_opts=--bare
 | |
| 			;;
 | |
| 		esac
 | |
| 	done
 | |
| 	test_expect_$expect "clone of $url goes to $dir ($bare)" "
 | |
| 		rm -rf $dir &&
 | |
| 		git clone $clone_opts $url &&
 | |
| 		test_path_is_dir $dir
 | |
| 	"
 | |
| }
 | |
| 
 | |
| # basic syntax with bare and non-bare variants
 | |
| test_clone_dir host:foo foo
 | |
| test_clone_dir host:foo foo.git bare
 | |
| test_clone_dir host:foo.git foo
 | |
| test_clone_dir host:foo.git foo.git bare
 | |
| test_clone_dir host:foo/.git foo
 | |
| test_clone_dir host:foo/.git foo.git bare
 | |
| 
 | |
| # similar, but using ssh URL rather than host:path syntax
 | |
| test_clone_dir ssh://host/foo foo
 | |
| test_clone_dir ssh://host/foo foo.git bare
 | |
| test_clone_dir ssh://host/foo.git foo
 | |
| test_clone_dir ssh://host/foo.git foo.git bare
 | |
| test_clone_dir ssh://host/foo/.git foo
 | |
| test_clone_dir ssh://host/foo/.git foo.git bare
 | |
| 
 | |
| # we should remove trailing slashes and .git suffixes
 | |
| test_clone_dir ssh://host/foo/ foo
 | |
| test_clone_dir ssh://host/foo/// foo
 | |
| test_clone_dir ssh://host/foo/.git/ foo
 | |
| test_clone_dir ssh://host/foo.git/ foo
 | |
| test_clone_dir ssh://host/foo.git/// foo
 | |
| test_clone_dir ssh://host/foo///.git/ foo
 | |
| test_clone_dir ssh://host/foo/.git/// foo
 | |
| 
 | |
| test_clone_dir host:foo/ foo
 | |
| test_clone_dir host:foo/// foo
 | |
| test_clone_dir host:foo.git/ foo
 | |
| test_clone_dir host:foo/.git/ foo
 | |
| test_clone_dir host:foo.git/// foo
 | |
| test_clone_dir host:foo///.git/ foo
 | |
| test_clone_dir host:foo/.git/// foo
 | |
| 
 | |
| # omitting the path should default to the hostname
 | |
| test_clone_dir ssh://host/ host
 | |
| test_clone_dir ssh://host:1234/ host
 | |
| test_clone_dir ssh://user@host/ host
 | |
| test_clone_dir host:/ host
 | |
| 
 | |
| # auth materials should be redacted
 | |
| test_clone_dir ssh://user:password@host/ host
 | |
| test_clone_dir ssh://user:password@host:1234/ host
 | |
| test_clone_dir ssh://user:passw@rd@host:1234/ host
 | |
| test_clone_dir user@host:/ host
 | |
| test_clone_dir user:password@host:/ host
 | |
| test_clone_dir user:passw@rd@host:/ host
 | |
| 
 | |
| # auth-like material should not be dropped
 | |
| test_clone_dir ssh://host/foo@bar foo@bar
 | |
| test_clone_dir ssh://host/foo@bar.git foo@bar
 | |
| test_clone_dir ssh://user:password@host/foo@bar foo@bar
 | |
| test_clone_dir ssh://user:passw@rd@host/foo@bar.git foo@bar
 | |
| 
 | |
| test_clone_dir host:/foo@bar foo@bar
 | |
| test_clone_dir host:/foo@bar.git foo@bar
 | |
| test_clone_dir user:password@host:/foo@bar foo@bar
 | |
| test_clone_dir user:passw@rd@host:/foo@bar.git foo@bar
 | |
| 
 | |
| # trailing port-like numbers should not be stripped for paths
 | |
| test_clone_dir ssh://user:password@host/test:1234 1234
 | |
| test_clone_dir ssh://user:password@host/test:1234.git 1234
 | |
| 
 | |
| test_done
 |