|
14 | 14 |
|
15 | 15 | describe '#match?' do |
16 | 16 | it 'matches when no filters provided' do |
17 | | - filter = BenchmarkFilter.new(categories: [], name_filters: [], metadata: @metadata) |
| 17 | + filter = BenchmarkFilter.new(categories: [], name_filters: [], excludes: [], metadata: @metadata) |
18 | 18 |
|
19 | 19 | assert_equal true, filter.match?('fib.rb') |
20 | 20 | end |
21 | 21 |
|
22 | 22 | it 'matches by category' do |
23 | | - filter = BenchmarkFilter.new(categories: ['micro'], name_filters: [], metadata: @metadata) |
| 23 | + filter = BenchmarkFilter.new(categories: ['micro'], name_filters: [], excludes: [], metadata: @metadata) |
24 | 24 |
|
25 | 25 | assert_equal true, filter.match?('fib.rb') |
26 | 26 | assert_equal false, filter.match?('railsbench.rb') |
27 | 27 | end |
28 | 28 |
|
29 | 29 | it 'matches by name filter' do |
30 | | - filter = BenchmarkFilter.new(categories: [], name_filters: ['fib'], metadata: @metadata) |
| 30 | + filter = BenchmarkFilter.new(categories: [], name_filters: ['fib'], excludes: [], metadata: @metadata) |
31 | 31 |
|
32 | 32 | assert_equal true, filter.match?('fib.rb') |
33 | 33 | assert_equal false, filter.match?('railsbench.rb') |
34 | 34 | end |
35 | 35 |
|
| 36 | + it 'applies excludes' do |
| 37 | + filter = BenchmarkFilter.new(categories: ['headline'], name_filters: [], excludes: ['railsbench'], metadata: @metadata) |
| 38 | + |
| 39 | + assert_equal true, filter.match?('optcarrot.rb') |
| 40 | + assert_equal false, filter.match?('railsbench.rb') |
| 41 | + end |
| 42 | + |
36 | 43 | it 'matches ractor category' do |
37 | | - filter = BenchmarkFilter.new(categories: ['ractor'], name_filters: [], metadata: @metadata) |
| 44 | + filter = BenchmarkFilter.new(categories: ['ractor'], name_filters: [], excludes: [], metadata: @metadata) |
38 | 45 |
|
39 | 46 | assert_equal true, filter.match?('ractor_bench.rb') |
40 | 47 | end |
41 | 48 |
|
42 | 49 | it 'strips .rb extension from entry name' do |
43 | | - filter = BenchmarkFilter.new(categories: [], name_filters: ['fib'], metadata: @metadata) |
| 50 | + filter = BenchmarkFilter.new(categories: [], name_filters: ['fib'], excludes: [], metadata: @metadata) |
44 | 51 |
|
45 | 52 | assert_equal true, filter.match?('fib.rb') |
46 | 53 | end |
47 | 54 |
|
48 | 55 | it 'handles regex filters' do |
49 | | - filter = BenchmarkFilter.new(categories: [], name_filters: ['/rails/'], metadata: @metadata) |
| 56 | + filter = BenchmarkFilter.new(categories: [], name_filters: ['/rails/'], excludes: [], metadata: @metadata) |
50 | 57 |
|
51 | 58 | assert_equal true, filter.match?('railsbench.rb') |
52 | 59 | assert_equal false, filter.match?('fib.rb') |
53 | 60 | end |
54 | 61 |
|
55 | 62 | it 'handles case-insensitive regex filters' do |
56 | | - filter = BenchmarkFilter.new(categories: [], name_filters: ['/RAILS/i'], metadata: @metadata) |
| 63 | + filter = BenchmarkFilter.new(categories: [], name_filters: ['/RAILS/i'], excludes: [], metadata: @metadata) |
57 | 64 |
|
58 | 65 | assert_equal true, filter.match?('railsbench.rb') |
59 | 66 | end |
60 | 67 |
|
61 | 68 | it 'handles multiple categories' do |
62 | | - filter = BenchmarkFilter.new(categories: ['micro', 'headline'], name_filters: [], metadata: @metadata) |
| 69 | + filter = BenchmarkFilter.new(categories: ['micro', 'headline'], name_filters: [], excludes: [], metadata: @metadata) |
63 | 70 |
|
64 | 71 | assert_equal true, filter.match?('fib.rb') |
65 | 72 | assert_equal true, filter.match?('railsbench.rb') |
66 | 73 | end |
67 | 74 |
|
68 | 75 | it 'requires both category and name filter to match when both provided' do |
69 | | - filter = BenchmarkFilter.new(categories: ['micro'], name_filters: ['rails'], metadata: @metadata) |
| 76 | + filter = BenchmarkFilter.new(categories: ['micro'], name_filters: ['rails'], excludes: [], metadata: @metadata) |
70 | 77 |
|
71 | 78 | assert_equal false, filter.match?('fib.rb') # matches category but not name |
72 | 79 | assert_equal false, filter.match?('railsbench.rb') # matches name but not category |
73 | 80 | end |
74 | 81 |
|
75 | 82 | it 'handles complex regex patterns' do |
76 | | - filter = BenchmarkFilter.new(categories: [], name_filters: ['/opt.*rot/'], metadata: @metadata) |
| 83 | + filter = BenchmarkFilter.new(categories: [], name_filters: ['/opt.*rot/'], excludes: [], metadata: @metadata) |
77 | 84 |
|
78 | 85 | assert_equal true, filter.match?('optcarrot.rb') |
79 | 86 | assert_equal false, filter.match?('fib.rb') |
80 | 87 | end |
81 | 88 |
|
82 | 89 | it 'handles mixed string and regex filters' do |
83 | | - filter = BenchmarkFilter.new(categories: [], name_filters: ['fib', '/rails/'], metadata: @metadata) |
| 90 | + filter = BenchmarkFilter.new(categories: [], name_filters: ['fib', '/rails/'], excludes: [], metadata: @metadata) |
84 | 91 |
|
85 | 92 | assert_equal true, filter.match?('fib.rb') |
86 | 93 | assert_equal true, filter.match?('railsbench.rb') |
|
0 commit comments