97 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description='Test read_early_config()'
 | 
						|
 | 
						|
. ./test-lib.sh
 | 
						|
 | 
						|
test_expect_success 'read early config' '
 | 
						|
	test_config early.config correct &&
 | 
						|
	test-tool config read_early_config early.config >output &&
 | 
						|
	test correct = "$(cat output)"
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'in a sub-directory' '
 | 
						|
	test_config early.config sub &&
 | 
						|
	mkdir -p sub &&
 | 
						|
	(
 | 
						|
		cd sub &&
 | 
						|
		test-tool config read_early_config early.config
 | 
						|
	) >output &&
 | 
						|
	test sub = "$(cat output)"
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'ceiling' '
 | 
						|
	test_config early.config ceiling &&
 | 
						|
	mkdir -p sub &&
 | 
						|
	(
 | 
						|
		GIT_CEILING_DIRECTORIES="$PWD" &&
 | 
						|
		export GIT_CEILING_DIRECTORIES &&
 | 
						|
		cd sub &&
 | 
						|
		test-tool config read_early_config early.config
 | 
						|
	) >output &&
 | 
						|
	test -z "$(cat output)"
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'ceiling #2' '
 | 
						|
	mkdir -p xdg/git &&
 | 
						|
	git config -f xdg/git/config early.config xdg &&
 | 
						|
	test_config early.config ceiling &&
 | 
						|
	mkdir -p sub &&
 | 
						|
	(
 | 
						|
		XDG_CONFIG_HOME="$PWD"/xdg &&
 | 
						|
		GIT_CEILING_DIRECTORIES="$PWD" &&
 | 
						|
		export GIT_CEILING_DIRECTORIES XDG_CONFIG_HOME &&
 | 
						|
		cd sub &&
 | 
						|
		test-tool config read_early_config early.config
 | 
						|
	) >output &&
 | 
						|
	test xdg = "$(cat output)"
 | 
						|
'
 | 
						|
 | 
						|
cmdline_config="'test.source=cmdline'"
 | 
						|
test_expect_success 'read config file in right order' '
 | 
						|
	echo "[test]source = home" >>.gitconfig &&
 | 
						|
	git init foo &&
 | 
						|
	(
 | 
						|
		cd foo &&
 | 
						|
		echo "[test]source = repo" >>.git/config &&
 | 
						|
		GIT_CONFIG_PARAMETERS=$cmdline_config test-tool config \
 | 
						|
			read_early_config test.source >actual &&
 | 
						|
		cat >expected <<-\EOF &&
 | 
						|
		home
 | 
						|
		repo
 | 
						|
		cmdline
 | 
						|
		EOF
 | 
						|
		test_cmp expected actual
 | 
						|
	)
 | 
						|
'
 | 
						|
 | 
						|
test_with_config () {
 | 
						|
	rm -rf throwaway &&
 | 
						|
	git init throwaway &&
 | 
						|
	(
 | 
						|
		cd throwaway &&
 | 
						|
		echo "$*" >.git/config &&
 | 
						|
		test-tool config read_early_config early.config
 | 
						|
	)
 | 
						|
}
 | 
						|
 | 
						|
test_expect_success 'ignore .git/ with incompatible repository version' '
 | 
						|
	test_with_config "[core]repositoryformatversion = 999999" 2>err &&
 | 
						|
	test_i18ngrep "warning:.* Expected git repo version <= [1-9]" err
 | 
						|
'
 | 
						|
 | 
						|
test_expect_failure 'ignore .git/ with invalid repository version' '
 | 
						|
	test_with_config "[core]repositoryformatversion = invalid"
 | 
						|
'
 | 
						|
 | 
						|
 | 
						|
test_expect_failure 'ignore .git/ with invalid config' '
 | 
						|
	test_with_config "["
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'early config and onbranch' '
 | 
						|
	echo "[broken" >broken &&
 | 
						|
	test_with_config "[includeif \"onbranch:refs/heads/master\"]path=../broken"
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |