mutant 0.8.10 → 0.8.11

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.
Files changed (247) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -4
  3. data/Changelog.md +8 -0
  4. data/README.md +112 -43
  5. data/Rakefile +2 -16
  6. data/circle.yml +1 -1
  7. data/config/flay.yml +2 -2
  8. data/config/flog.yml +1 -1
  9. data/config/reek.yml +3 -4
  10. data/config/rubocop.yml +53 -16
  11. data/lib/mutant.rb +27 -6
  12. data/lib/mutant/ast/meta/const.rb +2 -0
  13. data/lib/mutant/ast/meta/optarg.rb +2 -0
  14. data/lib/mutant/ast/meta/resbody.rb +2 -0
  15. data/lib/mutant/ast/meta/restarg.rb +2 -0
  16. data/lib/mutant/ast/meta/send.rb +4 -0
  17. data/lib/mutant/ast/meta/symbol.rb +2 -0
  18. data/lib/mutant/ast/named_children.rb +14 -4
  19. data/lib/mutant/ast/nodes.rb +3 -1
  20. data/lib/mutant/ast/regexp.rb +53 -0
  21. data/lib/mutant/ast/regexp/transformer.rb +185 -0
  22. data/lib/mutant/ast/regexp/transformer/alternative.rb +39 -0
  23. data/lib/mutant/ast/regexp/transformer/character_set.rb +46 -0
  24. data/lib/mutant/ast/regexp/transformer/direct.rb +99 -0
  25. data/lib/mutant/ast/regexp/transformer/options_group.rb +66 -0
  26. data/lib/mutant/ast/regexp/transformer/quantifier.rb +112 -0
  27. data/lib/mutant/ast/regexp/transformer/recursive.rb +50 -0
  28. data/lib/mutant/ast/regexp/transformer/root.rb +29 -0
  29. data/lib/mutant/ast/regexp/transformer/text.rb +55 -0
  30. data/lib/mutant/ast/types.rb +92 -5
  31. data/lib/mutant/cli.rb +2 -14
  32. data/lib/mutant/color.rb +1 -1
  33. data/lib/mutant/config.rb +1 -3
  34. data/lib/mutant/expression/methods.rb +1 -1
  35. data/lib/mutant/expression/namespace.rb +2 -2
  36. data/lib/mutant/expression/parser.rb +1 -1
  37. data/lib/mutant/integration.rb +10 -28
  38. data/lib/mutant/isolation.rb +9 -60
  39. data/lib/mutant/isolation/fork.rb +72 -0
  40. data/lib/mutant/isolation/none.rb +25 -0
  41. data/lib/mutant/matcher/config.rb +2 -0
  42. data/lib/mutant/matcher/method/singleton.rb +5 -4
  43. data/lib/mutant/meta.rb +11 -4
  44. data/lib/mutant/meta/example.rb +2 -116
  45. data/lib/mutant/meta/example/dsl.rb +22 -19
  46. data/lib/mutant/meta/example/verification.rb +86 -0
  47. data/lib/mutant/mutator.rb +22 -49
  48. data/lib/mutant/mutator/node.rb +15 -19
  49. data/lib/mutant/mutator/node/and_asgn.rb +1 -1
  50. data/lib/mutant/mutator/node/argument.rb +10 -5
  51. data/lib/mutant/mutator/node/arguments.rb +5 -9
  52. data/lib/mutant/mutator/node/begin.rb +4 -17
  53. data/lib/mutant/mutator/node/block.rb +1 -1
  54. data/lib/mutant/mutator/node/break.rb +1 -1
  55. data/lib/mutant/mutator/node/class.rb +21 -0
  56. data/lib/mutant/mutator/node/conditional_loop.rb +1 -1
  57. data/lib/mutant/mutator/node/define.rb +1 -1
  58. data/lib/mutant/mutator/node/defined.rb +1 -1
  59. data/lib/mutant/mutator/node/dstr.rb +1 -1
  60. data/lib/mutant/mutator/node/dsym.rb +1 -1
  61. data/lib/mutant/mutator/node/generic.rb +3 -3
  62. data/lib/mutant/mutator/node/kwbegin.rb +1 -1
  63. data/lib/mutant/mutator/node/literal.rb +9 -0
  64. data/lib/mutant/mutator/node/literal/boolean.rb +1 -1
  65. data/lib/mutant/mutator/node/literal/fixnum.rb +2 -2
  66. data/lib/mutant/mutator/node/literal/float.rb +4 -6
  67. data/lib/mutant/mutator/node/literal/hash.rb +1 -1
  68. data/lib/mutant/mutator/node/literal/nil.rb +1 -1
  69. data/lib/mutant/mutator/node/literal/range.rb +2 -19
  70. data/lib/mutant/mutator/node/literal/regex.rb +43 -3
  71. data/lib/mutant/mutator/node/literal/string.rb +1 -1
  72. data/lib/mutant/mutator/node/literal/symbol.rb +2 -4
  73. data/lib/mutant/mutator/node/masgn.rb +1 -1
  74. data/lib/mutant/mutator/node/match_current_line.rb +1 -1
  75. data/lib/mutant/mutator/node/mlhs.rb +2 -3
  76. data/lib/mutant/mutator/node/named_value/access.rb +2 -2
  77. data/lib/mutant/mutator/node/named_value/constant_assignment.rb +4 -3
  78. data/lib/mutant/mutator/node/named_value/variable_assignment.rb +4 -4
  79. data/lib/mutant/mutator/node/next.rb +1 -1
  80. data/lib/mutant/mutator/node/nthref.rb +1 -1
  81. data/lib/mutant/mutator/node/or_asgn.rb +1 -1
  82. data/lib/mutant/mutator/node/regexp.rb +44 -0
  83. data/lib/mutant/mutator/node/regopt.rb +31 -0
  84. data/lib/mutant/mutator/node/resbody.rb +1 -1
  85. data/lib/mutant/mutator/node/rescue.rb +1 -3
  86. data/lib/mutant/mutator/node/return.rb +1 -1
  87. data/lib/mutant/mutator/node/send.rb +43 -3
  88. data/lib/mutant/mutator/node/send/attribute_assignment.rb +4 -1
  89. data/lib/mutant/mutator/node/send/conditional.rb +23 -0
  90. data/lib/mutant/mutator/node/send/index.rb +1 -1
  91. data/lib/mutant/mutator/node/splat.rb +1 -1
  92. data/lib/mutant/mutator/node/when.rb +1 -1
  93. data/lib/mutant/mutator/node/yield.rb +1 -1
  94. data/lib/mutant/mutator/util.rb +0 -30
  95. data/lib/mutant/mutator/util/array.rb +4 -16
  96. data/lib/mutant/parallel.rb +1 -1
  97. data/lib/mutant/parallel/worker.rb +1 -1
  98. data/lib/mutant/registry.rb +44 -0
  99. data/lib/mutant/reporter/cli/format.rb +2 -0
  100. data/lib/mutant/reporter/cli/printer.rb +2 -2
  101. data/lib/mutant/reporter/cli/printer/config.rb +0 -1
  102. data/lib/mutant/reporter/cli/printer/env_progress.rb +1 -11
  103. data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +1 -1
  104. data/lib/mutant/reporter/cli/printer/mutation_result.rb +2 -0
  105. data/lib/mutant/reporter/cli/tput.rb +1 -1
  106. data/lib/mutant/reporter/sequence.rb +3 -0
  107. data/lib/mutant/require_highjack.rb +6 -2
  108. data/lib/mutant/result.rb +1 -1
  109. data/lib/mutant/subject.rb +5 -5
  110. data/lib/mutant/subject/method/instance.rb +1 -2
  111. data/lib/mutant/util.rb +18 -0
  112. data/lib/mutant/version.rb +1 -1
  113. data/lib/mutant/zombifier.rb +5 -3
  114. data/meta/and.rb +1 -1
  115. data/meta/and_asgn.rb +1 -1
  116. data/meta/array.rb +2 -2
  117. data/meta/begin.rb +2 -2
  118. data/meta/block.rb +7 -7
  119. data/meta/block_pass.rb +1 -1
  120. data/meta/blockarg.rb +1 -1
  121. data/meta/break.rb +1 -1
  122. data/meta/case.rb +2 -2
  123. data/meta/casgn.rb +11 -2
  124. data/meta/cbase.rb +1 -1
  125. data/meta/class.rb +10 -0
  126. data/meta/const.rb +9 -1
  127. data/meta/csend.rb +8 -0
  128. data/meta/cvar.rb +1 -1
  129. data/meta/cvasgn.rb +1 -1
  130. data/meta/date.rb +4 -4
  131. data/meta/def.rb +14 -14
  132. data/meta/defined.rb +1 -1
  133. data/meta/dstr.rb +1 -1
  134. data/meta/dsym.rb +1 -1
  135. data/meta/ensure.rb +1 -1
  136. data/meta/false.rb +1 -1
  137. data/meta/float.rb +3 -3
  138. data/meta/gvar.rb +1 -1
  139. data/meta/gvasgn.rb +1 -1
  140. data/meta/hash.rb +1 -1
  141. data/meta/if.rb +17 -3
  142. data/meta/int.rb +1 -1
  143. data/meta/ivar.rb +1 -1
  144. data/meta/ivasgn.rb +14 -1
  145. data/meta/kwarg.rb +8 -0
  146. data/meta/kwbegin.rb +1 -1
  147. data/meta/kwoptarg.rb +11 -0
  148. data/meta/lvar.rb +1 -1
  149. data/meta/lvasgn.rb +1 -1
  150. data/meta/masgn.rb +1 -1
  151. data/meta/match_current_line.rb +2 -2
  152. data/meta/next.rb +1 -1
  153. data/meta/nil.rb +1 -1
  154. data/meta/nthref.rb +5 -5
  155. data/meta/op_assgn.rb +1 -1
  156. data/meta/or.rb +1 -1
  157. data/meta/or_asgn.rb +5 -5
  158. data/meta/range.rb +2 -8
  159. data/meta/redo.rb +1 -1
  160. data/meta/regexp.rb +106 -0
  161. data/meta/regexp/regexp_bol_anchor.rb +13 -0
  162. data/meta/regexp/regexp_bos_anchor.rb +26 -0
  163. data/meta/regexp/regexp_root_expression.rb +13 -0
  164. data/meta/regopt.rb +8 -0
  165. data/meta/rescue.rb +49 -4
  166. data/meta/restarg.rb +6 -9
  167. data/meta/return.rb +2 -2
  168. data/meta/self.rb +1 -1
  169. data/meta/send.rb +228 -55
  170. data/meta/str.rb +1 -1
  171. data/meta/super.rb +3 -3
  172. data/meta/{symbol.rb → sym.rb} +1 -1
  173. data/meta/true.rb +1 -1
  174. data/meta/until.rb +1 -1
  175. data/meta/while.rb +2 -2
  176. data/meta/yield.rb +1 -1
  177. data/mutant-rspec.gemspec +2 -2
  178. data/mutant.gemspec +6 -5
  179. data/spec/integration/mutant/isolation/fork_spec.rb +8 -0
  180. data/spec/integration/mutant/rspec_spec.rb +1 -1
  181. data/spec/integration/mutant/test_mutator_handles_types_spec.rb +1 -2
  182. data/spec/integrations.yml +93 -24
  183. data/spec/spec_helper.rb +12 -7
  184. data/spec/support/compress_helper.rb +1 -1
  185. data/spec/support/corpus.rb +115 -50
  186. data/spec/support/fake_actor.rb +5 -5
  187. data/spec/support/file_system.rb +1 -1
  188. data/spec/support/ice_nine_config.rb +3 -3
  189. data/spec/support/ruby_vm.rb +11 -12
  190. data/spec/support/shared_context.rb +22 -13
  191. data/spec/support/test_app.rb +1 -1
  192. data/spec/support/warning.rb +64 -0
  193. data/spec/support/warnings.yml +4 -0
  194. data/spec/support/xspec.rb +177 -0
  195. data/spec/unit/mutant/actor/env_spec.rb +2 -2
  196. data/spec/unit/mutant/actor/sender_spec.rb +1 -1
  197. data/spec/unit/mutant/ast/meta/send_spec.rb +1 -1
  198. data/spec/unit/mutant/ast/named_children_spec.rb +26 -0
  199. data/spec/unit/mutant/ast/regexp/parse_spec.rb +7 -0
  200. data/spec/unit/mutant/ast/regexp/supported_predicate_spec.rb +14 -0
  201. data/spec/unit/mutant/ast/regexp/transformer/lookup_table/table_spec.rb +19 -0
  202. data/spec/unit/mutant/ast/regexp/transformer/lookup_table_spec.rb +33 -0
  203. data/spec/unit/mutant/ast/regexp/transformer_spec.rb +19 -0
  204. data/spec/unit/mutant/ast/regexp_spec.rb +617 -0
  205. data/spec/unit/mutant/cli_spec.rb +7 -45
  206. data/spec/unit/mutant/context_spec.rb +4 -7
  207. data/spec/unit/mutant/env/{boostrap_spec.rb → bootstrap_spec.rb} +2 -2
  208. data/spec/unit/mutant/env_spec.rb +13 -16
  209. data/spec/unit/mutant/expression/namespace/{flat_spec.rb → exact_spec.rb} +0 -0
  210. data/spec/unit/mutant/integration/rspec_spec.rb +2 -2
  211. data/spec/unit/mutant/integration_spec.rb +14 -0
  212. data/spec/unit/mutant/isolation/fork_spec.rb +155 -0
  213. data/spec/unit/mutant/isolation/none_spec.rb +16 -0
  214. data/spec/unit/mutant/loader_spec.rb +1 -1
  215. data/spec/unit/mutant/matcher/methods/instance_spec.rb +2 -4
  216. data/spec/unit/mutant/meta/example/dsl_spec.rb +106 -0
  217. data/spec/unit/mutant/meta/example/verification_spec.rb +120 -0
  218. data/spec/unit/mutant/meta/example_spec.rb +32 -0
  219. data/spec/unit/mutant/mutator/node_spec.rb +37 -4
  220. data/spec/unit/mutant/mutator_spec.rb +21 -0
  221. data/spec/unit/mutant/{runner → parallel}/driver_spec.rb +0 -0
  222. data/spec/unit/mutant/parallel/master_spec.rb +13 -13
  223. data/spec/unit/mutant/registry_spec.rb +47 -0
  224. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -4
  225. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -8
  226. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -2
  227. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -8
  228. data/spec/unit/mutant/reporter/cli/printer/status_spec.rb +0 -34
  229. data/spec/unit/mutant/reporter/cli_spec.rb +0 -22
  230. data/spec/unit/mutant/repository/diff_spec.rb +6 -6
  231. data/spec/unit/mutant/require_highjack_spec.rb +38 -14
  232. data/spec/unit/mutant/result/env_spec.rb +1 -4
  233. data/spec/unit/mutant/runner_spec.rb +1 -1
  234. data/spec/unit/mutant/subject/method/instance_spec.rb +1 -1
  235. data/spec/unit/mutant/subject_spec.rb +3 -3
  236. data/spec/unit/mutant/util/one_spec.rb +20 -0
  237. data/spec/unit/mutant/zombifier_spec.rb +18 -18
  238. data/test_app/{Gemfile.rspec3.3 → Gemfile.rspec3.5} +2 -2
  239. metadata +94 -24
  240. data/TODO +0 -21
  241. data/lib/mutant/mutator/node/blockarg.rb +0 -13
  242. data/lib/mutant/mutator/node/restarg.rb +0 -13
  243. data/lib/mutant/mutator/registry.rb +0 -49
  244. data/meta/boolean.rb +0 -13
  245. data/meta/regex.rb +0 -19
  246. data/spec/unit/mutant/isolation_spec.rb +0 -104
  247. data/spec/unit/mutant/mutator/registry_spec.rb +0 -57
@@ -10,14 +10,6 @@ RSpec.describe Mutant::Reporter::CLI::Printer::StatusProgressive do
10
10
  it_reports <<-REPORT
11
11
  (00/02) 100% - killtime: 0.00s runtime: 4.00s overhead: 4.00s
12
12
  REPORT
13
-
14
- context 'on non default coverage expectation' do
15
- with(:config) { { expected_coverage: 0.1r } }
16
-
17
- it_reports <<-REPORT
18
- (00/02) 100% - killtime: 0.00s runtime: 4.00s overhead: 4.00s
19
- REPORT
20
- end
21
13
  end
22
14
 
23
15
  context 'with scheduler active on one subject' do
@@ -11,7 +11,6 @@ RSpec.describe Mutant::Reporter::CLI::Printer::Status do
11
11
  Mutant configuration:
12
12
  Matcher: #<Mutant::Matcher::Config empty>
13
13
  Integration: Mutant::Integration::Null
14
- Expect Coverage: 100.00%
15
14
  Jobs: 1
16
15
  Includes: []
17
16
  Requires: []
@@ -25,35 +24,8 @@ RSpec.describe Mutant::Reporter::CLI::Printer::Status do
25
24
  Overhead: Inf%
26
25
  Mutations/s: 0.00
27
26
  Coverage: 100.00%
28
- Expected: 100.00%
29
27
  Active subjects: 0
30
28
  REPORT
31
-
32
- context 'on non default coverage expectation' do
33
- with(:config) { { expected_coverage: 0.1r } }
34
-
35
- it_reports <<-REPORT
36
- Mutant configuration:
37
- Matcher: #<Mutant::Matcher::Config empty>
38
- Integration: Mutant::Integration::Null
39
- Expect Coverage: 10.00%
40
- Jobs: 1
41
- Includes: []
42
- Requires: []
43
- Subjects: 1
44
- Mutations: 2
45
- Results: 0
46
- Kills: 0
47
- Alive: 0
48
- Runtime: 4.00s
49
- Killtime: 0.00s
50
- Overhead: Inf%
51
- Mutations/s: 0.00
52
- Coverage: 100.00%
53
- Expected: 10.00%
54
- Active subjects: 0
55
- REPORT
56
- end
57
29
  end
58
30
 
59
31
  context 'with scheduler active on one subject' do
@@ -64,7 +36,6 @@ RSpec.describe Mutant::Reporter::CLI::Printer::Status do
64
36
  Mutant configuration:
65
37
  Matcher: #<Mutant::Matcher::Config empty>
66
38
  Integration: Mutant::Integration::Null
67
- Expect Coverage: 100.00%
68
39
  Jobs: 1
69
40
  Includes: []
70
41
  Requires: []
@@ -78,7 +49,6 @@ RSpec.describe Mutant::Reporter::CLI::Printer::Status do
78
49
  Overhead: 100.00%
79
50
  Mutations/s: 0.50
80
51
  Coverage: 100.00%
81
- Expected: 100.00%
82
52
  Active subjects: 0
83
53
  REPORT
84
54
  end
@@ -93,7 +63,6 @@ RSpec.describe Mutant::Reporter::CLI::Printer::Status do
93
63
  Mutant configuration:
94
64
  Matcher: #<Mutant::Matcher::Config empty>
95
65
  Integration: Mutant::Integration::Null
96
- Expect Coverage: 100.00%
97
66
  Jobs: 1
98
67
  Includes: []
99
68
  Requires: []
@@ -107,7 +76,6 @@ RSpec.describe Mutant::Reporter::CLI::Printer::Status do
107
76
  Overhead: 100.00%
108
77
  Mutations/s: 0.50
109
78
  Coverage: 50.00%
110
- Expected: 100.00%
111
79
  Active Jobs:
112
80
  0: evil:subject-a:d27d2
113
81
  1: evil:subject-a:d5a9d
@@ -123,7 +91,6 @@ RSpec.describe Mutant::Reporter::CLI::Printer::Status do
123
91
  Mutant configuration:
124
92
  Matcher: #<Mutant::Matcher::Config empty>
125
93
  Integration: Mutant::Integration::Null
126
- Expect Coverage: 100.00%
127
94
  Jobs: 1
128
95
  Includes: []
129
96
  Requires: []
@@ -137,7 +104,6 @@ RSpec.describe Mutant::Reporter::CLI::Printer::Status do
137
104
  Overhead: 100.00%
138
105
  Mutations/s: 0.50
139
106
  Coverage: 100.00%
140
- Expected: 100.00%
141
107
  Active Jobs:
142
108
  0: evil:subject-a:d27d2
143
109
  1: evil:subject-a:d5a9d
@@ -2,7 +2,6 @@ RSpec.describe Mutant::Reporter::CLI do
2
2
  setup_shared_context
3
3
 
4
4
  let(:object) { described_class.new(output, format) }
5
- let(:output) { StringIO.new }
6
5
 
7
6
  let(:tput) do
8
7
  instance_double(
@@ -123,23 +122,6 @@ RSpec.describe Mutant::Reporter::CLI do
123
122
  Mutant configuration:
124
123
  Matcher: #<Mutant::Matcher::Config empty>
125
124
  Integration: Mutant::Integration::Null
126
- Expect Coverage: 100.00%
127
- Jobs: 1
128
- Includes: []
129
- Requires: []
130
- REPORT
131
- end
132
-
133
- context 'with non default coverage expectation' do
134
- let(:format) { progressive_format }
135
-
136
- with(:config) { { expected_coverage: 0.1r } }
137
-
138
- it_reports(<<-REPORT)
139
- Mutant configuration:
140
- Matcher: #<Mutant::Matcher::Config empty>
141
- Integration: Mutant::Integration::Null
142
- Expect Coverage: 10.00%
143
125
  Jobs: 1
144
126
  Includes: []
145
127
  Requires: []
@@ -158,7 +140,6 @@ RSpec.describe Mutant::Reporter::CLI do
158
140
  Mutant configuration:
159
141
  Matcher: #<Mutant::Matcher::Config empty>
160
142
  Integration: Mutant::Integration::Null
161
- Expect Coverage: 100.00%
162
143
  Jobs: 1
163
144
  Includes: []
164
145
  Requires: []
@@ -172,7 +153,6 @@ RSpec.describe Mutant::Reporter::CLI do
172
153
  Overhead: 100.00%
173
154
  Mutations/s: 0.50
174
155
  Coverage: 100.00%
175
- Expected: 100.00%
176
156
  REPORT
177
157
  end
178
158
 
@@ -186,7 +166,6 @@ RSpec.describe Mutant::Reporter::CLI do
186
166
  [tput-restore]Mutant configuration:
187
167
  Matcher: #<Mutant::Matcher::Config empty>
188
168
  Integration: Mutant::Integration::Null
189
- Expect Coverage: 100.00%
190
169
  Jobs: 1
191
170
  Includes: []
192
171
  Requires: []
@@ -200,7 +179,6 @@ RSpec.describe Mutant::Reporter::CLI do
200
179
  Overhead: 100.00%
201
180
  Mutations/s: 0.50
202
181
  Coverage: 100.00%
203
- Expected: 100.00%
204
182
  Active subjects: 0
205
183
  REPORT
206
184
  end
@@ -17,12 +17,12 @@ describe Mutant::Repository::Diff do
17
17
  )
18
18
  end
19
19
 
20
- let(:pathname) { instance_double(Pathname.singleton_class, pwd: pwd) }
21
- let(:open3) { instance_double(Open3.singleton_class) }
22
- let(:kernel) { instance_double(Kernel.singleton_class) }
23
- let(:pwd) { Pathname.new('/foo') }
24
- let(:path) { Pathname.new('/foo/bar.rb') }
25
- let(:line_range) { 1..2 }
20
+ let(:pathname) { class_double(Pathname, pwd: pwd) }
21
+ let(:open3) { class_double(Open3) }
22
+ let(:kernel) { class_double(Kernel) }
23
+ let(:pwd) { Pathname.new('/foo') }
24
+ let(:path) { Pathname.new('/foo/bar.rb') }
25
+ let(:line_range) { 1..2 }
26
26
 
27
27
  subject { object.touches?(path, line_range) }
28
28
 
@@ -6,13 +6,15 @@ RSpec.describe Mutant::RequireHighjack do
6
6
  acc = require_calls
7
7
  Module.new do
8
8
  define_method(:require, &acc.method(:<<))
9
-
10
- module_function :require
11
- public :require
9
+ define_singleton_method(:require, &acc.method(:<<))
12
10
  end
13
11
  end
14
12
 
15
- def target_require(logical_name)
13
+ def singleton_require(logical_name)
14
+ target_module.require(logical_name)
15
+ end
16
+
17
+ def instance_require(logical_name)
16
18
  Object.new.extend(target_module).require(logical_name)
17
19
  end
18
20
 
@@ -23,6 +25,10 @@ RSpec.describe Mutant::RequireHighjack do
23
25
  described_class.call(target_module, highjacked_calls.method(:<<))
24
26
  end
25
27
 
28
+ it 'prevents warnings' do
29
+ expect(Mutant::WarningFilter.use(&method(:apply))).to eql([])
30
+ end
31
+
26
32
  it 'returns the original implementation from singleton' do
27
33
  expect { apply.call(logical_name) }
28
34
  .to change { require_calls }
@@ -30,18 +36,36 @@ RSpec.describe Mutant::RequireHighjack do
30
36
  .to([logical_name])
31
37
  end
32
38
 
33
- it 'does highjack target object #requires calls' do
34
- apply
35
- expect { target_require(logical_name) }
36
- .to change { highjacked_calls }
37
- .from([])
38
- .to([logical_name])
39
+ context '#require' do
40
+ it 'does highjack calls' do
41
+ apply
42
+ expect { instance_require(logical_name) }
43
+ .to change { highjacked_calls }
44
+ .from([])
45
+ .to([logical_name])
46
+ end
47
+
48
+ it 'does not call original require' do
49
+ apply
50
+ expect { instance_require(logical_name) }
51
+ .not_to change { require_calls }.from([])
52
+ end
39
53
  end
40
54
 
41
- it 'does not call original require' do
42
- apply
43
- expect { target_require(logical_name) }
44
- .not_to change { require_calls }.from([])
55
+ context '.require' do
56
+ it 'does highjack calls' do
57
+ apply
58
+ expect { singleton_require(logical_name) }
59
+ .to change { highjacked_calls }
60
+ .from([])
61
+ .to([logical_name])
62
+ end
63
+
64
+ it 'does not call original require' do
65
+ apply
66
+ expect { singleton_require(logical_name) }
67
+ .not_to change { require_calls }.from([])
68
+ end
45
69
  end
46
70
  end
47
71
  end
@@ -17,10 +17,7 @@ RSpec.describe Mutant::Result::Env do
17
17
  end
18
18
 
19
19
  let(:config) do
20
- instance_double(
21
- Mutant::Config,
22
- expected_coverage: Rational(1, 1)
23
- )
20
+ instance_double(Mutant::Config)
24
21
  end
25
22
 
26
23
  let(:subject_result) do
@@ -6,7 +6,7 @@ RSpec.describe Mutant::Runner do
6
6
  let(:delay) { instance_double(Float) }
7
7
  let(:env_result) { instance_double(Mutant::Result::Env) }
8
8
  let(:actor_env) { instance_double(Mutant::Actor::Env) }
9
- let(:kernel) { instance_double(Kernel.singleton_class) }
9
+ let(:kernel) { class_double(Kernel) }
10
10
  let(:sleep) { instance_double(Method) }
11
11
 
12
12
  let(:env) do
@@ -103,7 +103,7 @@ RSpec.describe Mutant::Subject::Method::Instance::Memoized do
103
103
  it_should_behave_like 'a command method'
104
104
  end
105
105
 
106
- describe '#mutations' do
106
+ describe '#mutations', mutant_expression: 'Mutant::Subject#mutations' do
107
107
  subject { object.mutations }
108
108
 
109
109
  let(:expected) do
@@ -71,11 +71,11 @@ RSpec.describe Mutant::Subject do
71
71
  subject { object.mutations }
72
72
 
73
73
  before do
74
- expect(Mutant::Mutator).to receive(:each).with(node).and_yield(mutation_a).and_yield(mutation_b)
74
+ expect(Mutant::Mutator).to receive(:mutate).with(node).and_return([mutation_a, mutation_b])
75
75
  end
76
76
 
77
- let(:mutation_a) { double('Mutation A') }
78
- let(:mutation_b) { double('Mutation B') }
77
+ let(:mutation_a) { instance_double(Parser::AST::Node, :mutation_a) }
78
+ let(:mutation_b) { instance_double(Parser::AST::Node, :mutation_b) }
79
79
 
80
80
  it 'generates neutral and evil mutations' do
81
81
  should eql([
@@ -0,0 +1,20 @@
1
+ RSpec.describe Mutant::Util, '.one' do
2
+ let(:first) { instance_double(Object) }
3
+ let(:array) { instance_double(Array, one?: true, first: first) }
4
+
5
+ it 'returns first element' do
6
+ expect(described_class.one(array)).to be(first)
7
+ end
8
+
9
+ it 'fails if the list is empty' do
10
+ expect { described_class.one([]) }
11
+ .to raise_error(described_class::SizeError)
12
+ .with_message('expected size to be exactly 1 but size was 0')
13
+ end
14
+
15
+ it 'fails if the list has more than one element' do
16
+ expect { described_class.one([1, 2]) }
17
+ .to raise_error(described_class::SizeError)
18
+ .with_message('expected size to be exactly 1 but size was 2')
19
+ end
20
+ end
@@ -1,14 +1,14 @@
1
1
  RSpec.describe Mutant::Zombifier do
2
2
  let(:root_require) { Pathname.new('project') }
3
-
4
- let(:pathname) do
5
- instance_double(::Pathname.singleton_class)
6
- end
3
+ let(:pathname) { class_double(Pathname) }
7
4
 
8
5
  let(:require_highjack) do
9
6
  lambda do |block|
10
7
  original = ruby_vm.method(:require)
11
- allow(ruby_vm).to receive(:require, &block)
8
+ allow(ruby_vm).to receive(:require) do |argument|
9
+ return_value = ruby_vm.expected_events.first.return_value
10
+ expect(block.call(argument)).to be(return_value)
11
+ end
12
12
  original
13
13
  end
14
14
  end
@@ -31,7 +31,8 @@ RSpec.describe Mutant::Zombifier do
31
31
  MutantSpec::RubyVM::EventExpectation::Require.new(
32
32
  expected_payload: {
33
33
  logical_name: 'project'
34
- }
34
+ },
35
+ return_value: true
35
36
  ),
36
37
  MutantSpec::RubyVM::EventExpectation::Eval.new(
37
38
  expected_payload: {
@@ -39,18 +40,21 @@ RSpec.describe Mutant::Zombifier do
39
40
  source: "module Zombie\n module Project\n end\nend",
40
41
  source_location: 'a/project.rb'
41
42
  },
42
- trigger_requires: %w[foo bar]
43
+ trigger_requires: %w[foo bar],
44
+ return_value: nil
43
45
  ),
44
46
  MutantSpec::RubyVM::EventExpectation::Require.new(
45
47
  expected_payload: {
46
48
  logical_name: 'foo'
47
49
  },
48
- trigger_requires: %w[bar]
50
+ trigger_requires: %w[bar],
51
+ return_value: true
49
52
  ),
50
53
  MutantSpec::RubyVM::EventExpectation::Require.new(
51
54
  expected_payload: {
52
55
  logical_name: 'bar'
53
- }
56
+ },
57
+ return_value: true
54
58
  ),
55
59
  MutantSpec::RubyVM::EventExpectation::Eval.new(
56
60
  expected_payload: {
@@ -58,23 +62,19 @@ RSpec.describe Mutant::Zombifier do
58
62
  source: "module Zombie\n module Bar\n end\nend",
59
63
  source_location: 'b/bar.rb'
60
64
  },
61
- trigger_requires: %w[]
65
+ trigger_requires: %w[],
66
+ return_value: nil
62
67
  ),
63
68
  MutantSpec::RubyVM::EventExpectation::Require.new(
64
69
  expected_payload: {
65
70
  logical_name: 'bar'
66
- }
71
+ },
72
+ return_value: false
67
73
  )
68
74
  ]
69
75
  )
70
76
  end
71
77
 
72
- let(:require_effects) do
73
- {
74
- 'project' => { requires: [] }
75
- }
76
- end
77
-
78
78
  let(:file_entries) do
79
79
  {
80
80
  'a/project.rb' => { file: true, contents: 'module Project; end' },
@@ -103,7 +103,7 @@ RSpec.describe Mutant::Zombifier do
103
103
  expect(apply).to be(described_class)
104
104
  end
105
105
 
106
- it 'consumes walks the VM through expected steps' do
106
+ it 'walks the VM through expected steps' do
107
107
  expect { apply }.to change(ruby_vm, :done?).from(false).to(true)
108
108
  end
109
109
 
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
- gem 'rspec', '~> 3.3.0'
3
- gem 'rspec-core', '~> 3.3.0'
2
+ gem 'rspec', '~> 3.5.0'
3
+ gem 'rspec-core', '~> 3.5.0'
4
4
  gem 'mutant', path: '../'
5
5
  gem 'mutant-rspec', path: '../'
6
6
  gem 'adamantium'
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.8.10
4
+ version: 0.8.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Schirp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-24 00:00:00.000000000 Z
11
+ date: 2016-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.3.0
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.0.2
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: 2.3.0
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.3.0.2
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: ast
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -206,20 +212,34 @@ dependencies:
206
212
  - - "~>"
207
213
  - !ruby/object:Gem::Version
208
214
  version: 0.1.5
215
+ - !ruby/object:Gem::Dependency
216
+ name: regexp_parser
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: 0.3.6
222
+ type: :runtime
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: 0.3.6
209
229
  - !ruby/object:Gem::Dependency
210
230
  name: devtools
211
231
  requirement: !ruby/object:Gem::Requirement
212
232
  requirements:
213
233
  - - "~>"
214
234
  - !ruby/object:Gem::Version
215
- version: 0.1.3
235
+ version: 0.1.4
216
236
  type: :development
217
237
  prerelease: false
218
238
  version_requirements: !ruby/object:Gem::Requirement
219
239
  requirements:
220
240
  - - "~>"
221
241
  - !ruby/object:Gem::Version
222
- version: 0.1.3
242
+ version: 0.1.4
223
243
  - !ruby/object:Gem::Dependency
224
244
  name: bundler
225
245
  requirement: !ruby/object:Gem::Requirement
@@ -255,7 +275,6 @@ executables:
255
275
  - mutant
256
276
  extensions: []
257
277
  extra_rdoc_files:
258
- - TODO
259
278
  - LICENSE
260
279
  files:
261
280
  - ".gitignore"
@@ -268,7 +287,6 @@ files:
268
287
  - LICENSE
269
288
  - README.md
270
289
  - Rakefile
271
- - TODO
272
290
  - bin/mutant
273
291
  - circle.yml
274
292
  - config/devtools.yml
@@ -295,6 +313,16 @@ files:
295
313
  - lib/mutant/ast/named_children.rb
296
314
  - lib/mutant/ast/node_predicates.rb
297
315
  - lib/mutant/ast/nodes.rb
316
+ - lib/mutant/ast/regexp.rb
317
+ - lib/mutant/ast/regexp/transformer.rb
318
+ - lib/mutant/ast/regexp/transformer/alternative.rb
319
+ - lib/mutant/ast/regexp/transformer/character_set.rb
320
+ - lib/mutant/ast/regexp/transformer/direct.rb
321
+ - lib/mutant/ast/regexp/transformer/options_group.rb
322
+ - lib/mutant/ast/regexp/transformer/quantifier.rb
323
+ - lib/mutant/ast/regexp/transformer/recursive.rb
324
+ - lib/mutant/ast/regexp/transformer/root.rb
325
+ - lib/mutant/ast/regexp/transformer/text.rb
298
326
  - lib/mutant/ast/sexp.rb
299
327
  - lib/mutant/ast/types.rb
300
328
  - lib/mutant/cli.rb
@@ -311,6 +339,8 @@ files:
311
339
  - lib/mutant/expression/parser.rb
312
340
  - lib/mutant/integration.rb
313
341
  - lib/mutant/isolation.rb
342
+ - lib/mutant/isolation/fork.rb
343
+ - lib/mutant/isolation/none.rb
314
344
  - lib/mutant/loader.rb
315
345
  - lib/mutant/matcher.rb
316
346
  - lib/mutant/matcher/chain.rb
@@ -328,6 +358,7 @@ files:
328
358
  - lib/mutant/meta.rb
329
359
  - lib/mutant/meta/example.rb
330
360
  - lib/mutant/meta/example/dsl.rb
361
+ - lib/mutant/meta/example/verification.rb
331
362
  - lib/mutant/mutation.rb
332
363
  - lib/mutant/mutator.rb
333
364
  - lib/mutant/mutator/node.rb
@@ -337,9 +368,9 @@ files:
337
368
  - lib/mutant/mutator/node/begin.rb
338
369
  - lib/mutant/mutator/node/binary.rb
339
370
  - lib/mutant/mutator/node/block.rb
340
- - lib/mutant/mutator/node/blockarg.rb
341
371
  - lib/mutant/mutator/node/break.rb
342
372
  - lib/mutant/mutator/node/case.rb
373
+ - lib/mutant/mutator/node/class.rb
343
374
  - lib/mutant/mutator/node/conditional_loop.rb
344
375
  - lib/mutant/mutator/node/const.rb
345
376
  - lib/mutant/mutator/node/define.rb
@@ -371,20 +402,21 @@ files:
371
402
  - lib/mutant/mutator/node/nthref.rb
372
403
  - lib/mutant/mutator/node/op_asgn.rb
373
404
  - lib/mutant/mutator/node/or_asgn.rb
405
+ - lib/mutant/mutator/node/regexp.rb
406
+ - lib/mutant/mutator/node/regopt.rb
374
407
  - lib/mutant/mutator/node/resbody.rb
375
408
  - lib/mutant/mutator/node/rescue.rb
376
- - lib/mutant/mutator/node/restarg.rb
377
409
  - lib/mutant/mutator/node/return.rb
378
410
  - lib/mutant/mutator/node/send.rb
379
411
  - lib/mutant/mutator/node/send/attribute_assignment.rb
380
412
  - lib/mutant/mutator/node/send/binary.rb
413
+ - lib/mutant/mutator/node/send/conditional.rb
381
414
  - lib/mutant/mutator/node/send/index.rb
382
415
  - lib/mutant/mutator/node/splat.rb
383
416
  - lib/mutant/mutator/node/super.rb
384
417
  - lib/mutant/mutator/node/when.rb
385
418
  - lib/mutant/mutator/node/yield.rb
386
419
  - lib/mutant/mutator/node/zsuper.rb
387
- - lib/mutant/mutator/registry.rb
388
420
  - lib/mutant/mutator/util.rb
389
421
  - lib/mutant/mutator/util/array.rb
390
422
  - lib/mutant/mutator/util/symbol.rb
@@ -393,6 +425,7 @@ files:
393
425
  - lib/mutant/parallel/source.rb
394
426
  - lib/mutant/parallel/worker.rb
395
427
  - lib/mutant/parser.rb
428
+ - lib/mutant/registry.rb
396
429
  - lib/mutant/reporter.rb
397
430
  - lib/mutant/reporter/cli.rb
398
431
  - lib/mutant/reporter/cli/format.rb
@@ -423,6 +456,7 @@ files:
423
456
  - lib/mutant/subject/method/instance.rb
424
457
  - lib/mutant/subject/method/singleton.rb
425
458
  - lib/mutant/test.rb
459
+ - lib/mutant/util.rb
426
460
  - lib/mutant/version.rb
427
461
  - lib/mutant/warning_filter.rb
428
462
  - lib/mutant/zombifier.rb
@@ -433,12 +467,13 @@ files:
433
467
  - meta/block.rb
434
468
  - meta/block_pass.rb
435
469
  - meta/blockarg.rb
436
- - meta/boolean.rb
437
470
  - meta/break.rb
438
471
  - meta/case.rb
439
472
  - meta/casgn.rb
440
473
  - meta/cbase.rb
474
+ - meta/class.rb
441
475
  - meta/const.rb
476
+ - meta/csend.rb
442
477
  - meta/cvar.rb
443
478
  - meta/cvasgn.rb
444
479
  - meta/date.rb
@@ -456,7 +491,9 @@ files:
456
491
  - meta/int.rb
457
492
  - meta/ivar.rb
458
493
  - meta/ivasgn.rb
494
+ - meta/kwarg.rb
459
495
  - meta/kwbegin.rb
496
+ - meta/kwoptarg.rb
460
497
  - meta/lvar.rb
461
498
  - meta/lvasgn.rb
462
499
  - meta/masgn.rb
@@ -469,7 +506,11 @@ files:
469
506
  - meta/or_asgn.rb
470
507
  - meta/range.rb
471
508
  - meta/redo.rb
472
- - meta/regex.rb
509
+ - meta/regexp.rb
510
+ - meta/regexp/regexp_bol_anchor.rb
511
+ - meta/regexp/regexp_bos_anchor.rb
512
+ - meta/regexp/regexp_root_expression.rb
513
+ - meta/regopt.rb
473
514
  - meta/rescue.rb
474
515
  - meta/restarg.rb
475
516
  - meta/return.rb
@@ -477,7 +518,7 @@ files:
477
518
  - meta/send.rb
478
519
  - meta/str.rb
479
520
  - meta/super.rb
480
- - meta/symbol.rb
521
+ - meta/sym.rb
481
522
  - meta/true.rb
482
523
  - meta/until.rb
483
524
  - meta/while.rb
@@ -485,6 +526,7 @@ files:
485
526
  - mutant-rspec.gemspec
486
527
  - mutant.gemspec
487
528
  - spec/integration/mutant/corpus_spec.rb
529
+ - spec/integration/mutant/isolation/fork_spec.rb
488
530
  - spec/integration/mutant/null_spec.rb
489
531
  - spec/integration/mutant/rspec_spec.rb
490
532
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
@@ -502,6 +544,9 @@ files:
502
544
  - spec/support/ruby_vm.rb
503
545
  - spec/support/shared_context.rb
504
546
  - spec/support/test_app.rb
547
+ - spec/support/warning.rb
548
+ - spec/support/warnings.yml
549
+ - spec/support/xspec.rb
505
550
  - spec/unit/mutant/actor/binding_spec.rb
506
551
  - spec/unit/mutant/actor/env_spec.rb
507
552
  - spec/unit/mutant/actor/mailbox_spec.rb
@@ -512,22 +557,29 @@ files:
512
557
  - spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb
513
558
  - spec/unit/mutant/ast/meta/send_spec.rb
514
559
  - spec/unit/mutant/ast/named_children_spec.rb
560
+ - spec/unit/mutant/ast/regexp/parse_spec.rb
561
+ - spec/unit/mutant/ast/regexp/supported_predicate_spec.rb
562
+ - spec/unit/mutant/ast/regexp/transformer/lookup_table/table_spec.rb
563
+ - spec/unit/mutant/ast/regexp/transformer/lookup_table_spec.rb
564
+ - spec/unit/mutant/ast/regexp/transformer_spec.rb
565
+ - spec/unit/mutant/ast/regexp_spec.rb
515
566
  - spec/unit/mutant/ast/sexp_spec.rb
516
567
  - spec/unit/mutant/ast_spec.rb
517
568
  - spec/unit/mutant/cli_spec.rb
518
569
  - spec/unit/mutant/context_spec.rb
519
570
  - spec/unit/mutant/diff_spec.rb
520
- - spec/unit/mutant/env/boostrap_spec.rb
571
+ - spec/unit/mutant/env/bootstrap_spec.rb
521
572
  - spec/unit/mutant/env_spec.rb
522
573
  - spec/unit/mutant/expression/method_spec.rb
523
574
  - spec/unit/mutant/expression/methods_spec.rb
524
- - spec/unit/mutant/expression/namespace/flat_spec.rb
575
+ - spec/unit/mutant/expression/namespace/exact_spec.rb
525
576
  - spec/unit/mutant/expression/namespace/recursive_spec.rb
526
577
  - spec/unit/mutant/expression/parser_spec.rb
527
578
  - spec/unit/mutant/expression_spec.rb
528
579
  - spec/unit/mutant/integration/rspec_spec.rb
529
580
  - spec/unit/mutant/integration_spec.rb
530
- - spec/unit/mutant/isolation_spec.rb
581
+ - spec/unit/mutant/isolation/fork_spec.rb
582
+ - spec/unit/mutant/isolation/none_spec.rb
531
583
  - spec/unit/mutant/loader_spec.rb
532
584
  - spec/unit/mutant/matcher/chain_spec.rb
533
585
  - spec/unit/mutant/matcher/compiler/subject_prefix_spec.rb
@@ -542,14 +594,19 @@ files:
542
594
  - spec/unit/mutant/matcher/null_spec.rb
543
595
  - spec/unit/mutant/matcher/scope_spec.rb
544
596
  - spec/unit/mutant/matcher/static_spec.rb
597
+ - spec/unit/mutant/meta/example/dsl_spec.rb
598
+ - spec/unit/mutant/meta/example/verification_spec.rb
599
+ - spec/unit/mutant/meta/example_spec.rb
545
600
  - spec/unit/mutant/mutation_spec.rb
546
601
  - spec/unit/mutant/mutator/node_spec.rb
547
- - spec/unit/mutant/mutator/registry_spec.rb
602
+ - spec/unit/mutant/mutator_spec.rb
603
+ - spec/unit/mutant/parallel/driver_spec.rb
548
604
  - spec/unit/mutant/parallel/master_spec.rb
549
605
  - spec/unit/mutant/parallel/source/array_spec.rb
550
606
  - spec/unit/mutant/parallel/worker_spec.rb
551
607
  - spec/unit/mutant/parallel_spec.rb
552
608
  - spec/unit/mutant/parser_spec.rb
609
+ - spec/unit/mutant/registry_spec.rb
553
610
  - spec/unit/mutant/reporter/cli/printer/config_spec.rb
554
611
  - spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb
555
612
  - spec/unit/mutant/reporter/cli/printer/env_result_spec.rb
@@ -573,19 +630,19 @@ files:
573
630
  - spec/unit/mutant/result/mutation_spec.rb
574
631
  - spec/unit/mutant/result/subject_spec.rb
575
632
  - spec/unit/mutant/result_spec.rb
576
- - spec/unit/mutant/runner/driver_spec.rb
577
633
  - spec/unit/mutant/runner/sink_spec.rb
578
634
  - spec/unit/mutant/runner_spec.rb
579
635
  - spec/unit/mutant/selector/expression_spec.rb
580
636
  - spec/unit/mutant/subject/method/instance_spec.rb
581
637
  - spec/unit/mutant/subject/method/singleton_spec.rb
582
638
  - spec/unit/mutant/subject_spec.rb
639
+ - spec/unit/mutant/util/one_spec.rb
583
640
  - spec/unit/mutant/warning_filter_spec.rb
584
641
  - spec/unit/mutant/zombifier_spec.rb
585
642
  - spec/unit/mutant_spec.rb
586
643
  - test_app/.rspec
587
- - test_app/Gemfile.rspec3.3
588
644
  - test_app/Gemfile.rspec3.4
645
+ - test_app/Gemfile.rspec3.5
589
646
  - test_app/lib/test_app.rb
590
647
  - test_app/lib/test_app/literal.rb
591
648
  - test_app/spec/spec_helper.rb
@@ -610,12 +667,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
610
667
  version: '0'
611
668
  requirements: []
612
669
  rubyforge_project:
613
- rubygems_version: 2.4.5.1
670
+ rubygems_version: 2.5.1
614
671
  signing_key:
615
672
  specification_version: 4
616
673
  summary: Mutation testing tool for ruby under MRI and Rubinius
617
674
  test_files:
618
675
  - spec/integration/mutant/corpus_spec.rb
676
+ - spec/integration/mutant/isolation/fork_spec.rb
619
677
  - spec/integration/mutant/null_spec.rb
620
678
  - spec/integration/mutant/rspec_spec.rb
621
679
  - spec/integration/mutant/test_mutator_handles_types_spec.rb
@@ -629,22 +687,29 @@ test_files:
629
687
  - spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb
630
688
  - spec/unit/mutant/ast/meta/send_spec.rb
631
689
  - spec/unit/mutant/ast/named_children_spec.rb
690
+ - spec/unit/mutant/ast/regexp/parse_spec.rb
691
+ - spec/unit/mutant/ast/regexp/supported_predicate_spec.rb
692
+ - spec/unit/mutant/ast/regexp/transformer/lookup_table/table_spec.rb
693
+ - spec/unit/mutant/ast/regexp/transformer/lookup_table_spec.rb
694
+ - spec/unit/mutant/ast/regexp/transformer_spec.rb
695
+ - spec/unit/mutant/ast/regexp_spec.rb
632
696
  - spec/unit/mutant/ast/sexp_spec.rb
633
697
  - spec/unit/mutant/ast_spec.rb
634
698
  - spec/unit/mutant/cli_spec.rb
635
699
  - spec/unit/mutant/context_spec.rb
636
700
  - spec/unit/mutant/diff_spec.rb
637
- - spec/unit/mutant/env/boostrap_spec.rb
701
+ - spec/unit/mutant/env/bootstrap_spec.rb
638
702
  - spec/unit/mutant/env_spec.rb
639
703
  - spec/unit/mutant/expression/method_spec.rb
640
704
  - spec/unit/mutant/expression/methods_spec.rb
641
- - spec/unit/mutant/expression/namespace/flat_spec.rb
705
+ - spec/unit/mutant/expression/namespace/exact_spec.rb
642
706
  - spec/unit/mutant/expression/namespace/recursive_spec.rb
643
707
  - spec/unit/mutant/expression/parser_spec.rb
644
708
  - spec/unit/mutant/expression_spec.rb
645
709
  - spec/unit/mutant/integration/rspec_spec.rb
646
710
  - spec/unit/mutant/integration_spec.rb
647
- - spec/unit/mutant/isolation_spec.rb
711
+ - spec/unit/mutant/isolation/fork_spec.rb
712
+ - spec/unit/mutant/isolation/none_spec.rb
648
713
  - spec/unit/mutant/loader_spec.rb
649
714
  - spec/unit/mutant/matcher/chain_spec.rb
650
715
  - spec/unit/mutant/matcher/compiler/subject_prefix_spec.rb
@@ -659,14 +724,19 @@ test_files:
659
724
  - spec/unit/mutant/matcher/null_spec.rb
660
725
  - spec/unit/mutant/matcher/scope_spec.rb
661
726
  - spec/unit/mutant/matcher/static_spec.rb
727
+ - spec/unit/mutant/meta/example/dsl_spec.rb
728
+ - spec/unit/mutant/meta/example/verification_spec.rb
729
+ - spec/unit/mutant/meta/example_spec.rb
662
730
  - spec/unit/mutant/mutation_spec.rb
663
731
  - spec/unit/mutant/mutator/node_spec.rb
664
- - spec/unit/mutant/mutator/registry_spec.rb
732
+ - spec/unit/mutant/mutator_spec.rb
733
+ - spec/unit/mutant/parallel/driver_spec.rb
665
734
  - spec/unit/mutant/parallel/master_spec.rb
666
735
  - spec/unit/mutant/parallel/source/array_spec.rb
667
736
  - spec/unit/mutant/parallel/worker_spec.rb
668
737
  - spec/unit/mutant/parallel_spec.rb
669
738
  - spec/unit/mutant/parser_spec.rb
739
+ - spec/unit/mutant/registry_spec.rb
670
740
  - spec/unit/mutant/reporter/cli/printer/config_spec.rb
671
741
  - spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb
672
742
  - spec/unit/mutant/reporter/cli/printer/env_result_spec.rb
@@ -690,13 +760,13 @@ test_files:
690
760
  - spec/unit/mutant/result/mutation_spec.rb
691
761
  - spec/unit/mutant/result/subject_spec.rb
692
762
  - spec/unit/mutant/result_spec.rb
693
- - spec/unit/mutant/runner/driver_spec.rb
694
763
  - spec/unit/mutant/runner/sink_spec.rb
695
764
  - spec/unit/mutant/runner_spec.rb
696
765
  - spec/unit/mutant/selector/expression_spec.rb
697
766
  - spec/unit/mutant/subject/method/instance_spec.rb
698
767
  - spec/unit/mutant/subject/method/singleton_spec.rb
699
768
  - spec/unit/mutant/subject_spec.rb
769
+ - spec/unit/mutant/util/one_spec.rb
700
770
  - spec/unit/mutant/warning_filter_spec.rb
701
771
  - spec/unit/mutant/zombifier_spec.rb
702
772
  - spec/unit/mutant_spec.rb