43 lines
		
	
	
	
		
			868 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			868 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description="Tests pathological globbing performance
 | 
						|
 | 
						|
Shows how Git's globbing performance performs when given the sort of
 | 
						|
pathological patterns described in at https://research.swtch.com/glob
 | 
						|
"
 | 
						|
 | 
						|
. ./perf-lib.sh
 | 
						|
 | 
						|
test_globs_big='10 25 50 75 100'
 | 
						|
test_globs_small='1 2 3 4 5 6'
 | 
						|
 | 
						|
test_perf_fresh_repo
 | 
						|
 | 
						|
test_expect_success 'setup' '
 | 
						|
	for i in $(test_seq 1 100)
 | 
						|
	do
 | 
						|
		printf "a" >>refname &&
 | 
						|
		for j in $(test_seq 1 $i)
 | 
						|
		do
 | 
						|
			printf "a*" >>refglob.$i
 | 
						|
		done &&
 | 
						|
		echo b >>refglob.$i
 | 
						|
	done &&
 | 
						|
	test_commit test $(cat refname).t "" $(cat refname).t
 | 
						|
'
 | 
						|
 | 
						|
for i in $test_globs_small
 | 
						|
do
 | 
						|
	test_perf "refglob((a*)^nb) against tag (a^100).t; n = $i" '
 | 
						|
		git for-each-ref "refs/tags/$(cat refglob.'$i')b"
 | 
						|
	'
 | 
						|
done
 | 
						|
 | 
						|
for i in $test_globs_small
 | 
						|
do
 | 
						|
	test_perf "fileglob((a*)^nb) against file (a^100).t; n = $i" '
 | 
						|
		git ls-files "$(cat refglob.'$i')b"
 | 
						|
	'
 | 
						|
done
 | 
						|
 | 
						|
test_done
 |