mutest 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 882e92ac10cfa19bf05b12f38997801b2fced697
4
- data.tar.gz: e73ae60634c05d15a3ecc32e3162f2d6d4d1f8ed
3
+ metadata.gz: 28ad889f38011616ab297533e38652fd025f3b70
4
+ data.tar.gz: 28e755a956d3f328e5374bb35ab65664ff479fd2
5
5
  SHA512:
6
- metadata.gz: 489fefd9e304924294d8f2176e875939960d78a39ac01f3f795294719cfe4284919358cebc9c20a6095f6aaff500fe417524a755d117185acc5b622aa018a66b
7
- data.tar.gz: 6729e041f46105175f37d425f2fad5c774d7f05151557258260e5f9030cb86c374c9f4609e2bd82694dfd408ab9d10fc20199f34d1047787292af3d71d9a3ea9
6
+ metadata.gz: 28a36e5aec3ee2931dfcdef9634e167c46aa157e97662c91ab6f7e84ec7c92d984dc89cacbd098cd990c6fdbbbd0d54572b161ce671752f9a793f8a21bfee721
7
+ data.tar.gz: 49fb9c67f4faea1835d4cc97d7c20193c1dc84b29903781e45894b2820b528cfba91742be9d60fd6a6528265c1a9cbdaa4ff07d9e2fb28a702d90fd2720a2580
@@ -0,0 +1,62 @@
1
+ # Change log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](http://keepachangelog.com/).
6
+
7
+ ## [Master (Unreleased)]
8
+
9
+ ## [0.0.5] - 2017-03-04
10
+
11
+ ### Added
12
+
13
+ - Now `mutest` can be run without being in the bundle. [[#46](https://github.com/backus/mutest/pull/46/files) ([@mvz][])]
14
+
15
+ ## [0.0.4] - 2017-02-16
16
+
17
+ ### Fixed
18
+
19
+ - Restarg body mutations that were being emitted for unused restargs [[#44](https://github.com/backus/mutest/pull/44/files) ([@dgollahon][])]
20
+
21
+ ### Removed
22
+
23
+ - Less strict relational operator mutations (`<` -> `<=`; `>` -> `>=`) [[#47](https://github.com/backus/mutest/pull/47/files) ([@backus][])]
24
+ - Unused `ffi` dependency [[#40](https://github.com/backus/mutest/pull/40/files) ([@mvz][])]
25
+
26
+ ## [0.0.3] - 2017-01-31
27
+
28
+ ### Fixed
29
+
30
+ - Errors on AST nodes without locations [[#32](https://github.com/backus/mutest/pull/32/files) ([@backus][])]
31
+
32
+ ## [0.0.2] - 2017-01-30
33
+
34
+ First proper RubyGems release
35
+
36
+ ### Added
37
+
38
+ - Hash hint mutation (`def foo(opts); end` -> `def foo(**opts); end`) [[#24](https://github.com/backus/mutest/pull/24/files) ([@dgollahon][])]
39
+ - Unused restarg mutations (`def(*args); end` -> `def(*_args); end`; `def(**opts); end` -> `def(**_opts); end` [[#18](https://github.com/backus/mutest/pull/18/files) ([@dgollahon][])]
40
+ - Select/Reject mutations (`a.select(&b)` -> `a.reject(&b)`, `a.reject(&b)` -> `a.select(&b)`) [[#15](https://github.com/backus/mutest/pull/15/files) ([@dgollahon][])]
41
+ - Array to array literal mutation (`Array(a)` -> `[a]`) [[#14](https://github.com/backus/mutest/pull/14/files) ([@dgollahon][])]
42
+ - One-or-more to two-or-more quantifier mutations (`/a+/` -> `/a{2,}/`; `/a+?/` -> `/a{2,}?/`; `/a++/` -> `/a{2,}+/`) [[#13](https://github.com/backus/mutest/pull/13/files) ([@dgollahon][])]
43
+ - Reluctant and possessive zero-or-more to one-or-more quantifier mutations (`/a*?/` -> `/a+?/`; `/a+?/` -> `/a++/`) [[#11](https://github.com/backus/mutest/pull/11/files) ([@dgollahon][])]
44
+ - Grep/Grepv mutations (`a.grep(b)` -> `a.grep_v(b)`; `a.grep_v(b)` -> `a.grep(b)`) [[#10](https://github.com/backus/mutest/pull/10/files) ([@dgollahon][])]
45
+ - Threequals to kind_of mutation (`a === b` -> `a.kind_of?(b)`) [[#9](https://github.com/backus/mutest/pull/9) ([@dgollahon][])]
46
+ - Method body to super mutation (`def foo; body; end` -> `def foo; super; end`) [[#8](https://github.com/backus/mutest/pull/8/files) ([@dgollahon][])]
47
+ - Mutest disables (`# mutest:disable`) [[#6](https://github.com/backus/mutest/pull/6/files) ([@backus][])]
48
+ - Compound assignment mutations (`a += b` -> `a + b`, `a = b`) [[#2](https://github.com/backus/mutest/pull/2/files) ([@dgollahon][])]
49
+
50
+ <!-- Version diffs -->
51
+
52
+ [Master (Unreleased)]: https://github.com/backus/mutest/compare/v0.0.5...HEAD
53
+ [0.0.5]: https://github.com/backus/mutest/compare/v0.0.4...v0.0.5
54
+ [0.0.4]: https://github.com/backus/mutest/compare/v0.0.3...v0.0.4
55
+ [0.0.3]: https://github.com/backus/mutest/compare/v0.0.2...v0.0.3
56
+ [0.0.2]: https://github.com/backus/mutest/compare/7a50870929325127db8578ade9c8656f356131ba...v0.0.2
57
+
58
+ <!-- Contributors -->
59
+
60
+ [@backus]: https://github.com/backus
61
+ [@dgollahon]: https://github.com/dgollahon
62
+ [@mvz]: https://github.com/mvz
data/README.md CHANGED
@@ -3,6 +3,10 @@ mutest
3
3
 
4
4
  This is a fork of a popular open source mutation testing tool for Ruby. Not ready for prime time!
5
5
 
6
+ ## Changes
7
+
8
+ For updates to the project, check out the [CHANGELOG](CHANGELOG.md)!
9
+
6
10
  ## Credit
7
11
 
8
12
  * Markus Schirp did an amazing job on [mutant](mbj/mutant) which this fork is based on.
@@ -179,6 +179,7 @@ require 'mutest/expression/methods'
179
179
  require 'mutest/expression/namespace'
180
180
  require 'mutest/test'
181
181
  require 'mutest/integration'
182
+ require 'mutest/integration/null'
182
183
  require 'mutest/selector'
183
184
  require 'mutest/selector/expression'
184
185
  require 'mutest/config'
@@ -206,6 +207,7 @@ require 'mutest/reporter/cli/printer/test_result'
206
207
  require 'mutest/reporter/cli/tput'
207
208
  require 'mutest/reporter/cli/format'
208
209
  require 'mutest/repository'
210
+ require 'mutest/requirer'
209
211
  require 'mutest/zombifier'
210
212
 
211
213
  module Mutest
@@ -230,6 +232,7 @@ module Mutest
230
232
  process: Process
231
233
  ),
232
234
  jobs: ::Parallel.processor_count,
235
+ requirer: Requirer.new,
233
236
  kernel: Kernel,
234
237
  load_path: $LOAD_PATH,
235
238
  matcher: Matcher::Config::DEFAULT,
@@ -99,7 +99,7 @@ module Mutest
99
99
  #
100
100
  # @return [undefined]
101
101
  def setup_integration(name)
102
- with(integration: Integration.setup(config.kernel, name))
102
+ with(integration: Integration.setup(config.requirer, name))
103
103
  rescue LoadError
104
104
  raise Error, "Could not load integration #{name.inspect} (you may want to try installing the gem mutest-#{name})"
105
105
  end
@@ -16,6 +16,7 @@ module Mutest
16
16
  :matcher,
17
17
  :open3,
18
18
  :pathname,
19
+ :requirer,
19
20
  :requires,
20
21
  :reporter,
21
22
  :zombie
@@ -47,29 +47,5 @@ module Mutest
47
47
  def expression_parser
48
48
  config.expression_parser
49
49
  end
50
-
51
- # Null integration that never kills a mutation
52
- class Null < self
53
- # Available tests for integration
54
- #
55
- # @return [Enumerable<Test>]
56
- def all_tests
57
- EMPTY_ARRAY
58
- end
59
-
60
- # Run a collection of tests
61
- #
62
- # @param [Enumerable<Mutest::Test>] tests
63
- #
64
- # @return [Result::Test]
65
- def call(tests)
66
- Result::Test.new(
67
- output: '',
68
- passed: true,
69
- runtime: 0.0,
70
- tests: tests
71
- )
72
- end
73
- end # Null
74
50
  end # Integration
75
51
  end # Mutest
@@ -0,0 +1,6 @@
1
+ module Mutest
2
+ # Class that exposes #require as a public method
3
+ class Requirer
4
+ public :require
5
+ end # Requirer
6
+ end # Mutest
@@ -1,4 +1,4 @@
1
1
  module Mutest
2
2
  # Current mutest version
3
- VERSION = '0.0.4'.freeze
3
+ VERSION = '0.0.5'.freeze
4
4
  end # Mutest
@@ -137,18 +137,30 @@ Options:
137
137
  end
138
138
 
139
139
  context 'with use flag' do
140
- context 'when integration exists' do
140
+ context 'when using the existing integration with rspec' do
141
141
  let(:flags) { %w[--use rspec] }
142
+ let(:expected_integration) { Mutest::Integration::Rspec }
142
143
 
143
144
  before do
144
- expect(Kernel).to receive(:require)
145
+ expect(Mutest::Config::DEFAULT.requirer).to receive(:require)
145
146
  .with('mutest/integration/rspec')
146
147
  .and_call_original
147
148
  end
148
149
 
149
150
  it_should_behave_like 'a cli parser'
151
+ end
150
152
 
151
- let(:expected_integration) { Mutest::Integration::Rspec }
153
+ context 'when specifying the default null integration explicitely' do
154
+ let(:flags) { %w[--use null] }
155
+ let(:expected_integration) { Mutest::Integration::Null }
156
+
157
+ before do
158
+ expect(Mutest::Config::DEFAULT.requirer).to receive(:require)
159
+ .with('mutest/integration/null')
160
+ .and_call_original
161
+ end
162
+
163
+ it_should_behave_like 'a cli parser'
152
164
  end
153
165
 
154
166
  context 'when integration does NOT exist' do
@@ -11,13 +11,13 @@ RSpec.describe Mutest::Integration do
11
11
  end
12
12
 
13
13
  describe '.setup' do
14
- subject { described_class.setup(kernel, name) }
14
+ subject { described_class.setup(requirer, name) }
15
15
 
16
- let(:name) { 'null' }
17
- let(:kernel) { class_double(Kernel) }
16
+ let(:name) { 'null' }
17
+ let(:requirer) { Mutest::Requirer.new }
18
18
 
19
19
  before do
20
- expect(kernel).to receive(:require)
20
+ expect(requirer).to receive(:require)
21
21
  .with('mutest/integration/null')
22
22
  end
23
23
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mutest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Gollahon
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-02-16 00:00:00.000000000 Z
12
+ date: 2017-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: parser
@@ -284,6 +284,7 @@ files:
284
284
  - ".gitattributes"
285
285
  - ".gitignore"
286
286
  - ".rspec"
287
+ - CHANGELOG.md
287
288
  - Gemfile
288
289
  - Gemfile.lock
289
290
  - Gemfile.shared
@@ -462,6 +463,7 @@ files:
462
463
  - lib/mutest/reporter/sequence.rb
463
464
  - lib/mutest/repository.rb
464
465
  - lib/mutest/require_highjack.rb
466
+ - lib/mutest/requirer.rb
465
467
  - lib/mutest/result.rb
466
468
  - lib/mutest/runner.rb
467
469
  - lib/mutest/runner/sink.rb
@@ -697,7 +699,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
697
699
  version: '0'
698
700
  requirements: []
699
701
  rubyforge_project:
700
- rubygems_version: 2.5.1
702
+ rubygems_version: 2.6.8
701
703
  signing_key:
702
704
  specification_version: 4
703
705
  summary: Mutation testing for ruby