diff options
Diffstat (limited to 'tooling/quality/test_level.rb')
-rw-r--r-- | tooling/quality/test_level.rb | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/tooling/quality/test_level.rb b/tooling/quality/test_level.rb index ad9de067375..83cbe7a1f19 100644 --- a/tooling/quality/test_level.rb +++ b/tooling/quality/test_level.rb @@ -60,20 +60,20 @@ module Quality system: ['features'] }.freeze - attr_reader :prefix + attr_reader :prefixes - def initialize(prefix = nil) - @prefix = prefix + def initialize(prefixes = nil) + @prefixes = Array(prefixes) @patterns = {} @regexps = {} end def pattern(level) - @patterns[level] ||= "#{prefix}spec/#{folders_pattern(level)}{,/**/}*#{suffix(level)}" + @patterns[level] ||= "#{prefixes_for_pattern}spec/#{folders_pattern(level)}{,/**/}*#{suffix(level)}" end def regexp(level) - @regexps[level] ||= Regexp.new("#{prefix}spec/#{folders_regex(level)}").freeze + @regexps[level] ||= Regexp.new("#{prefixes_for_regex}spec/#{folders_regex(level)}").freeze end def level_for(file_path) @@ -102,6 +102,20 @@ module Quality private + def prefixes_for_pattern + return '' if prefixes.empty? + + "{#{prefixes.join(',')}}" + end + + def prefixes_for_regex + return '' if prefixes.empty? + + regex_prefix = prefixes.map(&Regexp.method(:escape)).join('|') + + "(#{regex_prefix})" + end + def suffix(level) case level when :frontend_fixture |