mutant 0.8.10 → 0.8.11

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