mutant 0.9.7 → 0.9.12

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 (336) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mutant.rb +5 -2
  3. data/lib/mutant/ast.rb +0 -9
  4. data/lib/mutant/ast/find_metaclass_containing.rb +48 -0
  5. data/lib/mutant/ast/meta/send.rb +0 -6
  6. data/lib/mutant/bootstrap.rb +0 -36
  7. data/lib/mutant/cli.rb +5 -49
  8. data/lib/mutant/config.rb +0 -8
  9. data/lib/mutant/context.rb +0 -3
  10. data/lib/mutant/env.rb +0 -6
  11. data/lib/mutant/expression/method.rb +6 -6
  12. data/lib/mutant/expression/methods.rb +6 -6
  13. data/lib/mutant/expression/parser.rb +0 -6
  14. data/lib/mutant/integration.rb +0 -18
  15. data/lib/mutant/isolation.rb +1 -1
  16. data/lib/mutant/isolation/fork.rb +2 -24
  17. data/lib/mutant/isolation/none.rb +1 -1
  18. data/lib/mutant/license.rb +11 -0
  19. data/lib/mutant/matcher.rb +0 -14
  20. data/lib/mutant/matcher/config.rb +0 -11
  21. data/lib/mutant/matcher/method.rb +0 -31
  22. data/lib/mutant/matcher/method/instance.rb +0 -8
  23. data/lib/mutant/matcher/method/metaclass.rb +86 -0
  24. data/lib/mutant/matcher/method/singleton.rb +0 -25
  25. data/lib/mutant/matcher/methods.rb +17 -28
  26. data/lib/mutant/matcher/namespace.rb +0 -10
  27. data/lib/mutant/matcher/scope.rb +2 -4
  28. data/lib/mutant/meta/example/dsl.rb +0 -21
  29. data/lib/mutant/meta/example/verification.rb +0 -20
  30. data/lib/mutant/minitest/coverage.rb +53 -0
  31. data/lib/mutant/mutation.rb +0 -3
  32. data/lib/mutant/mutator.rb +1 -29
  33. data/lib/mutant/mutator/node.rb +1 -66
  34. data/lib/mutant/mutator/node/and_asgn.rb +0 -3
  35. data/lib/mutant/mutator/node/argument.rb +0 -15
  36. data/lib/mutant/mutator/node/arguments.rb +0 -20
  37. data/lib/mutant/mutator/node/begin.rb +0 -3
  38. data/lib/mutant/mutator/node/binary.rb +0 -23
  39. data/lib/mutant/mutator/node/block.rb +0 -15
  40. data/lib/mutant/mutator/node/block_pass.rb +29 -0
  41. data/lib/mutant/mutator/node/break.rb +0 -3
  42. data/lib/mutant/mutator/node/case.rb +0 -9
  43. data/lib/mutant/mutator/node/class.rb +0 -3
  44. data/lib/mutant/mutator/node/conditional_loop.rb +0 -3
  45. data/lib/mutant/mutator/node/const.rb +0 -3
  46. data/lib/mutant/mutator/node/define.rb +0 -11
  47. data/lib/mutant/mutator/node/defined.rb +0 -3
  48. data/lib/mutant/mutator/node/dstr.rb +0 -3
  49. data/lib/mutant/mutator/node/dsym.rb +0 -3
  50. data/lib/mutant/mutator/node/generic.rb +0 -74
  51. data/lib/mutant/mutator/node/if.rb +0 -12
  52. data/lib/mutant/mutator/node/index.rb +0 -27
  53. data/lib/mutant/mutator/node/kwbegin.rb +0 -3
  54. data/lib/mutant/mutator/node/literal.rb +0 -3
  55. data/lib/mutant/mutator/node/literal/array.rb +0 -6
  56. data/lib/mutant/mutator/node/literal/boolean.rb +0 -4
  57. data/lib/mutant/mutator/node/literal/float.rb +0 -9
  58. data/lib/mutant/mutator/node/literal/hash.rb +0 -9
  59. data/lib/mutant/mutator/node/literal/integer.rb +0 -9
  60. data/lib/mutant/mutator/node/literal/nil.rb +0 -3
  61. data/lib/mutant/mutator/node/literal/range.rb +4 -7
  62. data/lib/mutant/mutator/node/literal/regex.rb +0 -6
  63. data/lib/mutant/mutator/node/literal/string.rb +0 -3
  64. data/lib/mutant/mutator/node/literal/symbol.rb +0 -3
  65. data/lib/mutant/mutator/node/masgn.rb +0 -3
  66. data/lib/mutant/mutator/node/match_current_line.rb +0 -3
  67. data/lib/mutant/mutator/node/mlhs.rb +0 -3
  68. data/lib/mutant/mutator/node/named_value/access.rb +2 -14
  69. data/lib/mutant/mutator/node/named_value/constant_assignment.rb +0 -9
  70. data/lib/mutant/mutator/node/named_value/variable_assignment.rb +0 -6
  71. data/lib/mutant/mutator/node/next.rb +0 -3
  72. data/lib/mutant/mutator/node/noop.rb +1 -4
  73. data/lib/mutant/mutator/node/nthref.rb +0 -3
  74. data/lib/mutant/mutator/node/op_asgn.rb +0 -3
  75. data/lib/mutant/mutator/node/or_asgn.rb +0 -3
  76. data/lib/mutant/mutator/node/procarg_zero.rb +0 -3
  77. data/lib/mutant/mutator/node/regopt.rb +0 -6
  78. data/lib/mutant/mutator/node/resbody.rb +0 -6
  79. data/lib/mutant/mutator/node/rescue.rb +2 -19
  80. data/lib/mutant/mutator/node/return.rb +0 -3
  81. data/lib/mutant/mutator/node/sclass.rb +20 -0
  82. data/lib/mutant/mutator/node/send.rb +26 -61
  83. data/lib/mutant/mutator/node/send/attribute_assignment.rb +0 -9
  84. data/lib/mutant/mutator/node/send/binary.rb +0 -11
  85. data/lib/mutant/mutator/node/send/conditional.rb +0 -3
  86. data/lib/mutant/mutator/node/splat.rb +0 -3
  87. data/lib/mutant/mutator/node/super.rb +0 -3
  88. data/lib/mutant/mutator/node/when.rb +0 -19
  89. data/lib/mutant/mutator/node/yield.rb +0 -3
  90. data/lib/mutant/mutator/node/zsuper.rb +0 -3
  91. data/lib/mutant/mutator/util/array.rb +0 -6
  92. data/lib/mutant/mutator/util/symbol.rb +0 -3
  93. data/lib/mutant/parallel.rb +0 -13
  94. data/lib/mutant/parallel/driver.rb +0 -10
  95. data/lib/mutant/parallel/worker.rb +0 -22
  96. data/lib/mutant/registry.rb +2 -7
  97. data/lib/mutant/reporter/cli.rb +0 -5
  98. data/lib/mutant/reporter/cli/format.rb +0 -9
  99. data/lib/mutant/reporter/cli/printer.rb +2 -42
  100. data/lib/mutant/reporter/cli/printer/env_progress.rb +0 -15
  101. data/lib/mutant/reporter/cli/printer/isolation_result.rb +0 -18
  102. data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +0 -5
  103. data/lib/mutant/reporter/cli/printer/mutation_result.rb +1 -22
  104. data/lib/mutant/reporter/cli/printer/status_progressive.rb +0 -8
  105. data/lib/mutant/reporter/cli/printer/subject_progress.rb +0 -9
  106. data/lib/mutant/repository/diff.rb +1 -13
  107. data/lib/mutant/repository/diff/ranges.rb +0 -11
  108. data/lib/mutant/result.rb +0 -3
  109. data/lib/mutant/runner.rb +0 -18
  110. data/lib/mutant/runner/sink.rb +0 -5
  111. data/lib/mutant/subject.rb +0 -8
  112. data/lib/mutant/subject/method.rb +0 -3
  113. data/lib/mutant/subject/method/instance.rb +40 -6
  114. data/lib/mutant/subject/method/metaclass.rb +30 -0
  115. data/lib/mutant/transform.rb +0 -92
  116. data/lib/mutant/version.rb +1 -1
  117. data/lib/mutant/warnings.rb +0 -6
  118. data/lib/mutant/zombifier.rb +2 -34
  119. metadata +61 -333
  120. data/.circleci/config.yml +0 -53
  121. data/.gitignore +0 -38
  122. data/.rspec +0 -5
  123. data/.rubocop.yml +0 -7
  124. data/Changelog.md +0 -71
  125. data/Gemfile +0 -14
  126. data/Gemfile.lock +0 -167
  127. data/Gemfile.shared +0 -3
  128. data/README.md +0 -138
  129. data/Rakefile +0 -5
  130. data/config/devtools.yml +0 -2
  131. data/config/reek.yml +0 -138
  132. data/config/rubocop.yml +0 -205
  133. data/config/yardstick.yml +0 -2
  134. data/docs/commercial-support.md +0 -14
  135. data/docs/concurrency.md +0 -39
  136. data/docs/incremental.md +0 -76
  137. data/docs/known-problems.md +0 -30
  138. data/docs/limitations.md +0 -50
  139. data/docs/mutant-minitest.md +0 -149
  140. data/docs/mutant-rspec.md +0 -130
  141. data/docs/nomenclature.md +0 -82
  142. data/docs/reading-reports.md +0 -74
  143. data/lib/mutant/color.rb +0 -43
  144. data/lib/mutant/diff.rb +0 -114
  145. data/meta/and.rb +0 -15
  146. data/meta/and_asgn.rb +0 -14
  147. data/meta/array.rb +0 -30
  148. data/meta/begin.rb +0 -23
  149. data/meta/block.rb +0 -202
  150. data/meta/block_pass.rb +0 -8
  151. data/meta/blockarg.rb +0 -10
  152. data/meta/break.rb +0 -10
  153. data/meta/case.rb +0 -223
  154. data/meta/casgn.rb +0 -28
  155. data/meta/cbase.rb +0 -8
  156. data/meta/class.rb +0 -12
  157. data/meta/const.rb +0 -17
  158. data/meta/csend.rb +0 -10
  159. data/meta/cvar.rb +0 -7
  160. data/meta/cvasgn.rb +0 -10
  161. data/meta/date.rb +0 -59
  162. data/meta/def.rb +0 -203
  163. data/meta/defined.rb +0 -9
  164. data/meta/dstr.rb +0 -13
  165. data/meta/dsym.rb +0 -14
  166. data/meta/ensure.rb +0 -9
  167. data/meta/false.rb +0 -8
  168. data/meta/file.rb +0 -5
  169. data/meta/float.rb +0 -37
  170. data/meta/gvar.rb +0 -7
  171. data/meta/gvasgn.rb +0 -10
  172. data/meta/hash.rb +0 -24
  173. data/meta/if.rb +0 -77
  174. data/meta/index.rb +0 -133
  175. data/meta/indexasgn.rb +0 -31
  176. data/meta/int.rb +0 -18
  177. data/meta/ivar.rb +0 -8
  178. data/meta/ivasgn.rb +0 -23
  179. data/meta/kwarg.rb +0 -10
  180. data/meta/kwbegin.rb +0 -9
  181. data/meta/kwoptarg.rb +0 -13
  182. data/meta/lambda.rb +0 -23
  183. data/meta/line.rb +0 -5
  184. data/meta/lvar.rb +0 -16
  185. data/meta/lvasgn.rb +0 -25
  186. data/meta/masgn.rb +0 -7
  187. data/meta/match_current_line.rb +0 -15
  188. data/meta/next.rb +0 -11
  189. data/meta/nil.rb +0 -5
  190. data/meta/nthref.rb +0 -14
  191. data/meta/op_assgn.rb +0 -17
  192. data/meta/or.rb +0 -15
  193. data/meta/or_asgn.rb +0 -50
  194. data/meta/range.rb +0 -39
  195. data/meta/redo.rb +0 -5
  196. data/meta/regexp.rb +0 -81
  197. data/meta/regopt.rb +0 -10
  198. data/meta/rescue.rb +0 -90
  199. data/meta/return.rb +0 -16
  200. data/meta/self.rb +0 -7
  201. data/meta/send.rb +0 -604
  202. data/meta/str.rb +0 -7
  203. data/meta/super.rb +0 -27
  204. data/meta/sym.rb +0 -8
  205. data/meta/true.rb +0 -8
  206. data/meta/until.rb +0 -17
  207. data/meta/while.rb +0 -26
  208. data/meta/yield.rb +0 -10
  209. data/mutant-minitest.gemspec +0 -22
  210. data/mutant-rspec.gemspec +0 -22
  211. data/mutant.gemspec +0 -41
  212. data/mutant.yml +0 -6
  213. data/spec/integration/mutant/corpus_spec.rb +0 -15
  214. data/spec/integration/mutant/isolation/fork_spec.rb +0 -28
  215. data/spec/integration/mutant/minitest_spec.rb +0 -11
  216. data/spec/integration/mutant/null_spec.rb +0 -16
  217. data/spec/integration/mutant/rspec_spec.rb +0 -15
  218. data/spec/integration/mutant/test_mutator_handles_types_spec.rb +0 -9
  219. data/spec/integrations.yml +0 -63
  220. data/spec/shared/base_behavior.rb +0 -45
  221. data/spec/shared/framework_integration_behavior.rb +0 -70
  222. data/spec/shared/method_matcher_behavior.rb +0 -47
  223. data/spec/spec_helper.rb +0 -75
  224. data/spec/support/corpus.rb +0 -318
  225. data/spec/support/file_system.rb +0 -62
  226. data/spec/support/ice_nine_config.rb +0 -10
  227. data/spec/support/ruby_vm.rb +0 -84
  228. data/spec/support/shared_context.rb +0 -169
  229. data/spec/support/test_app.rb +0 -7
  230. data/spec/support/warnings.yml +0 -6
  231. data/spec/support/xspec.rb +0 -183
  232. data/spec/unit/mutant/ast/meta/optarg_spec.rb +0 -24
  233. data/spec/unit/mutant/ast/meta/send/proc_predicate_spec.rb +0 -30
  234. data/spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +0 -39
  235. data/spec/unit/mutant/ast/meta/send_spec.rb +0 -42
  236. data/spec/unit/mutant/ast/named_children_spec.rb +0 -89
  237. data/spec/unit/mutant/ast/sexp_spec.rb +0 -38
  238. data/spec/unit/mutant/ast_spec.rb +0 -57
  239. data/spec/unit/mutant/bootstrap_spec.rb +0 -216
  240. data/spec/unit/mutant/cli_spec.rb +0 -305
  241. data/spec/unit/mutant/clock_monotonic_spec.rb +0 -52
  242. data/spec/unit/mutant/config_spec.rb +0 -126
  243. data/spec/unit/mutant/context_spec.rb +0 -111
  244. data/spec/unit/mutant/diff_spec.rb +0 -189
  245. data/spec/unit/mutant/env_spec.rb +0 -229
  246. data/spec/unit/mutant/expression/method_spec.rb +0 -62
  247. data/spec/unit/mutant/expression/methods_spec.rb +0 -61
  248. data/spec/unit/mutant/expression/namespace/exact_spec.rb +0 -28
  249. data/spec/unit/mutant/expression/namespace/recursive_spec.rb +0 -66
  250. data/spec/unit/mutant/expression/parser_spec.rb +0 -65
  251. data/spec/unit/mutant/expression_spec.rb +0 -45
  252. data/spec/unit/mutant/integration/rspec_spec.rb +0 -201
  253. data/spec/unit/mutant/integration_spec.rb +0 -150
  254. data/spec/unit/mutant/isolation/fork_spec.rb +0 -309
  255. data/spec/unit/mutant/isolation/none_spec.rb +0 -23
  256. data/spec/unit/mutant/isolation/result_spec.rb +0 -73
  257. data/spec/unit/mutant/license_spec.rb +0 -293
  258. data/spec/unit/mutant/loader_spec.rb +0 -79
  259. data/spec/unit/mutant/matcher/chain_spec.rb +0 -26
  260. data/spec/unit/mutant/matcher/compiler_spec.rb +0 -0
  261. data/spec/unit/mutant/matcher/config_spec.rb +0 -47
  262. data/spec/unit/mutant/matcher/filter_spec.rb +0 -22
  263. data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -164
  264. data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -90
  265. data/spec/unit/mutant/matcher/methods/instance_spec.rb +0 -54
  266. data/spec/unit/mutant/matcher/methods/singleton_spec.rb +0 -51
  267. data/spec/unit/mutant/matcher/namespace_spec.rb +0 -37
  268. data/spec/unit/mutant/matcher/null_spec.rb +0 -12
  269. data/spec/unit/mutant/matcher/scope_spec.rb +0 -35
  270. data/spec/unit/mutant/matcher/static_spec.rb +0 -13
  271. data/spec/unit/mutant/matcher_spec.rb +0 -102
  272. data/spec/unit/mutant/meta/example/dsl_spec.rb +0 -108
  273. data/spec/unit/mutant/meta/example/verification_spec.rb +0 -154
  274. data/spec/unit/mutant/meta/example_spec.rb +0 -34
  275. data/spec/unit/mutant/mutation_spec.rb +0 -140
  276. data/spec/unit/mutant/mutator/node_spec.rb +0 -52
  277. data/spec/unit/mutant/mutator_spec.rb +0 -21
  278. data/spec/unit/mutant/parallel/driver_spec.rb +0 -126
  279. data/spec/unit/mutant/parallel/source/array_spec.rb +0 -57
  280. data/spec/unit/mutant/parallel/worker_spec.rb +0 -206
  281. data/spec/unit/mutant/parallel_spec.rb +0 -115
  282. data/spec/unit/mutant/parser_spec.rb +0 -26
  283. data/spec/unit/mutant/range_spec.rb +0 -141
  284. data/spec/unit/mutant/registry_spec.rb +0 -47
  285. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -17
  286. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -85
  287. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -45
  288. data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +0 -132
  289. data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +0 -25
  290. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +0 -153
  291. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -45
  292. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +0 -36
  293. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +0 -44
  294. data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +0 -16
  295. data/spec/unit/mutant/reporter/cli/printer_spec.rb +0 -163
  296. data/spec/unit/mutant/reporter/cli_spec.rb +0 -137
  297. data/spec/unit/mutant/reporter/null_spec.rb +0 -14
  298. data/spec/unit/mutant/reporter/sequence_spec.rb +0 -31
  299. data/spec/unit/mutant/repository/diff/ranges_spec.rb +0 -180
  300. data/spec/unit/mutant/repository/diff_spec.rb +0 -122
  301. data/spec/unit/mutant/repository/subject_filter_spec.rb +0 -30
  302. data/spec/unit/mutant/require_highjack_spec.rb +0 -73
  303. data/spec/unit/mutant/result/class_methods_spec.rb +0 -51
  304. data/spec/unit/mutant/result/env_spec.rb +0 -161
  305. data/spec/unit/mutant/result/mutation_spec.rb +0 -70
  306. data/spec/unit/mutant/result/subject_spec.rb +0 -111
  307. data/spec/unit/mutant/result/test_spec.rb +0 -14
  308. data/spec/unit/mutant/result_spec.rb +0 -33
  309. data/spec/unit/mutant/runner/sink_spec.rb +0 -174
  310. data/spec/unit/mutant/runner_spec.rb +0 -121
  311. data/spec/unit/mutant/selector/expression_spec.rb +0 -62
  312. data/spec/unit/mutant/selector/null_spec.rb +0 -17
  313. data/spec/unit/mutant/subject/method/instance_spec.rb +0 -181
  314. data/spec/unit/mutant/subject/method/singleton_spec.rb +0 -61
  315. data/spec/unit/mutant/subject_spec.rb +0 -93
  316. data/spec/unit/mutant/transform/array_spec.rb +0 -92
  317. data/spec/unit/mutant/transform/bool_spec.rb +0 -63
  318. data/spec/unit/mutant/transform/error_spec.rb +0 -132
  319. data/spec/unit/mutant/transform/exception_spec.rb +0 -44
  320. data/spec/unit/mutant/transform/hash_spec.rb +0 -236
  321. data/spec/unit/mutant/transform/index_spec.rb +0 -92
  322. data/spec/unit/mutant/transform/named_spec.rb +0 -49
  323. data/spec/unit/mutant/transform/primitive_spec.rb +0 -56
  324. data/spec/unit/mutant/transform/sequence_spec.rb +0 -98
  325. data/spec/unit/mutant/util/one_spec.rb +0 -22
  326. data/spec/unit/mutant/warnings_spec.rb +0 -89
  327. data/spec/unit/mutant/world_spec.rb +0 -63
  328. data/spec/unit/mutant/zombifier_spec.rb +0 -122
  329. data/test_app/.rspec +0 -1
  330. data/test_app/Gemfile.minitest +0 -4
  331. data/test_app/Gemfile.rspec3.8 +0 -7
  332. data/test_app/lib/test_app.rb +0 -109
  333. data/test_app/lib/test_app/literal.rb +0 -35
  334. data/test_app/spec/spec_helper.rb +0 -9
  335. data/test_app/spec/unit/test_app/literal_spec.rb +0 -20
  336. data/test_app/test/unit/test_app/literal_test.rb +0 -16
@@ -1,111 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Mutant::Result::Subject do
4
- let(:object) do
5
- described_class.new(
6
- subject: mutation_subject,
7
- mutation_results: mutation_results,
8
- tests: []
9
- )
10
- end
11
-
12
- let(:mutation_subject) do
13
- instance_double(
14
- Mutant::Subject,
15
- mutations: mutation_results.map { instance_double(Mutant::Mutation) }
16
- )
17
- end
18
-
19
- shared_context 'full coverage' do
20
- let(:mutation_results) do
21
- [
22
- instance_double(Mutant::Result::Mutation, success?: true)
23
- ]
24
- end
25
- end
26
-
27
- shared_context 'partial coverage' do
28
- let(:mutation_results) do
29
- [
30
- instance_double(Mutant::Result::Mutation, success?: false),
31
- instance_double(Mutant::Result::Mutation, success?: true)
32
- ]
33
- end
34
- end
35
-
36
- shared_context 'no coverage' do
37
- let(:mutation_results) do
38
- [
39
- instance_double(Mutant::Result::Mutation, success?: false)
40
- ]
41
- end
42
- end
43
-
44
- shared_context 'no results' do
45
- let(:mutation_results) { [] }
46
- end
47
-
48
- describe '#coverage' do
49
- subject { object.coverage }
50
-
51
- {
52
- 'full coverage' => 1r,
53
- 'partial coverage' => 0.5r,
54
- 'no coverage' => 0r,
55
- 'no results' => 1r
56
- }.each do |name, expected|
57
- context(name) do
58
- include_context(name)
59
- it { should eql(expected) }
60
- end
61
- end
62
- end
63
-
64
- describe '#amount_mutations' do
65
- subject { object.amount_mutations }
66
-
67
- {
68
- 'full coverage' => 1,
69
- 'partial coverage' => 2,
70
- 'no coverage' => 1,
71
- 'no results' => 0
72
- }.each do |name, expected|
73
- context(name) do
74
- include_context(name)
75
- it { should be(expected) }
76
- end
77
- end
78
- end
79
-
80
- describe '#amount_mutations_alive' do
81
- subject { object.amount_mutations_alive }
82
-
83
- {
84
- 'full coverage' => 0,
85
- 'partial coverage' => 1,
86
- 'no coverage' => 1,
87
- 'no results' => 0
88
- }.each do |name, expected|
89
- context(name) do
90
- include_context(name)
91
- it { should be(expected) }
92
- end
93
- end
94
- end
95
-
96
- describe '#success?' do
97
- subject { object.success? }
98
-
99
- {
100
- 'full coverage' => true,
101
- 'partial coverage' => false,
102
- 'no coverage' => false,
103
- 'no results' => true
104
- }.each do |name, expected|
105
- context(name) do
106
- include_context(name)
107
- it { should be(expected) }
108
- end
109
- end
110
- end
111
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Mutant::Result::Test::VoidValue do
4
- describe '.new' do
5
- it 'returns expected attributes' do
6
- expect(described_class.instance.to_h).to eql(
7
- output: '',
8
- passed: false,
9
- runtime: 0.0,
10
- tests: []
11
- )
12
- end
13
- end
14
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Mutant::Result do
4
- let(:object) do
5
- Class.new do
6
- include Mutant::Result, Concord.new(:runtime, :killtime)
7
-
8
- def collection
9
- [[1]]
10
- end
11
-
12
- sum :length, :collection
13
- end.new(3.0, 1.0)
14
- end
15
-
16
- describe '.included' do
17
- it 'includes mixin to freeze instances' do
18
- expect(object.frozen?).to be(true)
19
- end
20
-
21
- it 'it makes DSL methods from Mutant::Result available' do
22
- expect(object.length).to be(1)
23
- end
24
- end
25
-
26
- describe '#overhead' do
27
- subject { object.overhead }
28
-
29
- it 'returns difference between runtime and killtime' do
30
- should eql(2.0)
31
- end
32
- end
33
- end
@@ -1,174 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe Mutant::Runner::Sink do
4
- setup_shared_context
5
-
6
- shared_context 'one result' do
7
- before do
8
- object.result(mutation_a_result)
9
- end
10
- end
11
-
12
- shared_context 'two results' do
13
- before do
14
- object.result(mutation_a_result)
15
- object.result(mutation_b_result)
16
- end
17
- end
18
-
19
- let(:object) { described_class.new(env) }
20
-
21
- before do
22
- allow(Mutant::Timer).to receive_messages(now: Mutant::Timer.now)
23
- end
24
-
25
- describe '#result' do
26
- subject { object.result(mutation_a_result) }
27
-
28
- it 'aggregates results in #status' do
29
- subject
30
- object.result(mutation_b_result)
31
- expect(object.status).to eql(
32
- Mutant::Result::Env.new(
33
- env: env,
34
- runtime: 0.0,
35
- subject_results: [subject_a_result]
36
- )
37
- )
38
- end
39
-
40
- it_should_behave_like 'a command method'
41
- end
42
-
43
- describe '#status' do
44
- subject { object.status }
45
-
46
- context 'no results' do
47
- let(:expected_status) do
48
- Mutant::Result::Env.new(
49
- env: env,
50
- runtime: 0.0,
51
- subject_results: []
52
- )
53
- end
54
-
55
- it { should eql(expected_status) }
56
- end
57
-
58
- context 'one result' do
59
- include_context 'one result'
60
-
61
- with(:subject_a_result) { { mutation_results: [mutation_a_result] } }
62
-
63
- let(:expected_status) do
64
- Mutant::Result::Env.new(
65
- env: env,
66
- runtime: 0.0,
67
- subject_results: [subject_a_result]
68
- )
69
- end
70
-
71
- it { should eql(expected_status) }
72
- end
73
-
74
- context 'two results' do
75
- include_context 'two results'
76
-
77
- let(:expected_status) do
78
- Mutant::Result::Env.new(
79
- env: env,
80
- runtime: 0.0,
81
- subject_results: [subject_a_result]
82
- )
83
- end
84
-
85
- it { should eql(expected_status) }
86
- end
87
- end
88
-
89
- describe '#stop?' do
90
- subject { object.stop? }
91
-
92
- context 'without fail fast' do
93
- context 'no results' do
94
- it { should be(false) }
95
- end
96
-
97
- context 'one result' do
98
- include_context 'one result'
99
-
100
- context 'when result is successful' do
101
- it { should be(false) }
102
- end
103
-
104
- context 'when result failed' do
105
- with(:mutation_a_test_result) { { passed: true } }
106
-
107
- it { should be(false) }
108
- end
109
- end
110
-
111
- context 'two results' do
112
- include_context 'two results'
113
-
114
- context 'when results are successful' do
115
- it { should be(false) }
116
- end
117
-
118
- context 'when first result is unsuccessful' do
119
- with(:mutation_a_test_result) { { passed: true } }
120
-
121
- it { should be(false) }
122
- end
123
-
124
- context 'when second result is unsuccessful' do
125
- with(:mutation_b_test_result) { { passed: true } }
126
-
127
- it { should be(false) }
128
- end
129
- end
130
- end
131
-
132
- context 'with fail fast' do
133
- with(:config) { { fail_fast: true } }
134
-
135
- context 'no results' do
136
- it { should be(false) }
137
- end
138
-
139
- context 'one result' do
140
- include_context 'one result'
141
-
142
- context 'when result is successful' do
143
- it { should be(false) }
144
- end
145
-
146
- context 'when result failed' do
147
- with(:mutation_a_test_result) { { passed: true } }
148
-
149
- it { should be(true) }
150
- end
151
- end
152
-
153
- context 'two results' do
154
- include_context 'two results'
155
-
156
- context 'when results are successful' do
157
- it { should be(false) }
158
- end
159
-
160
- context 'when first result is unsuccessful' do
161
- with(:mutation_a_test_result) { { passed: true } }
162
-
163
- it { should be(true) }
164
- end
165
-
166
- context 'when second result is unsuccessful' do
167
- with(:mutation_b_test_result) { { passed: true } }
168
-
169
- it { should be(true) }
170
- end
171
- end
172
- end
173
- end
174
- end
@@ -1,121 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Mutant::Runner do
4
- describe '.call' do
5
- let(:condition_variable) { class_double(ConditionVariable) }
6
- let(:delay) { instance_double(Float) }
7
- let(:driver) { instance_double(Mutant::Parallel::Driver) }
8
- let(:env_result) { instance_double(Mutant::Result::Env) }
9
- let(:kernel) { class_double(Kernel) }
10
- let(:mutex) { class_double(Mutex) }
11
- let(:processor) { instance_double(Method) }
12
- let(:reporter) { instance_double(Mutant::Reporter, delay: delay) }
13
- let(:thread) { class_double(Thread) }
14
-
15
- let(:env) do
16
- instance_double(
17
- Mutant::Env,
18
- config: config,
19
- mutations: [],
20
- world: world
21
- )
22
- end
23
-
24
- let(:config) do
25
- instance_double(
26
- Mutant::Config,
27
- jobs: 1,
28
- reporter: reporter
29
- )
30
- end
31
-
32
- let(:world) do
33
- instance_double(
34
- Mutant::World,
35
- condition_variable: condition_variable,
36
- kernel: kernel,
37
- mutex: mutex,
38
- thread: thread
39
- )
40
- end
41
-
42
- let(:status_a) do
43
- instance_double(
44
- Mutant::Parallel::Status,
45
- done?: false
46
- )
47
- end
48
-
49
- let(:status_b) do
50
- instance_double(
51
- Mutant::Parallel::Status,
52
- done?: true,
53
- payload: env_result
54
- )
55
- end
56
-
57
- let(:parallel_config) do
58
- Mutant::Parallel::Config.new(
59
- condition_variable: condition_variable,
60
- jobs: 1,
61
- mutex: mutex,
62
- processor: processor,
63
- sink: Mutant::Runner::Sink.new(env),
64
- source: Mutant::Parallel::Source::Array.new(env.mutations),
65
- thread: thread
66
- )
67
- end
68
-
69
- def apply
70
- described_class.apply(env)
71
- end
72
-
73
- let(:raw_expectations) do
74
- [
75
- {
76
- receiver: reporter,
77
- selector: :start,
78
- arguments: [env]
79
- },
80
- {
81
- receiver: env,
82
- selector: :method,
83
- arguments: [:kill],
84
- reaction: { return: processor }
85
- },
86
- {
87
- receiver: Mutant::Parallel,
88
- selector: :async,
89
- arguments: [parallel_config],
90
- reaction: { return: driver }
91
- },
92
- {
93
- receiver: driver,
94
- selector: :wait_timeout,
95
- arguments: [delay],
96
- reaction: { return: status_a }
97
- },
98
- {
99
- receiver: reporter,
100
- selector: :progress,
101
- arguments: [status_a]
102
- },
103
- {
104
- receiver: driver,
105
- selector: :wait_timeout,
106
- arguments: [delay],
107
- reaction: { return: status_b }
108
- },
109
- {
110
- receiver: reporter,
111
- selector: :report,
112
- arguments: [env_result]
113
- }
114
- ]
115
- end
116
-
117
- it 'returns env result' do
118
- verify_events { expect(apply).to eql(Mutant::Either::Right.new(env_result)) }
119
- end
120
- end
121
- end