1#!/bin/sh
2
3test_description="Tests pathological globbing performance
4
5Shows how Git's globbing performance performs when given the sort of
6pathological patterns described in at https://research.swtch.com/glob
7"
8
9. ./perf-lib.sh
10
11test_globs_big='10 25 50 75 100'
12test_globs_small='1 2 3 4 5 6'
13
14test_perf_fresh_repo
15
16test_expect_success 'setup' '
17 for i in $(test_seq 1 100)
18 do
19 printf "a" >>refname &&
20 for j in $(test_seq 1 $i)
21 do
22 printf "a*" >>refglob.$i
23 done &&
24 echo b >>refglob.$i
25 done &&
26 test_commit test $(cat refname).t "" $(cat refname).t
27'
28
29for i in $test_globs_small
30do
31 test_perf "refglob((a*)^nb) against tag (a^100).t; n = $i" '
32 git for-each-ref "refs/tags/$(cat refglob.'$i')b"
33 '
34done
35
36for i in $test_globs_small
37do
38 test_perf "fileglob((a*)^nb) against file (a^100).t; n = $i" '
39 git ls-files "$(cat refglob.'$i')b"
40 '
41done
42
43test_done