mutest 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/.buildkite/hooks/pre-command +1 -1
  3. data/.buildkite/pipeline.yml +9 -22
  4. data/.gitmodules +3 -0
  5. data/CHANGELOG.md +14 -1
  6. data/Gemfile +11 -6
  7. data/Gemfile.lock +27 -101
  8. data/README.md +42 -2
  9. data/Rakefile +2 -8
  10. data/circle.yml +4 -1
  11. data/lib/mutest.rb +1 -1
  12. data/lib/mutest/ast/meta/send.rb +6 -0
  13. data/lib/mutest/ast/named_children.rb +1 -1
  14. data/lib/mutest/ast/nodes.rb +0 -2
  15. data/lib/mutest/ast/regexp.rb +4 -4
  16. data/lib/mutest/ast/regexp/transformer.rb +4 -4
  17. data/lib/mutest/ast/regexp/transformer/character_set.rb +1 -1
  18. data/lib/mutest/ast/regexp/transformer/direct.rb +1 -1
  19. data/lib/mutest/ast/regexp/transformer/quantifier.rb +3 -3
  20. data/lib/mutest/ast/regexp/transformer/recursive.rb +1 -1
  21. data/lib/mutest/ast/regexp/transformer/text.rb +1 -1
  22. data/lib/mutest/ast/types.rb +0 -1
  23. data/lib/mutest/cli.rb +1 -1
  24. data/lib/mutest/context.rb +1 -1
  25. data/lib/mutest/matcher/config.rb +0 -2
  26. data/lib/mutest/matcher/method.rb +1 -3
  27. data/lib/mutest/matcher/method/instance.rb +1 -1
  28. data/lib/mutest/matcher/methods.rb +1 -1
  29. data/lib/mutest/mutator.rb +0 -2
  30. data/lib/mutest/mutator/node/block_pass.rb +29 -0
  31. data/lib/mutest/mutator/node/generic.rb +1 -0
  32. data/lib/mutest/mutator/node/literal/boolean.rb +0 -1
  33. data/lib/mutest/mutator/node/literal/range.rb +1 -1
  34. data/lib/mutest/mutator/node/literal/regex.rb +1 -1
  35. data/lib/mutest/mutator/node/literal/string.rb +3 -0
  36. data/lib/mutest/mutator/node/literal/symbol.rb +0 -2
  37. data/lib/mutest/mutator/node/send.rb +35 -6
  38. data/lib/mutest/mutator/node/splat.rb +3 -1
  39. data/lib/mutest/parallel/worker.rb +1 -1
  40. data/lib/mutest/reporter/cli.rb +0 -2
  41. data/lib/mutest/reporter/cli/format.rb +1 -1
  42. data/lib/mutest/reporter/cli/printer.rb +2 -2
  43. data/lib/mutest/reporter/cli/printer/mutation_result.rb +0 -2
  44. data/lib/mutest/version.rb +1 -1
  45. data/meta/and.rb +0 -2
  46. data/meta/array.rb +0 -3
  47. data/meta/begin.rb +0 -3
  48. data/meta/block.rb +0 -1
  49. data/meta/block_pass.rb +30 -1
  50. data/meta/break.rb +0 -1
  51. data/meta/case.rb +0 -6
  52. data/meta/casgn.rb +0 -3
  53. data/meta/cvasgn.rb +0 -1
  54. data/meta/def.rb +0 -7
  55. data/meta/dstr.rb +2 -0
  56. data/meta/dsym.rb +2 -0
  57. data/meta/ensure.rb +0 -1
  58. data/meta/false.rb +0 -1
  59. data/meta/gvasgn.rb +0 -1
  60. data/meta/hash.rb +0 -4
  61. data/meta/if.rb +0 -5
  62. data/meta/ivasgn.rb +0 -1
  63. data/meta/kwbegin.rb +0 -1
  64. data/meta/lvasgn.rb +0 -1
  65. data/meta/match_current_line.rb +0 -1
  66. data/meta/next.rb +0 -1
  67. data/meta/or.rb +0 -2
  68. data/meta/regexp.rb +0 -1
  69. data/meta/rescue.rb +0 -6
  70. data/meta/send.rb +60 -16
  71. data/meta/splat.rb +25 -0
  72. data/meta/str.rb +1 -0
  73. data/meta/true.rb +0 -1
  74. data/meta/until.rb +0 -1
  75. data/meta/while.rb +0 -2
  76. data/meta/yield.rb +0 -1
  77. data/mutest-rspec.gemspec +1 -1
  78. data/mutest.gemspec +0 -4
  79. data/spec/integration/mutest/rspec_spec.rb +1 -1
  80. data/spec/integrations.yml +1 -1
  81. data/spec/shared/command_method_behavior.rb +5 -0
  82. data/spec/shared/idempotent_method_behavior.rb +10 -0
  83. data/spec/spec_helper.rb +21 -1
  84. data/spec/support/xspec.rb +1 -1
  85. data/spec/unit/mutest/actor/sender_spec.rb +1 -1
  86. data/spec/unit/mutest/ast/meta/send_spec.rb +23 -11
  87. data/spec/unit/mutest/cli_spec.rb +13 -13
  88. data/spec/unit/mutest/context_spec.rb +2 -2
  89. data/spec/unit/mutest/diff_spec.rb +9 -9
  90. data/spec/unit/mutest/integration/null_spec.rb +1 -1
  91. data/spec/unit/mutest/integration_spec.rb +1 -1
  92. data/spec/unit/mutest/matcher/method/instance_spec.rb +5 -5
  93. data/spec/unit/mutest/matcher/method/singleton_spec.rb +5 -5
  94. data/spec/unit/mutest/meta/example_spec.rb +3 -3
  95. data/spec/unit/mutest/mutation_spec.rb +5 -5
  96. data/spec/unit/mutest/mutator/node_spec.rb +6 -9
  97. data/spec/unit/mutest/parallel/driver_spec.rb +1 -1
  98. data/spec/unit/mutest/reporter/null_spec.rb +1 -1
  99. data/spec/unit/mutest/reporter/sequence_spec.rb +1 -1
  100. data/spec/unit/mutest/result_spec.rb +1 -1
  101. data/spec/unit/mutest/runner/sink_spec.rb +1 -1
  102. data/spec/unit/mutest/subject/method/instance/memoized_spec.rb +1 -1
  103. data/spec/unit/mutest/subject/method/instance_spec.rb +3 -3
  104. data/spec/unit/mutest/subject/method/singleton_spec.rb +3 -3
  105. data/spec/unit/mutest/subject_spec.rb +2 -2
  106. data/test_app/Gemfile.rspec3.6 +7 -0
  107. metadata +9 -57
  108. data/build/Dockerfile +0 -71
  109. data/build/docker-bootstrap.sh +0 -85
  110. data/build/docker-exec +0 -29
  111. data/build/make-docker +0 -3
  112. data/build/ruby_matrix +0 -1
  113. data/build/run +0 -5
  114. data/build/strict-mode.sh +0 -16
  115. data/config/devtools.yml +0 -2
  116. data/config/flay.yml +0 -3
  117. data/config/flog.yml +0 -2
  118. data/config/reek.yml +0 -137
  119. data/lib/mutest/mutator/node/noop.rb +0 -19
@@ -0,0 +1,25 @@
1
+ Mutest::Meta::Example.add :splat do
2
+ source 'foo(*bar)'
3
+
4
+ singleton_mutations
5
+ mutation 'foo'
6
+ mutation 'foo(nil)'
7
+ mutation 'foo(bar)'
8
+ mutation 'foo(self)'
9
+ mutation 'foo(*self)'
10
+ end
11
+
12
+ Mutest::Meta::Example.add :splat do
13
+ source 'a = *bar'
14
+
15
+ singleton_mutations
16
+ mutation 'a__mutest__ = *bar'
17
+ mutation 'a = nil'
18
+ mutation 'a = self'
19
+ mutation 'a = []'
20
+ mutation 'a = [nil]'
21
+ mutation 'a = [self]'
22
+ mutation 'a = [*self]'
23
+ mutation 'a = [bar]'
24
+ mutation s(:lvasgn, :a, s(:splat, s(:send, nil, :bar)))
25
+ end
@@ -2,4 +2,5 @@ Mutest::Meta::Example.add :str do
2
2
  source '"foo"'
3
3
 
4
4
  singleton_mutations
5
+ mutation '"foo__mutest__"'
5
6
  end
@@ -1,6 +1,5 @@
1
1
  Mutest::Meta::Example.add :true do
2
2
  source 'true'
3
3
 
4
- mutation 'nil'
5
4
  mutation 'false'
6
5
  end
@@ -6,7 +6,6 @@ Mutest::Meta::Example.add :until do
6
6
  mutation 'until true; foo; end'
7
7
  mutation 'until true; end'
8
8
  mutation 'until false; foo; bar; end'
9
- mutation 'until nil; foo; bar; end'
10
9
  mutation 'until true; foo; nil; end'
11
10
  mutation 'until true; foo; self; end'
12
11
  mutation 'until true; nil; bar; end'
@@ -8,7 +8,6 @@ Mutest::Meta::Example.add :while do
8
8
  mutation 'while true; foo; end'
9
9
  mutation 'while true; end'
10
10
  mutation 'while false; foo; bar; end'
11
- mutation 'while nil; foo; bar; end'
12
11
  mutation 'while true; foo; nil; end'
13
12
  mutation 'while true; nil; bar; end'
14
13
  mutation 'while true; raise; end'
@@ -20,5 +19,4 @@ Mutest::Meta::Example.add :while do
20
19
  singleton_mutations
21
20
  mutation 'while true; raise; end'
22
21
  mutation 'while false; end'
23
- mutation 'while nil; end'
24
22
  end
@@ -3,6 +3,5 @@ Mutest::Meta::Example.add :yield do
3
3
 
4
4
  singleton_mutations
5
5
  mutation 'yield false'
6
- mutation 'yield nil'
7
6
  mutation 'yield'
8
7
  end
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.extra_rdoc_files = %w[LICENSE]
17
17
 
18
18
  gem.add_runtime_dependency('mutest', "~> #{gem.version}")
19
- gem.add_runtime_dependency('rspec-core', '>= 3.4.0', '< 3.6.0')
19
+ gem.add_runtime_dependency('rspec-core', '>= 3.4.0', '< 3.7.0')
20
20
 
21
21
  gem.add_development_dependency('bundler', '~> 1.3', '>= 1.3.5')
22
22
  end
@@ -39,8 +39,4 @@ Gem::Specification.new do |gem|
39
39
  gem.add_runtime_dependency('anima', '~> 0.3.0')
40
40
  gem.add_runtime_dependency('concord', '~> 0.1.5')
41
41
  gem.add_runtime_dependency('regexp_parser', '~> 0.4.1')
42
-
43
- gem.add_development_dependency('rubocop-rspec', '~> 1.10.0')
44
- gem.add_development_dependency('devtools', '~> 0.1.16')
45
- gem.add_development_dependency('bundler', '~> 1.10')
46
42
  end
@@ -1,7 +1,7 @@
1
1
  RSpec.describe 'rspec integration', mutest: false do
2
2
  let(:base_cmd) { 'bundle exec mutest -I lib --require test_app --use rspec' }
3
3
 
4
- %w[3.4 3.5].each do |version|
4
+ %w[3.4 3.5 3.6].each do |version|
5
5
  context "RSpec #{version}" do
6
6
  let(:gemfile) { "Gemfile.rspec#{version}" }
7
7
 
@@ -2,7 +2,7 @@
2
2
  - name: rubyspec
3
3
  namespace: Rubyspec
4
4
  repo_uri: 'https://github.com/ruby/rubyspec.git'
5
- repo_ref: 'origin/master'
5
+ repo_ref: 'e6665ae^' # TODO: ignore bad_syntax.rb
6
6
  mutation_coverage: false
7
7
  mutation_generation: true
8
8
  expected_errors:
@@ -0,0 +1,5 @@
1
+ RSpec.shared_examples_for 'a command method' do
2
+ it 'returns self' do
3
+ expect(subject).to equal(object)
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ RSpec.shared_examples_for 'an idempotent method' do
2
+ it 'is idempotent' do
3
+ first = subject
4
+ fail 'RSpec not configured for threadsafety' unless RSpec.configuration.threadsafe?
5
+ mutex = __memoized.instance_variable_get(:@mutex)
6
+ memoized = __memoized.instance_variable_get(:@memoized)
7
+ mutex.synchronize { memoized.delete(:subject) }
8
+ expect(subject).to equal(first)
9
+ end
10
+ end
@@ -22,10 +22,19 @@ require 'tempfile'
22
22
  require 'concord'
23
23
  require 'anima'
24
24
  require 'adamantium'
25
- require 'devtools/spec_helper'
26
25
  require 'unparser/cli'
27
26
  require 'mutest'
28
27
  require 'mutest/meta'
28
+ require 'rspec/its'
29
+ require 'timeout'
30
+
31
+ module MutestSpec
32
+ SPECS_PATH = Pathname.new(__dir__).expand_path.freeze
33
+ PROJECT_ROOT = SPECS_PATH.parent.freeze
34
+ UNIT_TEST_TIMOUT = 10.0
35
+ end # MutestSpec
36
+
37
+ Dir.glob(MutestSpec::SPECS_PATH.join('{shared,support}/**/*.rb')).each(&method(:require))
29
38
 
30
39
  $LOAD_PATH << File.join(TestApp.root, 'lib')
31
40
 
@@ -63,6 +72,17 @@ RSpec.configure do |config|
63
72
  config.include(ParserHelper)
64
73
  config.include(Mutest::AST::Sexp)
65
74
 
75
+ # Define metadata for all tests which live under spec/unit
76
+ config.define_derived_metadata(file_path: %r{\bspec/unit/}) do |metadata|
77
+ # Set the type of these tests as 'unit'
78
+ metadata[:type] = :unit
79
+ end
80
+
81
+ # Set a modest timeout to kill slow tests when running `mutest`.
82
+ config.around(:each, type: :unit) do |example|
83
+ Timeout.timeout(MutestSpec::UNIT_TEST_TIMOUT, &example)
84
+ end
85
+
66
86
  config.after(:suite) do
67
87
  $stderr = STDERR
68
88
  MutestSpec::Warning.assert_no_warnings
@@ -15,7 +15,7 @@ module XSpec
15
15
 
16
16
  # Parse events into reaction
17
17
  #
18
- # @param [Array{Symbol,Object}, Hash{Symbol,Object}]
18
+ # @param [Array<Symbol,Object>, Hash{Symbol,Object}]
19
19
  #
20
20
  # @return [MessageReaction]
21
21
  def self.parse(events)
@@ -17,6 +17,6 @@ RSpec.describe Mutest::Actor::Sender do
17
17
  expect(condition_variable).to receive(:signal).ordered
18
18
  end
19
19
 
20
- it_should_behave_like 'a command method'
20
+ it_behaves_like 'a command method'
21
21
  end
22
22
  end
@@ -5,21 +5,33 @@ RSpec.describe Mutest::AST::Meta::Send do
5
5
  Parser::CurrentRuby.parse(source)
6
6
  end
7
7
 
8
- let(:method_call) { parse('foo.bar(baz)') }
9
- let(:attribute_read) { parse('foo.bar') }
10
- let(:index_assignment) { parse('foo[0] = bar') }
11
- let(:attribute_assignment) { parse('foo.bar = baz') }
12
- let(:binary_method_operator) { parse('foo == bar') }
8
+ let(:method_call) { parse('foo.bar(baz)') }
9
+ let(:attribute_read) { parse('foo.bar') }
10
+ let(:index_assignment) { parse('foo[0] = bar') }
11
+ let(:attribute_assignment) { parse('foo.bar = baz') }
12
+ let(:binary_method_operator) { parse('foo == bar') }
13
+ let(:method_method_call) { parse('foo.method(:bar)') }
14
+ let(:public_method_call) { parse("foo.public_method('bar')") }
13
15
 
14
16
  class Expectation
15
- include Adamantium, Anima.new(:name, :assignment, :attribute_assignment, :index_assignment, :binary_method_operator)
17
+ include Adamantium,
18
+ Anima.new(
19
+ :name,
20
+ :assignment,
21
+ :attribute_assignment,
22
+ :index_assignment,
23
+ :binary_method_operator,
24
+ :method_object_selector
25
+ )
16
26
 
17
27
  ALL = [
18
- [:method_call, false, false, false, false],
19
- [:attribute_read, false, false, false, false],
20
- [:index_assignment, true, false, true, false],
21
- [:attribute_assignment, true, true, false, false],
22
- [:binary_method_operator, false, false, false, true]
28
+ [:method_call, false, false, false, false, false],
29
+ [:attribute_read, false, false, false, false, false],
30
+ [:index_assignment, true, false, true, false, false],
31
+ [:attribute_assignment, true, true, false, false, false],
32
+ [:binary_method_operator, false, false, false, true, false],
33
+ [:method_method_call, false, false, false, false, true],
34
+ [:public_method_call, false, false, false, false, true]
23
35
  ].map do |values|
24
36
  new(Hash[anima.attribute_names.zip(values)])
25
37
  end.freeze
@@ -85,7 +85,7 @@ RSpec.describe Mutest::CLI do
85
85
 
86
86
  let(:expected_message) { 'invalid option: --invalid' }
87
87
 
88
- it_should_behave_like 'an invalid cli run'
88
+ it_behaves_like 'an invalid cli run'
89
89
  end
90
90
 
91
91
  context 'with unknown option' do
@@ -93,7 +93,7 @@ RSpec.describe Mutest::CLI do
93
93
 
94
94
  let(:expected_message) { 'invalid option: --invalid' }
95
95
 
96
- it_should_behave_like 'an invalid cli run'
96
+ it_behaves_like 'an invalid cli run'
97
97
  end
98
98
 
99
99
  context 'with include help flag' do
@@ -104,7 +104,7 @@ RSpec.describe Mutest::CLI do
104
104
  expect(Kernel).to receive(:exit)
105
105
  end
106
106
 
107
- it_should_behave_like 'a cli parser'
107
+ it_behaves_like 'a cli parser'
108
108
 
109
109
  let(:expected_message) do
110
110
  strip_indent(<<-MESSAGE)
@@ -129,7 +129,7 @@ Options:
129
129
  context 'with include flag' do
130
130
  let(:flags) { %w[--include foo] }
131
131
 
132
- it_should_behave_like 'a cli parser'
132
+ it_behaves_like 'a cli parser'
133
133
 
134
134
  it 'configures includes' do
135
135
  expect(subject.config.includes).to eql(%w[foo])
@@ -147,7 +147,7 @@ Options:
147
147
  .and_call_original
148
148
  end
149
149
 
150
- it_should_behave_like 'a cli parser'
150
+ it_behaves_like 'a cli parser'
151
151
  end
152
152
 
153
153
  context 'when specifying the default null integration explicitely' do
@@ -160,7 +160,7 @@ Options:
160
160
  .and_call_original
161
161
  end
162
162
 
163
- it_should_behave_like 'a cli parser'
163
+ it_behaves_like 'a cli parser'
164
164
  end
165
165
 
166
166
  context 'when integration does NOT exist' do
@@ -183,13 +183,13 @@ Options:
183
183
  expect($stdout).to receive(:puts).with("mutest-#{Mutest::VERSION}")
184
184
  end
185
185
 
186
- it_should_behave_like 'a cli parser'
186
+ it_behaves_like 'a cli parser'
187
187
  end
188
188
 
189
189
  context 'with jobs flag' do
190
190
  let(:flags) { %w[--jobs 0] }
191
191
 
192
- it_should_behave_like 'a cli parser'
192
+ it_behaves_like 'a cli parser'
193
193
 
194
194
  it 'configures expected coverage' do
195
195
  expect(subject.config.jobs).to be(0)
@@ -199,7 +199,7 @@ Options:
199
199
  context 'with require flags' do
200
200
  let(:flags) { %w[--require foo --require bar] }
201
201
 
202
- it_should_behave_like 'a cli parser'
202
+ it_behaves_like 'a cli parser'
203
203
 
204
204
  it 'configures requires' do
205
205
  expect(subject.config.requires).to eql(%w[foo bar])
@@ -223,7 +223,7 @@ Options:
223
223
  )
224
224
  end
225
225
 
226
- it_should_behave_like 'a cli parser'
226
+ it_behaves_like 'a cli parser'
227
227
  end
228
228
 
229
229
  context 'with subject-ignore flag' do
@@ -233,13 +233,13 @@ Options:
233
233
  default_matcher_config.with(ignore_expressions: [parse_expression('Foo::Bar')])
234
234
  end
235
235
 
236
- it_should_behave_like 'a cli parser'
236
+ it_behaves_like 'a cli parser'
237
237
  end
238
238
 
239
239
  context 'with fail-fast flag' do
240
240
  let(:flags) { %w[--fail-fast] }
241
241
 
242
- it_should_behave_like 'a cli parser'
242
+ it_behaves_like 'a cli parser'
243
243
 
244
244
  it 'sets the fail fast option' do
245
245
  expect(subject.config.fail_fast).to be(true)
@@ -249,7 +249,7 @@ Options:
249
249
  context 'with zombie flag' do
250
250
  let(:flags) { %w[--zombie] }
251
251
 
252
- it_should_behave_like 'a cli parser'
252
+ it_behaves_like 'a cli parser'
253
253
 
254
254
  it 'sets the zombie option' do
255
255
  expect(subject.config.zombie).to be(true)
@@ -77,7 +77,7 @@ RSpec.describe Mutest::Context do
77
77
  is_expected.to eql('TestApp')
78
78
  end
79
79
 
80
- it_should_behave_like 'an idempotent method'
80
+ it_behaves_like 'an idempotent method'
81
81
  end
82
82
 
83
83
  context 'with scoped constant name' do
@@ -85,7 +85,7 @@ RSpec.describe Mutest::Context do
85
85
  is_expected.to eql('Literal')
86
86
  end
87
87
 
88
- it_should_behave_like 'an idempotent method'
88
+ it_behaves_like 'an idempotent method'
89
89
  end
90
90
  end
91
91
 
@@ -30,7 +30,7 @@ RSpec.describe Mutest::Diff do
30
30
 
31
31
  it { is_expected.to eql(expectation) }
32
32
 
33
- it_should_behave_like 'an idempotent method'
33
+ it_behaves_like 'an idempotent method'
34
34
  end
35
35
 
36
36
  context 'when there is no diff' do
@@ -39,7 +39,7 @@ RSpec.describe Mutest::Diff do
39
39
 
40
40
  it { is_expected.to be(nil) }
41
41
 
42
- it_should_behave_like 'an idempotent method'
42
+ it_behaves_like 'an idempotent method'
43
43
  end
44
44
  end
45
45
 
@@ -65,7 +65,7 @@ RSpec.describe Mutest::Diff do
65
65
 
66
66
  it { is_expected.to eql(expectation) }
67
67
 
68
- it_should_behave_like 'an idempotent method'
68
+ it_behaves_like 'an idempotent method'
69
69
  end
70
70
 
71
71
  context 'when there is a diff at begin of hunk' do
@@ -83,7 +83,7 @@ RSpec.describe Mutest::Diff do
83
83
 
84
84
  it { is_expected.to eql(expectation) }
85
85
 
86
- it_should_behave_like 'an idempotent method'
86
+ it_behaves_like 'an idempotent method'
87
87
  end
88
88
 
89
89
  context 'when there is a diff NOT at begin of hunk' do
@@ -101,7 +101,7 @@ RSpec.describe Mutest::Diff do
101
101
 
102
102
  it { is_expected.to eql(expectation) }
103
103
 
104
- it_should_behave_like 'an idempotent method'
104
+ it_behaves_like 'an idempotent method'
105
105
  end
106
106
 
107
107
  context 'when the diff has a long context at begin' do
@@ -124,7 +124,7 @@ RSpec.describe Mutest::Diff do
124
124
 
125
125
  it { is_expected.to eql(expectation) }
126
126
 
127
- it_should_behave_like 'an idempotent method'
127
+ it_behaves_like 'an idempotent method'
128
128
  end
129
129
 
130
130
  context 'when the diff has a long context at end, deleting' do
@@ -147,7 +147,7 @@ RSpec.describe Mutest::Diff do
147
147
 
148
148
  it { is_expected.to eql(expectation) }
149
149
 
150
- it_should_behave_like 'an idempotent method'
150
+ it_behaves_like 'an idempotent method'
151
151
  end
152
152
 
153
153
  context 'when the diff has a long context at end, inserting' do
@@ -170,7 +170,7 @@ RSpec.describe Mutest::Diff do
170
170
 
171
171
  it { is_expected.to eql(expectation) }
172
172
 
173
- it_should_behave_like 'an idempotent method'
173
+ it_behaves_like 'an idempotent method'
174
174
  end
175
175
 
176
176
  context 'when there is no diff' do
@@ -179,7 +179,7 @@ RSpec.describe Mutest::Diff do
179
179
 
180
180
  it { is_expected.to be(nil) }
181
181
 
182
- it_should_behave_like 'an idempotent method'
182
+ it_behaves_like 'an idempotent method'
183
183
  end
184
184
  end
185
185
  end
@@ -6,7 +6,7 @@ RSpec.describe Mutest::Integration::Null do
6
6
 
7
7
  it { is_expected.to eql([]) }
8
8
 
9
- it_should_behave_like 'an idempotent method'
9
+ it_behaves_like 'an idempotent method'
10
10
  end
11
11
 
12
12
  describe '#call' do