mutator_rails 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +37 -0
- data/.codeclimate.yml +20 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.ruby-version +1 -0
- data/CODE_OF_CONDUCT.md +46 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +232 -0
- data/LICENSE.md +21 -0
- data/README.md +31 -0
- data/Rakefile +8 -0
- data/app/models/test.rb +7 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/config/mutator_rails.yml +8 -0
- data/defaults.reek +131 -0
- data/lib/mutator_rails.rb +33 -0
- data/lib/mutator_rails/analyze.rb +27 -0
- data/lib/mutator_rails/cleanup.rb +60 -0
- data/lib/mutator_rails/config.rb +34 -0
- data/lib/mutator_rails/full_mutate.rb +39 -0
- data/lib/mutator_rails/guide.rb +69 -0
- data/lib/mutator_rails/list_maker.rb +25 -0
- data/lib/mutator_rails/mutation_log.rb +112 -0
- data/lib/mutator_rails/railtie.rb +18 -0
- data/lib/mutator_rails/single_mutate.rb +134 -0
- data/lib/mutator_rails/statistics.rb +192 -0
- data/lib/mutator_rails/version.rb +5 -0
- data/lib/tasks/mutator/analyze.rake +13 -0
- data/lib/tasks/mutator/cleanup.rake +13 -0
- data/lib/tasks/mutator/mutate_files.rake +12 -0
- data/lib/tasks/mutator/mutator.rake +17 -0
- data/lib/tasks/mutator/statistics.rake +13 -0
- data/log/mutant/analysis.tsv +3 -0
- data/log/mutant/guide.txt +1 -0
- data/log/mutant/models/test.log +92 -0
- data/log/mutant/models/test2.log +92 -0
- data/log/mutant/statistics.txt +19 -0
- data/mutator_rails.gemspec +37 -0
- data/spec/models/test_spec.rb +15 -0
- data/spec/mutator_rails/analyze_spec.rb +26 -0
- data/spec/mutator_rails/cleanup_spec.rb +13 -0
- data/spec/mutator_rails/full_mutate_spec.rb +13 -0
- data/spec/mutator_rails/guide_spec.rb +33 -0
- data/spec/mutator_rails/list_maker_spec.rb +17 -0
- data/spec/mutator_rails/mutation_log_spec.rb +36 -0
- data/spec/mutator_rails/single_mutate_spec.rb +111 -0
- data/spec/mutator_rails/statistics_spec.rb +48 -0
- data/spec/mutator_rails_spec.rb +9 -0
- data/spec/spec_helper.rb +49 -0
- metadata +306 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if Rails.env.development? || Rails.env.test?
|
4
|
+
|
5
|
+
namespace :mutator do
|
6
|
+
require Rails.root.join('config/environment.rb')
|
7
|
+
|
8
|
+
desc 'Run mutation analysis on the mutant logs'
|
9
|
+
task :analyze do
|
10
|
+
MutatorRails::Analyze.call
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if Rails.env.development? || Rails.env.test?
|
4
|
+
|
5
|
+
namespace :mutator do
|
6
|
+
require Rails.root.join('config/environment.rb')
|
7
|
+
|
8
|
+
desc 'Cleanup stale logs'
|
9
|
+
task :cleanup do
|
10
|
+
MutatorRails::Cleanup.call
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if Rails.env.development? || Rails.env.test?
|
4
|
+
namespace :mutator do
|
5
|
+
require Rails.root.join('config/environment.rb')
|
6
|
+
|
7
|
+
desc 'Run mutation tests on the full file set'
|
8
|
+
task :files do
|
9
|
+
MutatorRails::FullMutate.call
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'etc'
|
4
|
+
require 'yaml'
|
5
|
+
require 'json'
|
6
|
+
require 'ostruct'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
if Rails.env.development? || Rails.env.test?
|
10
|
+
|
11
|
+
namespace :mutator do
|
12
|
+
desc 'Run whole mutation process'
|
13
|
+
task all: %i[files analyze statistics cleanup] do
|
14
|
+
puts 'all processed!'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if Rails.env.development? || Rails.env.test?
|
4
|
+
|
5
|
+
namespace :mutator do
|
6
|
+
require Rails.root.join('config/environment.rb')
|
7
|
+
|
8
|
+
desc 'Run mutation statistics on the mutant logs'
|
9
|
+
task :statistics do
|
10
|
+
MutatorRails::Statistics.call
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
log/mutant/models/test.log | fdef5a515ce8eff897a72b026aadbaba | 0e7f4802f58bbbb186be8b44a74a33e3 | 0.8.14
|
@@ -0,0 +1,92 @@
|
|
1
|
+
Module#name from: XPath::HTML returned name(.). Fix your lib to follow normal ruby semantics!
|
2
|
+
{Module,Class}#name should return resolvable constant name as String or nil
|
3
|
+
Module#name from: XPath returned name(.). Fix your lib to follow normal ruby semantics!
|
4
|
+
{Module,Class}#name should return resolvable constant name as String or nil
|
5
|
+
Mutant configuration:
|
6
|
+
Matcher: #<Mutant::Matcher::Config match_expressions: [Export::ActivityExporter]>
|
7
|
+
Integration: Mutant::Integration::Rspec
|
8
|
+
Jobs: 6
|
9
|
+
Includes: []
|
10
|
+
Requires: ["./config/environment.rb"]
|
11
|
+
(00/99) 100% - killtime: 0.00s runtime: 0.00s overhead: 0.00s
|
12
|
+
(00/99) 100% - killtime: 0.00s runtime: 1.01s overhead: 1.01s
|
13
|
+
(00/99) 100% - killtime: 0.00s runtime: 2.02s overhead: 2.02s
|
14
|
+
(00/99) 100% - killtime: 0.00s runtime: 3.03s overhead: 3.03s
|
15
|
+
(06/99) 100% - killtime: 20.02s runtime: 4.04s overhead: -15.98s
|
16
|
+
(06/99) 100% - killtime: 20.02s runtime: 5.04s overhead: -14.98s
|
17
|
+
(06/99) 100% - killtime: 20.02s runtime: 6.05s overhead: -13.97s
|
18
|
+
(07/99) 100% - killtime: 23.37s runtime: 7.05s overhead: -16.32s
|
19
|
+
(12/99) 100% - killtime: 40.64s runtime: 8.06s overhead: -32.58s
|
20
|
+
(12/99) 100% - killtime: 40.64s runtime: 9.07s overhead: -31.57s
|
21
|
+
(12/99) 100% - killtime: 40.64s runtime: 10.08s overhead: -30.56s
|
22
|
+
(18/99) 100% - killtime: 61.69s runtime: 11.09s overhead: -50.60s
|
23
|
+
(18/99) 100% - killtime: 61.69s runtime: 12.09s overhead: -49.59s
|
24
|
+
(18/99) 100% - killtime: 61.69s runtime: 13.10s overhead: -48.59s
|
25
|
+
(18/99) 100% - killtime: 61.69s runtime: 14.11s overhead: -47.58s
|
26
|
+
(24/99) 100% - killtime: 81.67s runtime: 15.12s overhead: -66.55s
|
27
|
+
(24/99) 100% - killtime: 81.67s runtime: 16.13s overhead: -65.54s
|
28
|
+
(24/99) 100% - killtime: 81.67s runtime: 17.15s overhead: -64.52s
|
29
|
+
(28/99) 100% - killtime: 95.46s runtime: 18.16s overhead: -77.30s
|
30
|
+
(28/99) 93% - killtime: 103.04s runtime: 19.16s overhead: -83.88s
|
31
|
+
(28/99) 93% - killtime: 103.04s runtime: 20.17s overhead: -82.87s
|
32
|
+
(28/99) 93% - killtime: 103.04s runtime: 21.18s overhead: -81.86s
|
33
|
+
(30/99) 88% - killtime: 117.44s runtime: 22.19s overhead: -95.25s
|
34
|
+
(30/99) 83% - killtime: 125.24s runtime: 23.20s overhead: -102.04s
|
35
|
+
(30/99) 83% - killtime: 125.24s runtime: 24.20s overhead: -101.04s
|
36
|
+
(31/99) 83% - killtime: 128.75s runtime: 25.21s overhead: -103.54s
|
37
|
+
(33/99) 82% - killtime: 139.71s runtime: 26.22s overhead: -113.49s
|
38
|
+
(33/99) 78% - killtime: 147.26s runtime: 27.23s overhead: -120.03s
|
39
|
+
(33/99) 78% - killtime: 147.26s runtime: 28.24s overhead: -119.03s
|
40
|
+
(33/99) 78% - killtime: 147.26s runtime: 29.25s overhead: -118.02s
|
41
|
+
(35/99) 77% - killtime: 159.20s runtime: 30.25s overhead: -128.95s
|
42
|
+
(38/99) 79% - killtime: 171.71s runtime: 31.27s overhead: -140.44s
|
43
|
+
(38/99) 79% - killtime: 171.71s runtime: 32.27s overhead: -139.43s
|
44
|
+
(38/99) 79% - killtime: 171.71s runtime: 33.28s overhead: -138.42s
|
45
|
+
(41/99) 80% - killtime: 184.03s runtime: 34.29s overhead: -149.74s
|
46
|
+
(44/99) 81% - killtime: 195.63s runtime: 35.30s overhead: -160.33s
|
47
|
+
(44/99) 81% - killtime: 195.63s runtime: 36.31s overhead: -159.33s
|
48
|
+
(44/99) 81% - killtime: 195.63s runtime: 37.31s overhead: -158.32s
|
49
|
+
(46/99) 80% - killtime: 206.66s runtime: 38.32s overhead: -168.34s
|
50
|
+
(46/99) 76% - killtime: 217.97s runtime: 39.33s overhead: -178.65s
|
51
|
+
(46/99) 76% - killtime: 217.97s runtime: 40.33s overhead: -177.64s
|
52
|
+
(46/99) 75% - killtime: 221.72s runtime: 41.34s overhead: -180.38s
|
53
|
+
(50/99) 76% - killtime: 235.68s runtime: 42.34s overhead: -193.34s
|
54
|
+
(51/99) 77% - killtime: 239.21s runtime: 43.35s overhead: -195.85s
|
55
|
+
(51/99) 77% - killtime: 239.21s runtime: 44.36s overhead: -194.85s
|
56
|
+
(53/99) 77% - killtime: 246.10s runtime: 45.37s overhead: -200.73s
|
57
|
+
(53/99) 74% - killtime: 257.73s runtime: 46.39s overhead: -211.35s
|
58
|
+
(53/99) 73% - killtime: 261.44s runtime: 47.39s overhead: -214.05s
|
59
|
+
(53/99) 73% - killtime: 261.44s runtime: 48.40s overhead: -213.03s
|
60
|
+
(55/99) 73% - killtime: 271.98s runtime: 49.41s overhead: -222.57s
|
61
|
+
(56/99) 72% - killtime: 279.21s runtime: 50.42s overhead: -228.79s
|
62
|
+
(56/99) 71% - killtime: 282.94s runtime: 51.43s overhead: -231.52s
|
63
|
+
(56/99) 71% - killtime: 282.94s runtime: 52.43s overhead: -230.52s
|
64
|
+
(59/99) 72% - killtime: 293.60s runtime: 53.44s overhead: -240.17s
|
65
|
+
(62/99) 73% - killtime: 304.24s runtime: 54.44s overhead: -249.80s
|
66
|
+
(62/99) 73% - killtime: 304.24s runtime: 55.45s overhead: -248.79s
|
67
|
+
(63/99) 73% - killtime: 311.21s runtime: 56.46s overhead: -254.75s
|
68
|
+
(64/99) 72% - killtime: 318.20s runtime: 57.47s overhead: -260.73s
|
69
|
+
(65/99) 72% - killtime: 325.37s runtime: 58.48s overhead: -266.89s
|
70
|
+
(65/99) 72% - killtime: 325.37s runtime: 59.49s overhead: -265.89s
|
71
|
+
(68/99) 73% - killtime: 335.78s runtime: 60.49s overhead: -275.29s
|
72
|
+
(71/99) 73% - killtime: 346.07s runtime: 61.50s overhead: -284.57s
|
73
|
+
(71/99) 73% - killtime: 346.07s runtime: 62.51s overhead: -283.56s
|
74
|
+
(73/99) 73% - killtime: 354.33s runtime: 63.52s overhead: -290.81s
|
75
|
+
|
76
|
+
-----------------------
|
77
|
+
Mutant configuration:
|
78
|
+
Matcher: #<Mutant::Matcher::Config match_expressions: [Export::ActivityExporter]>
|
79
|
+
Integration: Mutant::Integration::Rspec
|
80
|
+
Jobs: 6
|
81
|
+
Includes: []
|
82
|
+
Requires: ["./config/environment.rb"]
|
83
|
+
Subjects: 3
|
84
|
+
Mutations: 99
|
85
|
+
Results: 99
|
86
|
+
Kills: 73
|
87
|
+
Alive: 26
|
88
|
+
Runtime: 63.52s
|
89
|
+
Killtime: 354.33s
|
90
|
+
Overhead: -82.07%
|
91
|
+
Mutations/s: 1.56
|
92
|
+
Coverage: 73.74%
|
@@ -0,0 +1,92 @@
|
|
1
|
+
Module#name from: XPath::HTML returned name(.). Fix your lib to follow normal ruby semantics!
|
2
|
+
{Module,Class}#name should return resolvable constant name as String or nil
|
3
|
+
Module#name from: XPath returned name(.). Fix your lib to follow normal ruby semantics!
|
4
|
+
{Module,Class}#name should return resolvable constant name as String or nil
|
5
|
+
Mutant configuration:
|
6
|
+
Matcher: #<Mutant::Matcher::Config match_expressions: [Export::ActivityExporter2]>
|
7
|
+
Integration: Mutant::Integration::Rspec
|
8
|
+
Jobs: 6
|
9
|
+
Includes: []
|
10
|
+
Requires: ["./config/environment.rb"]
|
11
|
+
(00/99) 100% - killtime: 0.00s runtime: 0.00s overhead: 0.00s
|
12
|
+
(00/99) 100% - killtime: 0.00s runtime: 1.01s overhead: 1.01s
|
13
|
+
(00/99) 100% - killtime: 0.00s runtime: 2.02s overhead: 2.02s
|
14
|
+
(00/99) 100% - killtime: 0.00s runtime: 3.03s overhead: 3.03s
|
15
|
+
(06/99) 100% - killtime: 20.02s runtime: 4.04s overhead: -15.98s
|
16
|
+
(06/99) 100% - killtime: 20.02s runtime: 5.04s overhead: -14.98s
|
17
|
+
(06/99) 100% - killtime: 20.02s runtime: 6.05s overhead: -13.97s
|
18
|
+
(07/99) 100% - killtime: 23.37s runtime: 7.05s overhead: -16.32s
|
19
|
+
(12/99) 100% - killtime: 40.64s runtime: 8.06s overhead: -32.58s
|
20
|
+
(12/99) 100% - killtime: 40.64s runtime: 9.07s overhead: -31.57s
|
21
|
+
(12/99) 100% - killtime: 40.64s runtime: 10.08s overhead: -30.56s
|
22
|
+
(18/99) 100% - killtime: 61.69s runtime: 11.09s overhead: -50.60s
|
23
|
+
(18/99) 100% - killtime: 61.69s runtime: 12.09s overhead: -49.59s
|
24
|
+
(18/99) 100% - killtime: 61.69s runtime: 13.10s overhead: -48.59s
|
25
|
+
(18/99) 100% - killtime: 61.69s runtime: 14.11s overhead: -47.58s
|
26
|
+
(24/99) 100% - killtime: 81.67s runtime: 15.12s overhead: -66.55s
|
27
|
+
(24/99) 100% - killtime: 81.67s runtime: 16.13s overhead: -65.54s
|
28
|
+
(24/99) 100% - killtime: 81.67s runtime: 17.15s overhead: -64.52s
|
29
|
+
(28/99) 100% - killtime: 95.46s runtime: 18.16s overhead: -77.30s
|
30
|
+
(28/99) 93% - killtime: 103.04s runtime: 19.16s overhead: -83.88s
|
31
|
+
(28/99) 93% - killtime: 103.04s runtime: 20.17s overhead: -82.87s
|
32
|
+
(28/99) 93% - killtime: 103.04s runtime: 21.18s overhead: -81.86s
|
33
|
+
(30/99) 88% - killtime: 117.44s runtime: 22.19s overhead: -95.25s
|
34
|
+
(30/99) 83% - killtime: 125.24s runtime: 23.20s overhead: -102.04s
|
35
|
+
(30/99) 83% - killtime: 125.24s runtime: 24.20s overhead: -101.04s
|
36
|
+
(31/99) 83% - killtime: 128.75s runtime: 25.21s overhead: -103.54s
|
37
|
+
(33/99) 82% - killtime: 139.71s runtime: 26.22s overhead: -113.49s
|
38
|
+
(33/99) 78% - killtime: 147.26s runtime: 27.23s overhead: -120.03s
|
39
|
+
(33/99) 78% - killtime: 147.26s runtime: 28.24s overhead: -119.03s
|
40
|
+
(33/99) 78% - killtime: 147.26s runtime: 29.25s overhead: -118.02s
|
41
|
+
(35/99) 77% - killtime: 159.20s runtime: 30.25s overhead: -128.95s
|
42
|
+
(38/99) 79% - killtime: 171.71s runtime: 31.27s overhead: -140.44s
|
43
|
+
(38/99) 79% - killtime: 171.71s runtime: 32.27s overhead: -139.43s
|
44
|
+
(38/99) 79% - killtime: 171.71s runtime: 33.28s overhead: -138.42s
|
45
|
+
(41/99) 80% - killtime: 184.03s runtime: 34.29s overhead: -149.74s
|
46
|
+
(44/99) 81% - killtime: 195.63s runtime: 35.30s overhead: -160.33s
|
47
|
+
(44/99) 81% - killtime: 195.63s runtime: 36.31s overhead: -159.33s
|
48
|
+
(44/99) 81% - killtime: 195.63s runtime: 37.31s overhead: -158.32s
|
49
|
+
(46/99) 80% - killtime: 206.66s runtime: 38.32s overhead: -168.34s
|
50
|
+
(46/99) 76% - killtime: 217.97s runtime: 39.33s overhead: -178.65s
|
51
|
+
(46/99) 76% - killtime: 217.97s runtime: 40.33s overhead: -177.64s
|
52
|
+
(46/99) 75% - killtime: 221.72s runtime: 41.34s overhead: -180.38s
|
53
|
+
(50/99) 76% - killtime: 235.68s runtime: 42.34s overhead: -193.34s
|
54
|
+
(51/99) 77% - killtime: 239.21s runtime: 43.35s overhead: -195.85s
|
55
|
+
(51/99) 77% - killtime: 239.21s runtime: 44.36s overhead: -194.85s
|
56
|
+
(53/99) 77% - killtime: 246.10s runtime: 45.37s overhead: -200.73s
|
57
|
+
(53/99) 74% - killtime: 257.73s runtime: 46.39s overhead: -211.35s
|
58
|
+
(53/99) 73% - killtime: 261.44s runtime: 47.39s overhead: -214.05s
|
59
|
+
(53/99) 73% - killtime: 261.44s runtime: 48.40s overhead: -213.03s
|
60
|
+
(55/99) 73% - killtime: 271.98s runtime: 49.41s overhead: -222.57s
|
61
|
+
(56/99) 72% - killtime: 279.21s runtime: 50.42s overhead: -228.79s
|
62
|
+
(56/99) 71% - killtime: 282.94s runtime: 51.43s overhead: -231.52s
|
63
|
+
(56/99) 71% - killtime: 282.94s runtime: 52.43s overhead: -230.52s
|
64
|
+
(59/99) 72% - killtime: 293.60s runtime: 53.44s overhead: -240.17s
|
65
|
+
(62/99) 73% - killtime: 304.24s runtime: 54.44s overhead: -249.80s
|
66
|
+
(62/99) 73% - killtime: 304.24s runtime: 55.45s overhead: -248.79s
|
67
|
+
(63/99) 73% - killtime: 311.21s runtime: 56.46s overhead: -254.75s
|
68
|
+
(64/99) 72% - killtime: 318.20s runtime: 57.47s overhead: -260.73s
|
69
|
+
(65/99) 72% - killtime: 325.37s runtime: 58.48s overhead: -266.89s
|
70
|
+
(65/99) 72% - killtime: 325.37s runtime: 59.49s overhead: -265.89s
|
71
|
+
(68/99) 73% - killtime: 335.78s runtime: 60.49s overhead: -275.29s
|
72
|
+
(71/99) 73% - killtime: 346.07s runtime: 61.50s overhead: -284.57s
|
73
|
+
(71/99) 73% - killtime: 346.07s runtime: 62.51s overhead: -283.56s
|
74
|
+
(73/99) 73% - killtime: 354.33s runtime: 63.52s overhead: -290.81s
|
75
|
+
|
76
|
+
-----------------------
|
77
|
+
Mutant configuration:
|
78
|
+
Matcher: #<Mutant::Matcher::Config match_expressions: [Export::ActivityExporter2]>
|
79
|
+
Integration: Mutant::Integration::Rspec
|
80
|
+
Jobs: 6
|
81
|
+
Includes: []
|
82
|
+
Requires: ["./config/environment.rb"]
|
83
|
+
Subjects: 3
|
84
|
+
Mutations: 99
|
85
|
+
Results: 99
|
86
|
+
Kills: 73
|
87
|
+
Alive: 26
|
88
|
+
Runtime: 63.52s
|
89
|
+
Killtime: 354.33s
|
90
|
+
Overhead: -82.07%
|
91
|
+
Mutations/s: 1.56
|
92
|
+
Coverage: 73.74%
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
2 module(s) were mutated in 2 minutes 7 seconds
|
3
|
+
for a total of 198 mutations tested @ 1.56/sec average
|
4
|
+
which left 52 mutations alive (26.3%)
|
5
|
+
and 146 killed (73.7%)
|
6
|
+
|
7
|
+
0 module(s) were fully mutated (0.0%)
|
8
|
+
|
9
|
+
The following modules had most alive mutations (top 10):
|
10
|
+
. Export::ActivityExporter (26)
|
11
|
+
. Export::ActivityExporter2 (26)
|
12
|
+
|
13
|
+
The following modules had longest mutation time (top 10):
|
14
|
+
. Export::ActivityExporter (1 minute 3 seconds)
|
15
|
+
. Export::ActivityExporter2 (1 minute 3 seconds)
|
16
|
+
|
17
|
+
The following modules had largest mutation count (top 10):
|
18
|
+
. Export::ActivityExporter (99)
|
19
|
+
. Export::ActivityExporter2 (99)
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require File.expand_path('../lib/mutator_rails/version', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = 'mutator_rails'
|
7
|
+
gem.version = MutatorRails::VERSION.dup
|
8
|
+
gem.authors = %w[Tim\ Chambers Jason\ Dinsmore]
|
9
|
+
gem.email = ['tim@possibilogy.com', 'jason@dinjas.com']
|
10
|
+
gem.summary = 'Integrate automated mutation testing into Rails.'
|
11
|
+
gem.description = 'Automate mutation testing to find weaknesses in code'
|
12
|
+
gem.homepage = 'https://github.com/dinj-oss/mutator_rails'
|
13
|
+
gem.license = 'MIT'
|
14
|
+
|
15
|
+
gem.require_paths = ['lib']
|
16
|
+
gem.required_rubygems_version = '>= 1.3.6'
|
17
|
+
gem.required_ruby_version = '>= 2.3'
|
18
|
+
|
19
|
+
gem.files = `git ls-files`.split("\n")
|
20
|
+
gem.test_files = `git ls-files -- {spec}/*`.split("\n")
|
21
|
+
|
22
|
+
gem.add_development_dependency 'bundler', '~> 1.15'
|
23
|
+
gem.add_development_dependency 'rake', '~> 12.0'
|
24
|
+
gem.add_development_dependency 'rails', '>= 4.0'
|
25
|
+
gem.add_development_dependency 'rspec-core', '~> 3.6.0'
|
26
|
+
gem.add_development_dependency 'rspec-expectations', '~> 3.6.0'
|
27
|
+
gem.add_development_dependency 'rspec_junit_formatter'
|
28
|
+
gem.add_development_dependency 'codeclimate-test-reporter'
|
29
|
+
gem.add_development_dependency 'rspec-collection_matchers'
|
30
|
+
gem.add_development_dependency 'rspec-mocks', '~> 3.6.0'
|
31
|
+
gem.add_development_dependency 'mutant', '~> 0.8.14'
|
32
|
+
gem.add_development_dependency 'mutant-rspec', '~> 0.8.14'
|
33
|
+
gem.add_development_dependency 'concord', '~> 0.1.4'
|
34
|
+
gem.add_development_dependency 'procto', '~> 0.0.3'
|
35
|
+
gem.add_development_dependency 'adamantium', '~> 0.2.0'
|
36
|
+
gem.add_development_dependency 'reek', '~> 4.7.2'
|
37
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe MutatorRails::Analyze do
|
6
|
+
let(:object) { described_class.call }
|
7
|
+
let(:analysis_file) { 'log/mutant/analysis.tsv' }
|
8
|
+
before do
|
9
|
+
File.delete(analysis_file) if File.exist?(analysis_file)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#call' do
|
13
|
+
it 'processes the log files' do
|
14
|
+
object
|
15
|
+
|
16
|
+
expect(File.exist?(analysis_file)).to be true
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'has the correct number of lines' do
|
20
|
+
object
|
21
|
+
analysis = File.read(analysis_file)
|
22
|
+
|
23
|
+
expect(analysis.split("\n")).to have(3).lines
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe MutatorRails::Guide do
|
6
|
+
let(:object) { described_class.new }
|
7
|
+
let(:guide_file) { 'log/mutant/guide.txt' }
|
8
|
+
let(:log) { 'log/mutant/models/test.log'}
|
9
|
+
let(:code_md5) { Digest::MD5.hexdigest('abc') }
|
10
|
+
let(:spec_md5) { Digest::MD5.hexdigest('def') }
|
11
|
+
before do
|
12
|
+
File.delete(guide_file)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#current?' do
|
16
|
+
it 'processes the log files' do
|
17
|
+
expect(object.current?(log, code_md5, spec_md5)).to be false
|
18
|
+
|
19
|
+
object.update(log, code_md5, spec_md5)
|
20
|
+
|
21
|
+
expect(object.current?(log, code_md5, spec_md5)).to be true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#update' do
|
26
|
+
it 'processes the log files' do
|
27
|
+
object.update(log, code_md5, spec_md5)
|
28
|
+
|
29
|
+
content = File.read(guide_file)
|
30
|
+
expect(content).to match("#{log} | #{code_md5} | #{spec_md5} | #{MutatorRails::MUTANT_VERSION}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|