mutest 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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