diff options
author | Rémy Coutable <remy@rymai.me> | 2019-05-22 15:16:49 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2019-05-22 22:47:32 +0300 |
commit | 6145ddf515f93fcc7ed873b911b6369cc2bc0462 (patch) | |
tree | abdf5336367a88aaa7af7e1a83c3c4fbba37e7ba /lib/quality | |
parent | add00b6986c78497c18a2f48bf83f0a23c7923f8 (diff) |
Revert "Merge branch 'revert-04c3c6dd' into 'master'"
This reverts commit 744f1f2e7037f5c70c3168d9e2e89b1c327465d2, reversing
changes made to c4d930e5f54e7da07c80cc028dfc0f5c08719146.
Diffstat (limited to 'lib/quality')
-rw-r--r-- | lib/quality/test_level.rb | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/lib/quality/test_level.rb b/lib/quality/test_level.rb new file mode 100644 index 00000000000..24d8eac200c --- /dev/null +++ b/lib/quality/test_level.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +module Quality + class TestLevel + UnknownTestLevelError = Class.new(StandardError) + + TEST_LEVEL_FOLDERS = { + unit: %w[ + bin + config + db + dependencies + factories + finders + frontend + graphql + helpers + initializers + javascripts + lib + migrations + models + policies + presenters + rack_servers + routing + rubocop + serializers + services + sidekiq + tasks + uploaders + validators + views + workers + elastic_integration + ], + integration: %w[ + controllers + mailers + requests + ], + system: ['features'] + }.freeze + + attr_reader :prefix + + def initialize(prefix = nil) + @prefix = prefix + @patterns = {} + @regexps = {} + end + + def pattern(level) + @patterns[level] ||= "#{prefix}spec/{#{TEST_LEVEL_FOLDERS.fetch(level).join(',')}}{,/**/}*_spec.rb".freeze + end + + def regexp(level) + @regexps[level] ||= Regexp.new("#{prefix}spec/(#{TEST_LEVEL_FOLDERS.fetch(level).join('|')})").freeze + end + + def level_for(file_path) + case file_path + when regexp(:unit) + :unit + when regexp(:integration) + :integration + when regexp(:system) + :system + else + raise UnknownTestLevelError, "Test level for #{file_path} couldn't be set. Please rename the file properly or change the test level detection regexes in #{__FILE__}." + end + end + end +end |