mutant 0.9.2 → 0.9.3

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
  SHA256:
3
- metadata.gz: 0b6a747b9980b4450831809ea2a799652f93dbd5be93ffe2a9ad25df314dddff
4
- data.tar.gz: 2b72a0f6af97d24ab2191665e9be7d5975394348cc2b077d2f5efcb27fb38a89
3
+ metadata.gz: 88d8955c5d10cb6d884c519e2e9472affa627ab71377f73bd0746f8e27aea1d5
4
+ data.tar.gz: e4d07470181a24861d61e5f90a107fdcdc6da4f959392bf25c8bf6c8ce1e3628
5
5
  SHA512:
6
- metadata.gz: f104307508a7c296b1b69f245394d0eef7f1991669a35b603aa8e4c21f5d9c205f509de519ae314e450c9cd57a879807d9b1778d84c822902fdafe9c68f8731a
7
- data.tar.gz: a57dd99f21bfc48fa3a40f2fae04c8005f32c5615bc4509d30fafbc6f047c29a27b3eafa5f1de6329b9cb1b822a5fa72ee8ff8c8957b4bb45727204daa4ff56f
6
+ metadata.gz: 6906c7b02d2979d2f666735266a1c7220d75b6af35457ff54b021b3cf5306c1c4b94688eacfb685c46ee554353f91d6a78f6ac999e7535981f162e4b9d312a65
7
+ data.tar.gz: '059b7da0f47093ec1a7416fd1c3492f3eb01ccd3741796ff4f97ddbf597d2fd37c102c2bacfd5268204115efb6fc428088225d18785e22febfb49ba0d625710c'
@@ -1,3 +1,9 @@
1
+ # v0.9.3 2020-01-03
2
+
3
+ * Change to soft dependency on mutant-license.
4
+ Rationale its fine to bundle mutant if not used.
5
+ This can easily happen on transitive dependencies.
6
+
1
7
  # v0.9.2 2020-01-02
2
8
 
3
9
  * Upgrade to parser ~> 2.6.5
@@ -37,7 +37,7 @@ GIT
37
37
  PATH
38
38
  remote: .
39
39
  specs:
40
- mutant (0.9.1)
40
+ mutant (0.9.3)
41
41
  abstract_type (~> 0.0.7)
42
42
  adamantium (~> 0.2.0)
43
43
  anima (~> 0.3.1)
@@ -47,7 +47,6 @@ PATH
47
47
  equalizer (~> 0.0.9)
48
48
  ice_nine (~> 0.11.1)
49
49
  memoizable (~> 0.4.2)
50
- mutant-license (~> 0.1.0)
51
50
  parser (~> 2.6.5)
52
51
  procto (~> 0.0.2)
53
52
  unparser (~> 0.4.5)
@@ -22,8 +22,6 @@ require 'stringio'
22
22
  require 'unparser'
23
23
  require 'yaml'
24
24
 
25
- gem 'mutant-license'
26
-
27
25
  # This setting is done to make errors within the parallel
28
26
  # reporter / execution visible in the main thread.
29
27
  Thread.abort_on_exception = true
@@ -198,6 +196,7 @@ module Mutant
198
196
  WORLD = World.new(
199
197
  condition_variable: ConditionVariable,
200
198
  gem: Gem,
199
+ gem_method: method(:gem),
201
200
  io: IO,
202
201
  json: JSON,
203
202
  kernel: Kernel,
@@ -6,6 +6,7 @@ module Mutant
6
6
  include Adamantium::Flat, Anima.new(
7
7
  :condition_variable,
8
8
  :gem,
9
+ :gem_method,
9
10
  :io,
10
11
  :json,
11
12
  :kernel,
@@ -2,31 +2,58 @@
2
2
 
3
3
  module Mutant
4
4
  module License
5
+ NAME = 'mutant-license'
6
+ VERSION = '~> 0.1.0'
7
+ SLEEP = 20
8
+
9
+ UNLICENSED =
10
+ IceNine.deep_freeze(
11
+ [
12
+ "Soft fail, continuing in #{SLEEP} seconds",
13
+ 'Next major version will enforce the license',
14
+ 'See https://github.com/mbj/mutant#licensing'
15
+ ]
16
+ )
17
+
5
18
  def self.apply(world)
6
19
  soft_fail(world, license_result(world))
7
20
  end
8
21
 
9
22
  def self.license_result(world)
10
- Subscription.from_json(world.json.load(license_path(world))).apply(world)
23
+ load_mutant_license(world)
24
+ .fmap { license_path(world) }
25
+ .fmap { |path| Subscription.from_json(world.json.load(path)) }
26
+ .apply { |sub| sub.apply(world) }
11
27
  end
12
28
  private_class_method :license_result
13
29
 
14
- def self.soft_fail(world, license_result)
15
- license_result.lmap do |message|
30
+ # ignore :reek:NestedIterators
31
+ def self.soft_fail(world, result)
32
+ result.lmap do |message|
16
33
  stderr = world.stderr
17
34
  stderr.puts(message)
18
- stderr.puts('Soft fail, continuing in 10 seconds')
19
- world.kernel.sleep(10)
35
+ UNLICENSED.each { |line| stderr.puts(unlicensed(line)) }
36
+ world.kernel.sleep(SLEEP)
20
37
  end
21
38
 
22
39
  Either::Right.new(true)
23
40
  end
24
41
  private_class_method :soft_fail
25
42
 
43
+ def self.load_mutant_license(world)
44
+ Either
45
+ .wrap_error(LoadError) { world.gem_method.call(NAME, VERSION) }
46
+ .lmap(&method(:unlicensed))
47
+ end
48
+
49
+ def self.unlicensed(message)
50
+ "[Mutant-License-Error]: #{message}"
51
+ end
52
+
26
53
  def self.license_path(world)
27
54
  world
28
55
  .pathname
29
- .new(world.gem.loaded_specs.fetch('mutant-license').full_gem_path)
56
+ .new(world.gem.loaded_specs.fetch(NAME).full_gem_path)
30
57
  .join('license.json')
31
58
  end
32
59
  private_class_method :license_path
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Mutant
4
4
  # Current mutant version
5
- VERSION = '0.9.2'
5
+ VERSION = '0.9.3'
6
6
  end # Mutant
@@ -55,7 +55,7 @@ module Mutant
55
55
  # For that reason we do have to use the original method capture to dispatch
56
56
  # in disabled state.
57
57
  #
58
- # :reek:ignore RepeatedConditional
58
+ # ignore :reek:RepeatedConditional
59
59
  class Warnings
60
60
  # Error raised when warning capture is used recursively
61
61
  class RecursiveUseError < RuntimeError; end
@@ -7,8 +7,8 @@ Gem::Specification.new do |gem|
7
7
  gem.version = Mutant::VERSION.dup
8
8
  gem.authors = ['Markus Schirp']
9
9
  gem.email = ['mbj@schirp-dso.com']
10
- gem.description = 'Mutation testing for ruby'
11
- gem.summary = 'Mutation testing tool for ruby under MRI and Rubinius'
10
+ gem.description = 'Mutation Testing for Ruby.'
11
+ gem.summary = ''
12
12
  gem.homepage = 'https://github.com/mbj/mutant'
13
13
  gem.license = 'Nonstandard'
14
14
 
@@ -30,7 +30,6 @@ Gem::Specification.new do |gem|
30
30
  gem.add_runtime_dependency('equalizer', '~> 0.0.9')
31
31
  gem.add_runtime_dependency('ice_nine', '~> 0.11.1')
32
32
  gem.add_runtime_dependency('memoizable', '~> 0.4.2')
33
- gem.add_runtime_dependency('mutant-license', '~> 0.1.0')
34
33
  gem.add_runtime_dependency('parser', '~> 2.6.5')
35
34
  gem.add_runtime_dependency('procto', '~> 0.0.2')
36
35
  gem.add_runtime_dependency('unparser', '~> 0.4.5')
@@ -6,11 +6,13 @@ RSpec.describe Mutant::License do
6
6
  end
7
7
 
8
8
  let(:gem) { class_double(Gem, loaded_specs: loaded_specs) }
9
+ let(:gem_method) { instance_double(Method) }
9
10
  let(:gem_path) { '/path/to/mutant-license' }
10
11
  let(:gem_pathname) { instance_double(Pathname) }
11
12
  let(:json) { class_double(JSON) }
12
13
  let(:kernel) { class_double(Kernel) }
13
14
  let(:license_pathname) { instance_double(Pathname) }
15
+ let(:load_json) { true }
14
16
  let(:loaded_specs) { { 'mutant-license' => spec } }
15
17
  let(:path) { instance_double(Pathname) }
16
18
  let(:pathname) { class_double(Pathname) }
@@ -26,15 +28,17 @@ RSpec.describe Mutant::License do
26
28
  let(:world) do
27
29
  instance_double(
28
30
  Mutant::World,
29
- gem: gem,
30
- json: json,
31
- kernel: kernel,
32
- pathname: pathname,
33
- stderr: stderr
31
+ gem: gem,
32
+ gem_method: gem_method,
33
+ json: json,
34
+ kernel: kernel,
35
+ pathname: pathname,
36
+ stderr: stderr
34
37
  )
35
38
  end
36
39
 
37
40
  before do
41
+ allow(gem_method).to receive_messages(call: undefined)
38
42
  allow(gem_pathname).to receive_messages(join: license_pathname)
39
43
  allow(json).to receive_messages(load: license_json)
40
44
  allow(kernel).to receive_messages(sleep: undefined)
@@ -66,6 +70,18 @@ RSpec.describe Mutant::License do
66
70
  it 'performs IO in expected sequence' do
67
71
  expect(apply).to eql(Mutant::Either::Right.new(true))
68
72
 
73
+ expect(gem_method)
74
+ .to have_received(:call)
75
+ .with('mutant-license', '~> 0.1.0')
76
+ .ordered
77
+
78
+ if load_json
79
+ expect(json)
80
+ .to have_received(:load)
81
+ .with(license_pathname)
82
+ .ordered
83
+ end
84
+
69
85
  expect(stderr)
70
86
  .to have_received(:puts)
71
87
  .with(expected)
@@ -73,12 +89,22 @@ RSpec.describe Mutant::License do
73
89
 
74
90
  expect(stderr)
75
91
  .to have_received(:puts)
76
- .with('Soft fail, continuing in 10 seconds')
92
+ .with('[Mutant-License-Error]: Soft fail, continuing in 20 seconds')
93
+ .ordered
94
+
95
+ expect(stderr)
96
+ .to have_received(:puts)
97
+ .with('[Mutant-License-Error]: Next major version will enforce the license')
98
+ .ordered
99
+
100
+ expect(stderr)
101
+ .to have_received(:puts)
102
+ .with('[Mutant-License-Error]: See https://github.com/mbj/mutant#licensing')
77
103
  .ordered
78
104
 
79
105
  expect(kernel)
80
106
  .to have_received(:sleep)
81
- .with(10)
107
+ .with(20)
82
108
  .ordered
83
109
  end
84
110
  end
@@ -253,5 +279,15 @@ RSpec.describe Mutant::License do
253
279
  [none]
254
280
  MESSAGE
255
281
  end
282
+
283
+ context 'when mutant-license gem cannot be loaded' do
284
+ let(:load_json) { false }
285
+
286
+ before do
287
+ allow(gem_method).to receive(:call).and_raise(Gem::LoadError, 'test-error')
288
+ end
289
+
290
+ it_fails_with_message '[Mutant-License-Error]: test-error'
291
+ end
256
292
  end
257
293
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mutant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-02 00:00:00.000000000 Z
11
+ date: 2020-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: abstract_type
@@ -136,20 +136,6 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.4.2
139
- - !ruby/object:Gem::Dependency
140
- name: mutant-license
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: 0.1.0
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.1.0
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: parser
155
141
  requirement: !ruby/object:Gem::Requirement
@@ -220,7 +206,7 @@ dependencies:
220
206
  - - "~>"
221
207
  - !ruby/object:Gem::Version
222
208
  version: '1.3'
223
- description: Mutation testing for ruby
209
+ description: Mutation Testing for Ruby.
224
210
  email:
225
211
  - mbj@schirp-dso.com
226
212
  executables:
@@ -630,7 +616,7 @@ requirements: []
630
616
  rubygems_version: 3.0.3
631
617
  signing_key:
632
618
  specification_version: 4
633
- summary: Mutation testing tool for ruby under MRI and Rubinius
619
+ summary: ''
634
620
  test_files:
635
621
  - spec/integration/mutant/corpus_spec.rb
636
622
  - spec/integration/mutant/isolation/fork_spec.rb