Class: Profiler::TestRunner::Discovery

Inherits:
Object
  • Object
show all
Defined in:
lib/profiler/test_runner/discovery.rb

Constant Summary collapse

SPEC_GLOB =
"spec/**/*_spec.rb"
TEST_GLOB =
"test/**/*_test.rb"

Class Method Summary collapse

Class Method Details

.files(framework: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/profiler/test_runner/discovery.rb', line 16

def self.files(framework: nil)
  root = defined?(Rails) ? Rails.root.to_s : Dir.pwd
  result = {}

  globs = case framework&.to_sym
          when :rspec    then [SPEC_GLOB]
          when :minitest then [TEST_GLOB]
          else [SPEC_GLOB, TEST_GLOB]
          end

  globs.each do |glob|
    Dir.glob(File.join(root, glob)).each do |path|
      relative = path.sub("#{root}/", "")
      parts = relative.split("/")
      dir   = parts[0..-2].join("/")
      result[dir] ||= []
      result[dir] << { path: relative, name: parts.last }
    end
  end

  result.map do |dir, files|
    {
      directory: dir,
      files: files.sort_by { |f| f[:name] }
    }
  end.sort_by { |d| d[:directory] }
end

.frameworksObject



9
10
11
12
13
14
# File 'lib/profiler/test_runner/discovery.rb', line 9

def self.frameworks
  frameworks = []
  frameworks << :rspec    if rspec_available?
  frameworks << :minitest if minitest_available?
  frameworks
end

.minitest_available?Boolean

Returns:

  • (Boolean)


50
51
52
53
54
# File 'lib/profiler/test_runner/discovery.rb', line 50

def self.minitest_available?
  defined?(Minitest) || Gem.loaded_specs.key?("minitest")
rescue
  false
end

.rspec_available?Boolean

Returns:

  • (Boolean)


44
45
46
47
48
# File 'lib/profiler/test_runner/discovery.rb', line 44

def self.rspec_available?
  defined?(RSpec) || Gem.loaded_specs.key?("rspec-core")
rescue
  false
end