130 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| test_description='git bugreport'
 | |
| 
 | |
| TEST_PASSES_SANITIZE_LEAK=true
 | |
| . ./test-lib.sh
 | |
| 
 | |
| # Headers "[System Info]" will be followed by a non-empty line if we put some
 | |
| # information there; we can make sure all our headers were followed by some
 | |
| # information to check if the command was successful.
 | |
| HEADER_PATTERN="^\[.*\]$"
 | |
| 
 | |
| check_all_headers_populated () {
 | |
| 	while read -r line
 | |
| 	do
 | |
| 		if test "$(grep "$HEADER_PATTERN" "$line")"
 | |
| 		then
 | |
| 			echo "$line"
 | |
| 			read -r nextline
 | |
| 			if test -z "$nextline"; then
 | |
| 				return 1;
 | |
| 			fi
 | |
| 		fi
 | |
| 	done
 | |
| }
 | |
| 
 | |
| test_expect_success 'creates a report with content in the right places' '
 | |
| 	test_when_finished rm git-bugreport-check-headers.txt &&
 | |
| 	git bugreport -s check-headers &&
 | |
| 	check_all_headers_populated <git-bugreport-check-headers.txt
 | |
| '
 | |
| 
 | |
| test_expect_success 'dies if file with same name as report already exists' '
 | |
| 	test_when_finished rm git-bugreport-duplicate.txt &&
 | |
| 	>>git-bugreport-duplicate.txt &&
 | |
| 	test_must_fail git bugreport --suffix duplicate
 | |
| '
 | |
| 
 | |
| test_expect_success '--output-directory puts the report in the provided dir' '
 | |
| 	test_when_finished rm -fr foo/ &&
 | |
| 	git bugreport -o foo/ &&
 | |
| 	test_path_is_file foo/git-bugreport-*
 | |
| '
 | |
| 
 | |
| test_expect_success 'incorrect arguments abort with usage' '
 | |
| 	test_must_fail git bugreport --false 2>output &&
 | |
| 	test_i18ngrep usage output &&
 | |
| 	test_path_is_missing git-bugreport-*
 | |
| '
 | |
| 
 | |
| test_expect_success 'runs outside of a git dir' '
 | |
| 	test_when_finished rm non-repo/git-bugreport-* &&
 | |
| 	nongit git bugreport
 | |
| '
 | |
| 
 | |
| test_expect_success 'can create leading directories outside of a git dir' '
 | |
| 	test_when_finished rm -fr foo/bar/baz &&
 | |
| 	nongit git bugreport -o foo/bar/baz
 | |
| '
 | |
| 
 | |
| test_expect_success 'indicates populated hooks' '
 | |
| 	test_when_finished rm git-bugreport-hooks.txt &&
 | |
| 
 | |
| 	test_hook applypatch-msg <<-\EOF &&
 | |
| 	true
 | |
| 	EOF
 | |
| 	test_hook unknown-hook <<-\EOF &&
 | |
| 	true
 | |
| 	EOF
 | |
| 	git bugreport -s hooks &&
 | |
| 
 | |
| 	sort >expect <<-\EOF &&
 | |
| 	[Enabled Hooks]
 | |
| 	applypatch-msg
 | |
| 	EOF
 | |
| 
 | |
| 	sed -ne "/^\[Enabled Hooks\]$/,/^$/p" <git-bugreport-hooks.txt >actual &&
 | |
| 	test_cmp expect actual
 | |
| '
 | |
| 
 | |
| test_expect_success UNZIP '--diagnose creates diagnostics zip archive' '
 | |
| 	test_when_finished rm -rf report &&
 | |
| 
 | |
| 	git bugreport --diagnose -o report -s test >out &&
 | |
| 
 | |
| 	zip_path=report/git-diagnostics-test.zip &&
 | |
| 	grep "Available space" out &&
 | |
| 	test_path_is_file "$zip_path" &&
 | |
| 
 | |
| 	# Check zipped archive content
 | |
| 	"$GIT_UNZIP" -p "$zip_path" diagnostics.log >out &&
 | |
| 	test_file_not_empty out &&
 | |
| 
 | |
| 	"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
 | |
| 	grep ".git/objects" out &&
 | |
| 
 | |
| 	"$GIT_UNZIP" -p "$zip_path" objects-local.txt >out &&
 | |
| 	grep "^Total: [0-9][0-9]*" out &&
 | |
| 
 | |
| 	# Should not include .git directory contents by default
 | |
| 	! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
 | |
| '
 | |
| 
 | |
| test_expect_success UNZIP '--diagnose=stats excludes .git dir contents' '
 | |
| 	test_when_finished rm -rf report &&
 | |
| 
 | |
| 	git bugreport --diagnose=stats -o report -s test >out &&
 | |
| 
 | |
| 	# Includes pack quantity/size info
 | |
| 	"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
 | |
| 	grep ".git/objects" out &&
 | |
| 
 | |
| 	# Does not include .git directory contents
 | |
| 	! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
 | |
| '
 | |
| 
 | |
| test_expect_success UNZIP '--diagnose=all includes .git dir contents' '
 | |
| 	test_when_finished rm -rf report &&
 | |
| 
 | |
| 	git bugreport --diagnose=all -o report -s test >out &&
 | |
| 
 | |
| 	# Includes .git directory contents
 | |
| 	"$GIT_UNZIP" -l "$zip_path" | grep ".git/" &&
 | |
| 
 | |
| 	"$GIT_UNZIP" -p "$zip_path" .git/HEAD >out &&
 | |
| 	test_file_not_empty out
 | |
| '
 | |
| 
 | |
| test_done
 |