171 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			171 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| test_description='submodule --cached, --quiet etc. output'
 | |
| 
 | |
| TEST_PASSES_SANITIZE_LEAK=true
 | |
| . ./test-lib.sh
 | |
| . "$TEST_DIRECTORY"/lib-t3100.sh
 | |
| 
 | |
| setup_sub () {
 | |
| 	local d="$1" &&
 | |
| 	shift &&
 | |
| 	git $@ clone . "$d" &&
 | |
| 	git $@ submodule add ./"$d"
 | |
| }
 | |
| 
 | |
| normalize_status () {
 | |
| 	sed -e 's/-g[0-9a-f]*/-gHASH/'
 | |
| }
 | |
| 
 | |
| test_expect_success 'setup' '
 | |
| 	test_commit A &&
 | |
| 	test_commit B &&
 | |
| 	setup_sub S  &&
 | |
| 	setup_sub S.D &&
 | |
| 	setup_sub S.C &&
 | |
| 	setup_sub S.C.D &&
 | |
| 	setup_sub X &&
 | |
| 	git add S* &&
 | |
| 	test_commit C &&
 | |
| 
 | |
| 	# recursive in X/
 | |
| 	git -C X pull &&
 | |
| 	GIT_ALLOW_PROTOCOL=file git -C X submodule update --init &&
 | |
| 
 | |
| 	# dirty
 | |
| 	for d in S.D X/S.D
 | |
| 	do
 | |
| 		echo dirty >"$d"/A.t || return 1
 | |
| 	done &&
 | |
| 
 | |
| 	# commit (for --cached)
 | |
| 	for d in S.C* X/S.C*
 | |
| 	do
 | |
| 		git -C "$d" reset --hard A || return 1
 | |
| 	done &&
 | |
| 
 | |
| 	# dirty
 | |
| 	for d in S*.D X/S*.D
 | |
| 	do
 | |
| 		echo dirty >"$d/C2.t" || return 1
 | |
| 	done &&
 | |
| 
 | |
| 	for ref in A B C
 | |
| 	do
 | |
| 		# Not different with SHA-1 and SHA-256, just (ab)using
 | |
| 		# test_oid_cache as a variable bag to avoid using
 | |
| 		# $(git rev-parse ...).
 | |
| 		oid=$(git rev-parse $ref) &&
 | |
| 		test_oid_cache <<-EOF || return 1
 | |
| 		$ref sha1:$oid
 | |
| 		$ref sha256:$oid
 | |
| 		EOF
 | |
| 	done
 | |
| '
 | |
| 
 | |
| for opts in "" "status"
 | |
| do
 | |
| 	test_expect_success "git submodule $opts" '
 | |
| 		sed -e "s/^>//" >expect <<-EOF &&
 | |
| 		> $(test_oid B) S (B)
 | |
| 		>+$(test_oid A) S.C (A)
 | |
| 		>+$(test_oid A) S.C.D (A)
 | |
| 		> $(test_oid B) S.D (B)
 | |
| 		>+$(test_oid C) X (C)
 | |
| 		EOF
 | |
| 		git submodule $opts >actual.raw &&
 | |
| 		normalize_status <actual.raw >actual &&
 | |
| 		test_cmp expect actual
 | |
| 	'
 | |
| done
 | |
| 
 | |
| for opts in \
 | |
| 	"status --recursive"
 | |
| do
 | |
| 	test_expect_success "git submodule $opts" '
 | |
| 		sed -e "s/^>//" >expect <<-EOF &&
 | |
| 		> $(test_oid B) S (B)
 | |
| 		>+$(test_oid A) S.C (A)
 | |
| 		>+$(test_oid A) S.C.D (A)
 | |
| 		> $(test_oid B) S.D (B)
 | |
| 		>+$(test_oid C) X (C)
 | |
| 		> $(test_oid B) X/S (B)
 | |
| 		>+$(test_oid A) X/S.C (A)
 | |
| 		>+$(test_oid A) X/S.C.D (A)
 | |
| 		> $(test_oid B) X/S.D (B)
 | |
| 		> $(test_oid B) X/X (B)
 | |
| 		EOF
 | |
| 		git submodule $opts >actual.raw &&
 | |
| 		normalize_status <actual.raw >actual &&
 | |
| 		test_cmp expect actual
 | |
| 	'
 | |
| done
 | |
| 
 | |
| for opts in \
 | |
| 	"--quiet" \
 | |
| 	"--quiet status" \
 | |
| 	"status --quiet"
 | |
| do
 | |
| 	test_expect_success "git submodule $opts" '
 | |
| 		git submodule $opts >out &&
 | |
| 		test_must_be_empty out
 | |
| 	'
 | |
| done
 | |
| 
 | |
| for opts in \
 | |
| 	"--cached" \
 | |
| 	"--cached status" \
 | |
| 	"status --cached"
 | |
| do
 | |
| 	test_expect_success "git submodule $opts" '
 | |
| 		sed -e "s/^>//" >expect <<-EOF &&
 | |
| 		> $(test_oid B) S (B)
 | |
| 		>+$(test_oid B) S.C (B)
 | |
| 		>+$(test_oid B) S.C.D (B)
 | |
| 		> $(test_oid B) S.D (B)
 | |
| 		>+$(test_oid B) X (B)
 | |
| 		EOF
 | |
| 		git submodule $opts >actual.raw &&
 | |
| 		normalize_status <actual.raw >actual &&
 | |
| 		test_cmp expect actual
 | |
| 	'
 | |
| done
 | |
| 
 | |
| for opts in \
 | |
| 	"--cached --quiet" \
 | |
| 	"--cached --quiet status" \
 | |
| 	"--cached status --quiet" \
 | |
| 	"--quiet status --cached" \
 | |
| 	"status --cached --quiet"
 | |
| do
 | |
| 	test_expect_success "git submodule $opts" '
 | |
| 		git submodule $opts >out &&
 | |
| 		test_must_be_empty out
 | |
| 	'
 | |
| done
 | |
| 
 | |
| for opts in \
 | |
| 	"status --cached --recursive" \
 | |
| 	"--cached status --recursive"
 | |
| do
 | |
| 	test_expect_success "git submodule $opts" '
 | |
| 		sed -e "s/^>//" >expect <<-EOF &&
 | |
| 		> $(test_oid B) S (B)
 | |
| 		>+$(test_oid B) S.C (B)
 | |
| 		>+$(test_oid B) S.C.D (B)
 | |
| 		> $(test_oid B) S.D (B)
 | |
| 		>+$(test_oid B) X (B)
 | |
| 		> $(test_oid B) X/S (B)
 | |
| 		>+$(test_oid B) X/S.C (B)
 | |
| 		>+$(test_oid B) X/S.C.D (B)
 | |
| 		> $(test_oid B) X/S.D (B)
 | |
| 		> $(test_oid B) X/X (B)
 | |
| 		EOF
 | |
| 		git submodule $opts >actual.raw &&
 | |
| 		normalize_status <actual.raw >actual &&
 | |
| 		test_cmp expect actual
 | |
| 	'
 | |
| done
 | |
| 
 | |
| test_done
 |