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