mutant 0.5.3 → 0.5.4

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: edacde6ada988b61110b578d2568903c5791c5bd
4
- data.tar.gz: 66f1c39c340bade4fcc55b2b24cb838e787145d1
3
+ metadata.gz: cfc07195d6693ad63b0433992030c150ca915db7
4
+ data.tar.gz: 7684770e50ba078c967eb31cb2ea0f94170b2589
5
5
  SHA512:
6
- metadata.gz: 241299604cd937e1618f68d556544ddfc3580d7d52b9d263dc3aa0d1aa4d33de33fe7154392196c0685bbc9fd8e04143ba176ca3d73be95cdefee149b4b6a286
7
- data.tar.gz: 1d4137de23eac2a0be3458dabe397f78c2b7c488e6531b52642324be3094f5076337baf4ee2c96300ef14bf774f33efdb66001008494f5674ddb7758ab20f898
6
+ metadata.gz: e7f32cb5878c9c63305998d23375e9978837b0f8b4243b5361d8d27351869acdc9f93f03bfced9e3977ffd4672aa078316c34078e13da4890e5ddf87cb3da488
7
+ data.tar.gz: efd706cf179d1dd8081d54a5e7b0b515c385f1a669c15bc2058768f56405fc80f59e8e4f932fa28a172482b18a006ec07cec2f0186ef52c76efdd33c2e13b2f6
data/Changelog.md CHANGED
@@ -1,3 +1,9 @@
1
+ # v0.5.4 2014-03-08
2
+
3
+ Changes:
4
+
5
+ * Morpher dependency bump
6
+
1
7
  # v0.5.3 2014-03-05
2
8
 
3
9
  Changes:
data/Gemfile.devtools CHANGED
@@ -1,9 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  group :development do
4
- gem 'rake', '~> 10.1.0'
5
- gem 'rspec', '~> 2.14.1'
6
- gem 'yard', '~> 0.8.7'
4
+ gem 'rake', '~> 10.1.0'
5
+ gem 'rspec', '~> 2.14.1'
6
+ gem 'rspec-core', '~> 2.14.8'
7
+ gem 'yard', '~> 0.8.7'
7
8
 
8
9
  platform :rbx do
9
10
  gem 'rubysl-singleton', '~> 2.0.0'
@@ -11,17 +12,17 @@ group :development do
11
12
  end
12
13
 
13
14
  group :yard do
14
- gem 'kramdown', '~> 1.3.0'
15
+ gem 'kramdown', '~> 1.3.2'
15
16
  end
16
17
 
17
18
  group :guard do
18
- gem 'guard', '~> 2.2.4'
19
+ gem 'guard', '~> 2.4.0'
19
20
  gem 'guard-bundler', '~> 2.0.0'
20
- gem 'guard-rspec', '~> 4.2.0'
21
- gem 'guard-rubocop', '~> 1.0.0'
21
+ gem 'guard-rspec', '~> 4.2.6'
22
+ gem 'guard-rubocop', '~> 1.0.2'
22
23
 
23
24
  # file system change event handling
24
- gem 'listen', '~> 2.4.0'
25
+ gem 'listen', '~> 2.5.0'
25
26
  gem 'rb-fchange', '~> 0.0.6', require: false
26
27
  gem 'rb-fsevent', '~> 0.9.3', require: false
27
28
  gem 'rb-inotify', '~> 0.9.0', require: false
@@ -37,9 +38,9 @@ group :metrics do
37
38
  gem 'flay', '~> 2.4.0'
38
39
  gem 'flog', '~> 4.2.0'
39
40
  gem 'reek', '~> 1.3.2'
40
- gem 'rubocop', '~> 0.16.0'
41
+ gem 'rubocop', '~> 0.18.1'
41
42
  gem 'simplecov', '~> 0.8.2'
42
- gem 'yardstick', '~> 0.9.7', git: 'https://github.com/dkubb/yardstick.git'
43
+ gem 'yardstick', '~> 0.9.9'
43
44
 
44
45
  platforms :ruby_19, :ruby_20 do
45
46
  gem 'yard-spellcheck', '~> 0.1.5'
@@ -47,7 +48,7 @@ group :metrics do
47
48
 
48
49
  platform :rbx do
49
50
  gem 'json', '~> 1.8.1'
50
- gem 'racc', '~> 1.4.10'
51
+ gem 'racc', '~> 1.4'
51
52
  gem 'rubysl-logger', '~> 2.0.0'
52
53
  gem 'rubysl-open-uri', '~> 2.0.0'
53
54
  gem 'rubysl-prettyprint', '~> 2.0.2'
data/README.md CHANGED
@@ -128,7 +128,7 @@ Example for a subject like `Foo::Bar#baz` it will run all example groups with de
128
128
  current prefix level, these example groups *must* kill the mutation.
129
129
 
130
130
  This test selection strategy is compatible with the old `--rspec-dm2` and `--rspec-unit` strategy.
131
- The old flags where removed. It allows to define very fine grained specs, or coarse grained - as you like.
131
+ The old flags were removed. It allows to define very fine grained specs, or coarse grained - as you like.
132
132
 
133
133
  Support
134
134
  -------
data/config/flay.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 18
3
- total_score: 808
3
+ total_score: 794
@@ -9,7 +9,7 @@ module Mutant
9
9
 
10
10
  TABLE = {
11
11
  '.' => Matcher::Methods::Singleton,
12
- '#' => Matcher::Methods::Instance,
12
+ '#' => Matcher::Methods::Instance
13
13
  }.freeze
14
14
 
15
15
  REGEXP = /
data/lib/mutant/cli.rb CHANGED
@@ -112,7 +112,7 @@ module Mutant
112
112
  #
113
113
  def subject_selector
114
114
  if @subject_selectors.any?
115
- Morpher::Evaluator::Predicate::Or.new(@subject_selectors)
115
+ Morpher::Evaluator::Predicate::Boolean::Or.new(@subject_selectors)
116
116
  end
117
117
  end
118
118
 
@@ -128,7 +128,7 @@ module Mutant
128
128
  #
129
129
  def predicate
130
130
  if subject_selector && subject_rejector
131
- Morpher::Evaluator::Predicate::And.new([
131
+ Morpher::Evaluator::Predicate::Boolean::And.new([
132
132
  subject_selector,
133
133
  Morpher::Evaluator::Predicate::Negation.new(subject_rejector)
134
134
  ])
@@ -149,11 +149,11 @@ module Mutant
149
149
  #
150
150
  def subject_rejector
151
151
  rejectors = @subject_ignores.flat_map(&:to_a).map do |subject|
152
- Morpher.evaluator(s(:eql, s(:attribute, :identification), s(:static, subject.identification)))
152
+ Morpher.compile(s(:eql, s(:attribute, :identification), s(:static, subject.identification)))
153
153
  end
154
154
 
155
155
  if rejectors.any?
156
- Morpher::Evaluator::Predicate::Or.new(rejectors)
156
+ Morpher::Evaluator::Predicate::Boolean::Or.new(rejectors)
157
157
  end
158
158
  end
159
159
  end
@@ -169,7 +169,7 @@ module Mutant
169
169
  def initialize(arguments = [])
170
170
  @builder = Builder.new
171
171
  @debug = @fail_fast = @zombie = false
172
- @expect_coverage = 100.0
172
+ @expected_coverage = 100.0
173
173
  @strategy = Strategy::Null.new
174
174
  @cache = Mutant::Cache.new
175
175
  parse(arguments)
@@ -191,7 +191,7 @@ module Mutant
191
191
  strategy: @strategy,
192
192
  fail_fast: @fail_fast,
193
193
  reporter: Reporter::CLI.new($stdout),
194
- expected_coverage: @expect_coverage
194
+ expected_coverage: @expected_coverage
195
195
  )
196
196
  end
197
197
  memoize :config
@@ -315,7 +315,7 @@ module Mutant
315
315
  @builder.add_subject_ignore(Classifier.run(@cache, pattern))
316
316
  end
317
317
  opts.on('--code CODE', 'Scope execution to subjects with CODE') do |code|
318
- @builder.add_subject_selector(Morpher.evaluator(s(:eql, s(:attribute, :code), s(:static, code))))
318
+ @builder.add_subject_selector(Morpher.compile(s(:eql, s(:attribute, :code), s(:static, code))))
319
319
  end
320
320
  end
321
321
 
data/lib/mutant/differ.rb CHANGED
@@ -24,7 +24,7 @@ module Mutant
24
24
  .diff(:unified) << "\n"
25
25
  else
26
26
  $stderr.puts(
27
- 'Mutation resulted in more than one diff, should not happen! ' +
27
+ 'Mutation resulted in more than one diff, should not happen! ' \
28
28
  'PLS report a bug!'
29
29
  )
30
30
  nil
@@ -55,7 +55,7 @@ module Mutant
55
55
  'Parsed subject AST:',
56
56
  '%s',
57
57
  'Unparsed source:',
58
- '%s',
58
+ '%s'
59
59
  ].join("\n")
60
60
 
61
61
  private
@@ -74,8 +74,8 @@ module Mutant
74
74
  # @api private
75
75
  #
76
76
  def coverage
77
- return 0.0 if amount_mutations.zero?
78
- Rational(amount_kills, amount_mutations) * 100
77
+ return 0.0 if amount_mutations.zero? && amount_kills.zero?
78
+ (amount_kills.to_f / amount_mutations) * 100
79
79
  end
80
80
  memoize :coverage
81
81
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Mutant
4
4
  # The current mutant version
5
- VERSION = '0.5.3'.freeze
5
+ VERSION = '0.5.4'.freeze
6
6
  end # Mutant
data/lib/mutant/walker.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  module Mutant
2
4
 
3
5
  # Walker for all ast nodes
data/mutant.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |gem|
24
24
  gem.required_ruby_version = '>= 1.9.3'
25
25
 
26
26
  gem.add_runtime_dependency('parser', '~> 2.1.6')
27
- gem.add_runtime_dependency('morpher', '~> 0.0.1')
27
+ gem.add_runtime_dependency('morpher', '~> 0.1.0')
28
28
  gem.add_runtime_dependency('procto', '~> 0.0.2')
29
29
  gem.add_runtime_dependency('abstract_type', '~> 0.0.7')
30
30
  gem.add_runtime_dependency('unparser', '~> 0.1.8')
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
 
5
5
  describe Mutant, 'rspec integration' do
6
6
 
7
- let(:base_cmd) { "bundle exec mutant -I lib --require test_app --use rspec" }
7
+ let(:base_cmd) { 'bundle exec mutant -I lib --require test_app --use rspec' }
8
8
 
9
9
  shared_examples_for 'rspec integration' do
10
10
  around do |example|
@@ -129,7 +129,7 @@ describe Mutant::CLI, '.new' do
129
129
  cache,
130
130
  TestApp::Literal, TestApp::Literal.instance_method(:float)
131
131
  )
132
- predicate = Morpher.evaluator(
132
+ predicate = Morpher.compile(
133
133
  s(:or,
134
134
  s(:eql,
135
135
  s(:attribute, :code),
@@ -3,6 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Mutant::Runner::Config do
6
+ let(:object) { described_class.run(config) }
6
7
 
7
8
  let(:config) do
8
9
  Mutant::Config.new(
@@ -17,8 +18,12 @@ describe Mutant::Runner::Config do
17
18
  )
18
19
  end
19
20
 
20
- let(:fail_fast) { false }
21
- let(:expected_coverage) { 100.0 }
21
+ let(:fail_fast) { false }
22
+ let(:expected_coverage) { 100.0 }
23
+ let(:reporter) { double('Reporter') }
24
+ let(:strategy) { double('Strategy') }
25
+ let(:subject_a) { double('Subject A') }
26
+ let(:subject_b) { double('Subject B') }
22
27
 
23
28
  before do
24
29
  reporter.stub(report: reporter)
@@ -28,13 +33,7 @@ describe Mutant::Runner::Config do
28
33
  Mutant::Runner.stub(:run).with(config, subject_b).and_return(runner_b)
29
34
  end
30
35
 
31
- let(:reporter) { double('Reporter') }
32
- let(:strategy) { double('Strategy') }
33
- let(:subject_a) { double('Subject A') }
34
- let(:subject_b) { double('Subject B') }
35
-
36
36
  describe '#subjects' do
37
- let(:object) { described_class.run(config) }
38
37
 
39
38
  subject { object.subjects }
40
39
 
@@ -60,11 +59,62 @@ describe Mutant::Runner::Config do
60
59
  end
61
60
  end
62
61
 
62
+ describe '#coverage' do
63
+ subject { object.coverage }
64
+
65
+ let(:runner_a) { double('Runner A', stop?: false, :mutations => mutations_a) }
66
+ let(:runner_b) { double('Runner B', stop?: false, :mutations => []) }
67
+
68
+ let(:mutations_a) do
69
+ Array.new(amount_mutations) do |number|
70
+ double('Mutation', success?: number <= amount_kills - 1)
71
+ end
72
+ end
73
+
74
+ context 'with zero mutations and kills' do
75
+ let(:amount_mutations) { 0 }
76
+ let(:amount_kills) { 0 }
77
+
78
+ it { should eql(0.0) }
79
+ end
80
+
81
+ context 'with one mutation' do
82
+ let(:amount_mutations) { 1 }
83
+
84
+ context 'and one kill' do
85
+ let(:amount_kills) { 1 }
86
+ it { should eql(100.0) }
87
+ end
88
+
89
+ context 'and no kills' do
90
+ let(:amount_kills) { 0 }
91
+ it { should eql(0.0) }
92
+ end
93
+ end
94
+
95
+ context 'with many mutations' do
96
+ let(:amount_mutations) { 10 }
97
+
98
+ context 'and no kill' do
99
+ let(:amount_kills) { 0 }
100
+ it { should eql(0.0) }
101
+ end
102
+
103
+ context 'and some kills' do
104
+ let(:amount_kills) { 2 }
105
+ it { should eql(20.0) }
106
+ end
107
+
108
+ context 'and as many kills' do
109
+ let(:amount_kills) { amount_mutations }
110
+ it { should eql(100.0) }
111
+ end
112
+ end
113
+ end
114
+
63
115
  describe '#success?' do
64
116
  subject { object.success? }
65
117
 
66
- let(:object) { described_class.new(config) }
67
-
68
118
  let(:mutation_a) do
69
119
  double('Mutation A', success?: false)
70
120
  end
@@ -81,6 +131,14 @@ describe Mutant::Runner::Config do
81
131
  double('Runner B', stop?: false, success?: true, mutations: [mutation_b])
82
132
  end
83
133
 
134
+ let(:runner_a) do
135
+ double('Runner A', stop?: false, success?: false, mutations: [mutation_a])
136
+ end
137
+
138
+ let(:runner_b) do
139
+ double('Runner B', stop?: false, success?: true, mutations: [mutation_b])
140
+ end
141
+
84
142
  context 'without fail fast' do
85
143
 
86
144
  context 'when expected coverage equals actual coverage' do
@@ -29,7 +29,7 @@ describe Mutant::Subject do
29
29
  double(
30
30
  'Context',
31
31
  source_path: 'source_path',
32
- source_line: 'source_line',
32
+ source_line: 'source_line'
33
33
  )
34
34
  end
35
35
 
@@ -1,9 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  group :development do
4
- gem 'rake', '~> 10.1.0'
5
- gem 'rspec', '~> 2.14.1'
6
- gem 'yard', '~> 0.8.7'
4
+ gem 'rake', '~> 10.1.0'
5
+ gem 'rspec', '~> 2.14.1'
6
+ gem 'rspec-core', '~> 2.14.8'
7
+ gem 'yard', '~> 0.8.7'
7
8
 
8
9
  platform :rbx do
9
10
  gem 'rubysl-singleton', '~> 2.0.0'
@@ -11,17 +12,17 @@ group :development do
11
12
  end
12
13
 
13
14
  group :yard do
14
- gem 'kramdown', '~> 1.3.0'
15
+ gem 'kramdown', '~> 1.3.2'
15
16
  end
16
17
 
17
18
  group :guard do
18
- gem 'guard', '~> 2.2.4'
19
+ gem 'guard', '~> 2.4.0'
19
20
  gem 'guard-bundler', '~> 2.0.0'
20
- gem 'guard-rspec', '~> 4.2.0'
21
- gem 'guard-rubocop', '~> 1.0.0'
21
+ gem 'guard-rspec', '~> 4.2.6'
22
+ gem 'guard-rubocop', '~> 1.0.2'
22
23
 
23
24
  # file system change event handling
24
- gem 'listen', '~> 2.4.0'
25
+ gem 'listen', '~> 2.5.0'
25
26
  gem 'rb-fchange', '~> 0.0.6', require: false
26
27
  gem 'rb-fsevent', '~> 0.9.3', require: false
27
28
  gem 'rb-inotify', '~> 0.9.0', require: false
@@ -37,9 +38,9 @@ group :metrics do
37
38
  gem 'flay', '~> 2.4.0'
38
39
  gem 'flog', '~> 4.2.0'
39
40
  gem 'reek', '~> 1.3.2'
40
- gem 'rubocop', '~> 0.16.0'
41
+ gem 'rubocop', '~> 0.18.1'
41
42
  gem 'simplecov', '~> 0.8.2'
42
- gem 'yardstick', '~> 0.9.7', git: 'https://github.com/dkubb/yardstick.git'
43
+ gem 'yardstick', '~> 0.9.9'
43
44
 
44
45
  platforms :ruby_19, :ruby_20 do
45
46
  gem 'yard-spellcheck', '~> 0.1.5'
@@ -47,7 +48,7 @@ group :metrics do
47
48
 
48
49
  platform :rbx do
49
50
  gem 'json', '~> 1.8.1'
50
- gem 'racc', '~> 1.4.10'
51
+ gem 'racc', '~> 1.4'
51
52
  gem 'rubysl-logger', '~> 2.0.0'
52
53
  gem 'rubysl-open-uri', '~> 2.0.0'
53
54
  gem 'rubysl-prettyprint', '~> 2.0.2'
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.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-05 00:00:00.000000000 Z
11
+ date: 2014-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.1
33
+ version: 0.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: 0.0.1
40
+ version: 0.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: procto
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -216,7 +216,6 @@ files:
216
216
  - Changelog.md
217
217
  - Gemfile
218
218
  - Gemfile.devtools
219
- - Gemfile.triage
220
219
  - Guardfile
221
220
  - LICENSE
222
221
  - README.md
data/Gemfile.triage DELETED
@@ -1,54 +0,0 @@
1
- # encoding: utf-8
2
-
3
- group :development do
4
- gem 'rake', '~> 10.1.0'
5
- gem 'rspec', '~> 2.14.1'
6
- gem 'yard', '~> 0.8.7'
7
- end
8
-
9
- group :yard do
10
- gem 'kramdown', '~> 1.2.0'
11
- end
12
-
13
- group :guard do
14
- gem 'guard', '~> 1.8.1'
15
- gem 'guard-bundler', '~> 1.0.0'
16
- gem 'guard-rspec', '~> 3.0.2'
17
- gem 'guard-rubocop', '~> 0.2.0'
18
- gem 'guard-mutant', '~> 0.0.1'
19
-
20
- # file system change event handling
21
- gem 'listen', '~> 1.3.0'
22
- gem 'rb-fchange', '~> 0.0.6', require: false
23
- gem 'rb-fsevent', '~> 0.9.3', require: false
24
- gem 'rb-inotify', '~> 0.9.0', require: false
25
-
26
- # notification handling
27
- gem 'libnotify', '~> 0.8.0', require: false
28
- gem 'rb-notifu', '~> 0.0.4', require: false
29
- gem 'terminal-notifier-guard', '~> 1.5.3', require: false
30
- end
31
-
32
- group :metrics do
33
- gem 'coveralls', '~> 0.7.0'
34
- gem 'flay', '~> 2.4.0'
35
- gem 'flog', '~> 4.1.1'
36
- gem 'reek', '~> 1.3.2'
37
- gem 'rubocop', '~> 0.14.1'
38
- gem 'simplecov', '~> 0.7.1'
39
- gem 'yardstick', '~> 0.9.7', git: 'https://github.com/dkubb/yardstick.git'
40
-
41
- platforms :ruby_19, :ruby_20 do
42
- gem 'yard-spellcheck', '~> 0.1.5'
43
- end
44
- end
45
-
46
- group :benchmarks do
47
- gem 'rbench', '~> 0.2.3'
48
- end
49
-
50
- platform :jruby do
51
- group :jruby do
52
- gem 'jruby-openssl', '~> 0.8.5'
53
- end
54
- end