| #!/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 |