Skip to content
This repository was archived by the owner on Aug 23, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions lib/mutest.rb
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ def self.ci?
require 'mutest/expression/namespace'
require 'mutest/test'
require 'mutest/integration'
require 'mutest/integration/null'
require 'mutest/selector'
require 'mutest/selector/expression'
require 'mutest/config'
Expand Down Expand Up @@ -206,6 +207,7 @@ def self.ci?
require 'mutest/reporter/cli/tput'
require 'mutest/reporter/cli/format'
require 'mutest/repository'
require 'mutest/requirer'
require 'mutest/zombifier'

module Mutest
Expand All @@ -230,6 +232,7 @@ class Config
process: Process
),
jobs: ::Parallel.processor_count,
requirer: Requirer.new,
kernel: Kernel,
load_path: $LOAD_PATH,
matcher: Matcher::Config::DEFAULT,
Expand Down
2 changes: 1 addition & 1 deletion lib/mutest/cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def add_environment_options(opts)
#
# @return [undefined]
def setup_integration(name)
with(integration: Integration.setup(config.kernel, name))
with(integration: Integration.setup(config.requirer, name))
rescue LoadError
raise Error, "Could not load integration #{name.inspect} (you may want to try installing the gem mutest-#{name})"
end
Expand Down
1 change: 1 addition & 0 deletions lib/mutest/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class Config
:matcher,
:open3,
:pathname,
:requirer,
:requires,
:reporter,
:zombie
Expand Down
24 changes: 0 additions & 24 deletions lib/mutest/integration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,29 +47,5 @@ def setup
def expression_parser
config.expression_parser
end

# Null integration that never kills a mutation
class Null < self
# Available tests for integration
#
# @return [Enumerable<Test>]
def all_tests
EMPTY_ARRAY
end

# Run a collection of tests
#
# @param [Enumerable<Mutest::Test>] tests
#
# @return [Result::Test]
def call(tests)
Result::Test.new(
output: '',
passed: true,
runtime: 0.0,
tests: tests
)
end
end # Null
end # Integration
end # Mutest
27 changes: 27 additions & 0 deletions lib/mutest/integration/null.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module Mutest
class Integration
# Null integration that never kills a mutation
class Null < self
# Available tests for integration
#
# @return [Enumerable<Test>]
def all_tests
EMPTY_ARRAY
end

# Run a collection of tests
#
# @param [Enumerable<Mutest::Test>] tests
#
# @return [Result::Test]
def call(tests)
Result::Test.new(
output: '',
passed: true,
runtime: 0.0,
tests: tests
)
end
end # Null
end # Integration
end # Mutest
6 changes: 6 additions & 0 deletions lib/mutest/requirer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module Mutest
# Class that exposes #require as a public method
class Requirer
public :require
end # Requirer
end # Mutest
18 changes: 15 additions & 3 deletions spec/unit/mutest/cli_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -137,18 +137,30 @@
end

context 'with use flag' do
context 'when integration exists' do
context 'when using the existing integration with rspec' do
let(:flags) { %w[--use rspec] }
let(:expected_integration) { Mutest::Integration::Rspec }

before do
expect(Kernel).to receive(:require)
expect(Mutest::Config::DEFAULT.requirer).to receive(:require)
.with('mutest/integration/rspec')
.and_call_original
end

it_should_behave_like 'a cli parser'
end

let(:expected_integration) { Mutest::Integration::Rspec }
context 'when specifying the default null integration explicitely' do
let(:flags) { %w[--use null] }
let(:expected_integration) { Mutest::Integration::Null }

before do
expect(Mutest::Config::DEFAULT.requirer).to receive(:require)
.with('mutest/integration/null')
.and_call_original
end

it_should_behave_like 'a cli parser'
end

context 'when integration does NOT exist' do
Expand Down
8 changes: 4 additions & 4 deletions spec/unit/mutest/integration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@
end

describe '.setup' do
subject { described_class.setup(kernel, name) }
subject { described_class.setup(requirer, name) }

let(:name) { 'null' }
let(:kernel) { class_double(Kernel) }
let(:name) { 'null' }
let(:requirer) { Mutest::Requirer.new }

before do
expect(kernel).to receive(:require)
expect(requirer).to receive(:require)
.with('mutest/integration/null')
end

Expand Down