Class: TestMap::TestTask

Inherits:
Rake::TaskLib
  • Object
show all
Defined in:
lib/test_map/test_task.rb

Overview

TestTask is a rake helper class.

Defined Under Namespace

Classes: MinitestTask, RSpecTask, RailsTestTask, UnknownAdapterError

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ TestTask

rubocop:disable Lint/MissingSuper

[View source]

14
15
16
# File 'lib/test_map/test_task.rb', line 14

def initialize(name) # rubocop:disable Lint/MissingSuper
  @name = name
end

Class Method Details

.create(name = :test) ⇒ Object

[View source]

41
# File 'lib/test_map/test_task.rb', line 41

def self.create(name = :test) = new(name).define

Instance Method Details

#build_test_taskObject

[View source]

60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/test_map/test_task.rb', line 60

def build_test_task
  if defined?(Rails)
    return RailsTestTask.new
  elsif defined?(Minitest)
    require 'minitest/test_task'
    return MinitestTask.new
  elsif defined?(RSpec)
    return RSpecTask.new
  end

  raise UnknownAdapterError, 'No test task adapter found'
end

#defineObject

[View source]

43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/test_map/test_task.rb', line 43

def define
  namespace @name do
    desc 'Run tests for changed files'
    task :changes do
      out_file = "#{Dir.pwd}/.test-map.yml"
      args = defined?(Rails) ? ENV['TEST']&.split : ARGV[1..]
      test_files = Mapping.new(out_file).lookup(*args)

      # puts "Running tests #{test_files.join(' ')}"
      test_task.files = test_files
      test_task.call
    end
  end
end

#test_taskObject

[View source]

58
# File 'lib/test_map/test_task.rb', line 58

def test_task = @test_task ||= build_test_task