mutant 0.9.10 → 0.10.0

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 (254) hide show
  1. checksums.yaml +4 -4
  2. data/bin/mutant +16 -11
  3. data/lib/mutant.rb +8 -4
  4. data/lib/mutant/bootstrap.rb +14 -1
  5. data/lib/mutant/cli.rb +9 -162
  6. data/lib/mutant/cli/command.rb +196 -0
  7. data/lib/mutant/cli/command/root.rb +13 -0
  8. data/lib/mutant/cli/command/run.rb +151 -0
  9. data/lib/mutant/cli/command/subscription.rb +54 -0
  10. data/lib/mutant/expression.rb +0 -1
  11. data/lib/mutant/isolation.rb +1 -1
  12. data/lib/mutant/isolation/fork.rb +2 -2
  13. data/lib/mutant/isolation/none.rb +1 -1
  14. data/lib/mutant/license.rb +9 -35
  15. data/lib/mutant/license/subscription.rb +31 -9
  16. data/lib/mutant/license/subscription/commercial.rb +2 -4
  17. data/lib/mutant/license/subscription/opensource.rb +7 -7
  18. data/lib/mutant/matcher/config.rb +2 -0
  19. data/lib/mutant/meta/example.rb +16 -4
  20. data/lib/mutant/meta/example/dsl.rb +33 -16
  21. data/lib/mutant/meta/example/verification.rb +70 -28
  22. data/lib/mutant/minitest/coverage.rb +53 -0
  23. data/lib/mutant/mutator/node.rb +2 -2
  24. data/lib/mutant/mutator/node/block_pass.rb +29 -0
  25. data/lib/mutant/mutator/node/{dstr.rb → dynamic_literal.rb} +7 -5
  26. data/lib/mutant/mutator/node/index.rb +4 -4
  27. data/lib/mutant/mutator/node/literal/range.rb +5 -2
  28. data/lib/mutant/mutator/node/named_value/variable_assignment.rb +1 -1
  29. data/lib/mutant/mutator/node/noop.rb +1 -1
  30. data/lib/mutant/mutator/node/op_asgn.rb +15 -1
  31. data/lib/mutant/mutator/node/send.rb +25 -1
  32. data/lib/mutant/mutator/node/send/attribute_assignment.rb +1 -0
  33. data/lib/mutant/reporter/cli/printer/isolation_result.rb +9 -3
  34. data/lib/mutant/subject/method/instance.rb +1 -1
  35. data/lib/mutant/version.rb +1 -1
  36. metadata +18 -336
  37. data/.github/workflows/ci.yml +0 -121
  38. data/.gitignore +0 -38
  39. data/.rspec +0 -5
  40. data/.rubocop.yml +0 -210
  41. data/Changelog.md +0 -87
  42. data/Gemfile +0 -7
  43. data/Gemfile.lock +0 -107
  44. data/Gemfile.shared +0 -10
  45. data/README.md +0 -199
  46. data/Rakefile +0 -5
  47. data/config/devtools.yml +0 -2
  48. data/config/reek.yml +0 -139
  49. data/config/yardstick.yml +0 -2
  50. data/docs/commercial-support.md +0 -14
  51. data/docs/concurrency.md +0 -39
  52. data/docs/incremental.md +0 -76
  53. data/docs/known-problems.md +0 -30
  54. data/docs/limitations.md +0 -50
  55. data/docs/mutant-minitest.md +0 -149
  56. data/docs/mutant-rspec.md +0 -130
  57. data/docs/nomenclature.md +0 -82
  58. data/docs/reading-reports.md +0 -74
  59. data/lib/mutant/mutator/node/dsym.rb +0 -22
  60. data/meta/and.rb +0 -13
  61. data/meta/and_asgn.rb +0 -14
  62. data/meta/array.rb +0 -27
  63. data/meta/begin.rb +0 -20
  64. data/meta/block.rb +0 -199
  65. data/meta/block_pass.rb +0 -8
  66. data/meta/blockarg.rb +0 -10
  67. data/meta/break.rb +0 -9
  68. data/meta/case.rb +0 -217
  69. data/meta/casgn.rb +0 -25
  70. data/meta/cbase.rb +0 -8
  71. data/meta/class.rb +0 -12
  72. data/meta/const.rb +0 -17
  73. data/meta/csend.rb +0 -10
  74. data/meta/cvar.rb +0 -7
  75. data/meta/cvasgn.rb +0 -9
  76. data/meta/date.rb +0 -59
  77. data/meta/def.rb +0 -196
  78. data/meta/defined.rb +0 -9
  79. data/meta/dstr.rb +0 -13
  80. data/meta/dsym.rb +0 -14
  81. data/meta/ensure.rb +0 -8
  82. data/meta/false.rb +0 -7
  83. data/meta/file.rb +0 -5
  84. data/meta/float.rb +0 -37
  85. data/meta/gvar.rb +0 -7
  86. data/meta/gvasgn.rb +0 -9
  87. data/meta/hash.rb +0 -20
  88. data/meta/if.rb +0 -72
  89. data/meta/index.rb +0 -133
  90. data/meta/indexasgn.rb +0 -31
  91. data/meta/int.rb +0 -18
  92. data/meta/ivar.rb +0 -8
  93. data/meta/ivasgn.rb +0 -22
  94. data/meta/kwarg.rb +0 -10
  95. data/meta/kwbegin.rb +0 -8
  96. data/meta/kwoptarg.rb +0 -13
  97. data/meta/lambda.rb +0 -23
  98. data/meta/line.rb +0 -5
  99. data/meta/lvar.rb +0 -16
  100. data/meta/lvasgn.rb +0 -24
  101. data/meta/masgn.rb +0 -7
  102. data/meta/match_current_line.rb +0 -14
  103. data/meta/next.rb +0 -10
  104. data/meta/nil.rb +0 -5
  105. data/meta/nthref.rb +0 -14
  106. data/meta/op_assgn.rb +0 -17
  107. data/meta/or.rb +0 -13
  108. data/meta/or_asgn.rb +0 -50
  109. data/meta/range.rb +0 -65
  110. data/meta/redo.rb +0 -5
  111. data/meta/regexp.rb +0 -80
  112. data/meta/regopt.rb +0 -10
  113. data/meta/rescue.rb +0 -84
  114. data/meta/return.rb +0 -16
  115. data/meta/sclass.rb +0 -12
  116. data/meta/self.rb +0 -7
  117. data/meta/send.rb +0 -600
  118. data/meta/str.rb +0 -7
  119. data/meta/super.rb +0 -27
  120. data/meta/sym.rb +0 -8
  121. data/meta/true.rb +0 -7
  122. data/meta/until.rb +0 -16
  123. data/meta/while.rb +0 -24
  124. data/meta/yield.rb +0 -9
  125. data/mutant-minitest.gemspec +0 -22
  126. data/mutant-rspec.gemspec +0 -22
  127. data/mutant.gemspec +0 -44
  128. data/mutant.sh +0 -12
  129. data/mutant.yml +0 -6
  130. data/spec/integration/mutant/corpus_spec.rb +0 -15
  131. data/spec/integration/mutant/isolation/fork_spec.rb +0 -28
  132. data/spec/integration/mutant/minitest_spec.rb +0 -11
  133. data/spec/integration/mutant/null_spec.rb +0 -16
  134. data/spec/integration/mutant/rspec_spec.rb +0 -15
  135. data/spec/integration/mutant/test_mutator_handles_types_spec.rb +0 -9
  136. data/spec/integrations.yml +0 -63
  137. data/spec/shared/framework_integration_behavior.rb +0 -70
  138. data/spec/shared/method_matcher_behavior.rb +0 -47
  139. data/spec/spec_helper.rb +0 -90
  140. data/spec/support/corpus.rb +0 -318
  141. data/spec/support/file_system.rb +0 -62
  142. data/spec/support/ice_nine_config.rb +0 -10
  143. data/spec/support/ruby_vm.rb +0 -84
  144. data/spec/support/shared_context.rb +0 -169
  145. data/spec/support/xspec.rb +0 -183
  146. data/spec/unit/mutant/ast/find_metaclass_containing_spec.rb +0 -64
  147. data/spec/unit/mutant/ast/meta/optarg_spec.rb +0 -24
  148. data/spec/unit/mutant/ast/meta/send/proc_predicate_spec.rb +0 -30
  149. data/spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +0 -39
  150. data/spec/unit/mutant/ast/meta/send_spec.rb +0 -42
  151. data/spec/unit/mutant/ast/named_children_spec.rb +0 -89
  152. data/spec/unit/mutant/ast/sexp_spec.rb +0 -38
  153. data/spec/unit/mutant/ast_spec.rb +0 -57
  154. data/spec/unit/mutant/bootstrap_spec.rb +0 -216
  155. data/spec/unit/mutant/cli_spec.rb +0 -305
  156. data/spec/unit/mutant/clock_monotonic_spec.rb +0 -52
  157. data/spec/unit/mutant/config_spec.rb +0 -126
  158. data/spec/unit/mutant/context_spec.rb +0 -111
  159. data/spec/unit/mutant/env_spec.rb +0 -229
  160. data/spec/unit/mutant/expression/method_spec.rb +0 -62
  161. data/spec/unit/mutant/expression/methods_spec.rb +0 -66
  162. data/spec/unit/mutant/expression/namespace/exact_spec.rb +0 -28
  163. data/spec/unit/mutant/expression/namespace/recursive_spec.rb +0 -66
  164. data/spec/unit/mutant/expression/parser_spec.rb +0 -65
  165. data/spec/unit/mutant/expression_spec.rb +0 -45
  166. data/spec/unit/mutant/integration/rspec_spec.rb +0 -201
  167. data/spec/unit/mutant/integration_spec.rb +0 -150
  168. data/spec/unit/mutant/isolation/fork_spec.rb +0 -309
  169. data/spec/unit/mutant/isolation/none_spec.rb +0 -23
  170. data/spec/unit/mutant/isolation/result_spec.rb +0 -73
  171. data/spec/unit/mutant/license_spec.rb +0 -305
  172. data/spec/unit/mutant/loader_spec.rb +0 -79
  173. data/spec/unit/mutant/matcher/chain_spec.rb +0 -26
  174. data/spec/unit/mutant/matcher/compiler_spec.rb +0 -0
  175. data/spec/unit/mutant/matcher/config_spec.rb +0 -47
  176. data/spec/unit/mutant/matcher/filter_spec.rb +0 -22
  177. data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -164
  178. data/spec/unit/mutant/matcher/method/metaclass_spec.rb +0 -108
  179. data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -90
  180. data/spec/unit/mutant/matcher/methods/instance_spec.rb +0 -54
  181. data/spec/unit/mutant/matcher/methods/metaclass_spec.rb +0 -62
  182. data/spec/unit/mutant/matcher/methods/singleton_spec.rb +0 -51
  183. data/spec/unit/mutant/matcher/namespace_spec.rb +0 -39
  184. data/spec/unit/mutant/matcher/null_spec.rb +0 -12
  185. data/spec/unit/mutant/matcher/scope_spec.rb +0 -45
  186. data/spec/unit/mutant/matcher/static_spec.rb +0 -13
  187. data/spec/unit/mutant/matcher_spec.rb +0 -102
  188. data/spec/unit/mutant/meta/example/dsl_spec.rb +0 -108
  189. data/spec/unit/mutant/meta/example/verification_spec.rb +0 -154
  190. data/spec/unit/mutant/meta/example_spec.rb +0 -34
  191. data/spec/unit/mutant/mutation_spec.rb +0 -140
  192. data/spec/unit/mutant/mutator/node_spec.rb +0 -47
  193. data/spec/unit/mutant/mutator_spec.rb +0 -21
  194. data/spec/unit/mutant/parallel/driver_spec.rb +0 -126
  195. data/spec/unit/mutant/parallel/source/array_spec.rb +0 -57
  196. data/spec/unit/mutant/parallel/worker_spec.rb +0 -206
  197. data/spec/unit/mutant/parallel_spec.rb +0 -115
  198. data/spec/unit/mutant/parser_spec.rb +0 -26
  199. data/spec/unit/mutant/range_spec.rb +0 -141
  200. data/spec/unit/mutant/registry_spec.rb +0 -74
  201. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -17
  202. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -85
  203. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -45
  204. data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +0 -132
  205. data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +0 -25
  206. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +0 -153
  207. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -45
  208. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +0 -36
  209. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +0 -44
  210. data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +0 -16
  211. data/spec/unit/mutant/reporter/cli/printer_spec.rb +0 -163
  212. data/spec/unit/mutant/reporter/cli_spec.rb +0 -137
  213. data/spec/unit/mutant/reporter/null_spec.rb +0 -14
  214. data/spec/unit/mutant/reporter/sequence_spec.rb +0 -31
  215. data/spec/unit/mutant/repository/diff/ranges_spec.rb +0 -180
  216. data/spec/unit/mutant/repository/diff_spec.rb +0 -122
  217. data/spec/unit/mutant/repository/subject_filter_spec.rb +0 -30
  218. data/spec/unit/mutant/require_highjack_spec.rb +0 -73
  219. data/spec/unit/mutant/result/class_methods_spec.rb +0 -51
  220. data/spec/unit/mutant/result/env_spec.rb +0 -161
  221. data/spec/unit/mutant/result/mutation_spec.rb +0 -70
  222. data/spec/unit/mutant/result/subject_spec.rb +0 -111
  223. data/spec/unit/mutant/result/test_spec.rb +0 -14
  224. data/spec/unit/mutant/result_spec.rb +0 -33
  225. data/spec/unit/mutant/runner/sink_spec.rb +0 -174
  226. data/spec/unit/mutant/runner_spec.rb +0 -121
  227. data/spec/unit/mutant/selector/expression_spec.rb +0 -62
  228. data/spec/unit/mutant/selector/null_spec.rb +0 -17
  229. data/spec/unit/mutant/subject/method/instance_spec.rb +0 -276
  230. data/spec/unit/mutant/subject/method/metaclass_spec.rb +0 -63
  231. data/spec/unit/mutant/subject/method/singleton_spec.rb +0 -61
  232. data/spec/unit/mutant/subject_spec.rb +0 -93
  233. data/spec/unit/mutant/transform/array_spec.rb +0 -92
  234. data/spec/unit/mutant/transform/bool_spec.rb +0 -63
  235. data/spec/unit/mutant/transform/error_spec.rb +0 -132
  236. data/spec/unit/mutant/transform/exception_spec.rb +0 -44
  237. data/spec/unit/mutant/transform/hash_spec.rb +0 -236
  238. data/spec/unit/mutant/transform/index_spec.rb +0 -92
  239. data/spec/unit/mutant/transform/named_spec.rb +0 -49
  240. data/spec/unit/mutant/transform/primitive_spec.rb +0 -56
  241. data/spec/unit/mutant/transform/sequence_spec.rb +0 -98
  242. data/spec/unit/mutant/util/one_spec.rb +0 -22
  243. data/spec/unit/mutant/warnings_spec.rb +0 -89
  244. data/spec/unit/mutant/world_spec.rb +0 -63
  245. data/spec/unit/mutant/zombifier_spec.rb +0 -122
  246. data/test_app/.rspec +0 -1
  247. data/test_app/Gemfile.minitest +0 -6
  248. data/test_app/Gemfile.rspec3.8 +0 -7
  249. data/test_app/lib/test_app.rb +0 -114
  250. data/test_app/lib/test_app/literal.rb +0 -35
  251. data/test_app/lib/test_app/metaclasses.rb +0 -108
  252. data/test_app/spec/spec_helper.rb +0 -9
  253. data/test_app/spec/unit/test_app/literal_spec.rb +0 -20
  254. data/test_app/test/unit/test_app/literal_test.rb +0 -16
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :str do
4
- source '"foo"'
5
-
6
- singleton_mutations
7
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :super do
4
- source 'super'
5
-
6
- singleton_mutations
7
- mutation 'super()'
8
- end
9
-
10
- Mutant::Meta::Example.add :super do
11
- source 'super()'
12
-
13
- singleton_mutations
14
- end
15
-
16
- Mutant::Meta::Example.add :super do
17
- source 'super(foo, bar)'
18
-
19
- singleton_mutations
20
- mutation 'super()'
21
- mutation 'super(foo)'
22
- mutation 'super(bar)'
23
- mutation 'super(foo, nil)'
24
- mutation 'super(foo, self)'
25
- mutation 'super(nil, bar)'
26
- mutation 'super(self, bar)'
27
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :sym do
4
- source ':foo'
5
-
6
- singleton_mutations
7
- mutation ':foo__mutant__'
8
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :true do
4
- source 'true'
5
-
6
- mutation 'false'
7
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :until do
4
- source 'until true; foo; bar; end'
5
-
6
- singleton_mutations
7
- mutation 'until true; bar; end'
8
- mutation 'until true; foo; end'
9
- mutation 'until true; end'
10
- mutation 'until false; foo; bar; end'
11
- mutation 'until true; foo; nil; end'
12
- mutation 'until true; foo; self; end'
13
- mutation 'until true; nil; bar; end'
14
- mutation 'until true; self; bar; end'
15
- mutation 'until true; raise; end'
16
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :while do
4
- source 'while true; foo; bar; end'
5
-
6
- singleton_mutations
7
- mutation 'while true; self; bar; end'
8
- mutation 'while true; foo; self; end'
9
- mutation 'while true; bar; end'
10
- mutation 'while true; foo; end'
11
- mutation 'while true; end'
12
- mutation 'while false; foo; bar; end'
13
- mutation 'while true; foo; nil; end'
14
- mutation 'while true; nil; bar; end'
15
- mutation 'while true; raise; end'
16
- end
17
-
18
- Mutant::Meta::Example.add :while do
19
- source 'while true; end'
20
-
21
- singleton_mutations
22
- mutation 'while true; raise; end'
23
- mutation 'while false; end'
24
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :yield do
4
- source 'yield true'
5
-
6
- singleton_mutations
7
- mutation 'yield false'
8
- mutation 'yield'
9
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require File.expand_path('lib/mutant/version', __dir__)
4
-
5
- Gem::Specification.new do |gem|
6
- gem.name = 'mutant-minitest'
7
- gem.version = Mutant::VERSION.dup
8
- gem.authors = ['Markus Schirp']
9
- gem.email = %w[mbj@schirp-dso.com]
10
- gem.description = 'Minitest integration for mutant'
11
- gem.summary = gem.description
12
- gem.homepage = 'https://github.com/mbj/mutant'
13
- gem.license = 'Nonstandard'
14
-
15
- gem.require_paths = %w[lib]
16
- gem.files = `git ls-files -- lib/mutant/{minitest,/integration/minitest.rb}`.split("\n")
17
- gem.test_files = `git ls-files -- spec/integration/mutant/minitest.rb`.split("\n")
18
- gem.extra_rdoc_files = %w[LICENSE]
19
-
20
- gem.add_runtime_dependency('minitest', '~> 5.11')
21
- gem.add_runtime_dependency('mutant', "~> #{gem.version}")
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require File.expand_path('lib/mutant/version', __dir__)
4
-
5
- Gem::Specification.new do |gem|
6
- gem.name = 'mutant-rspec'
7
- gem.version = Mutant::VERSION.dup
8
- gem.authors = ['Markus Schirp']
9
- gem.email = ['mbj@schirp-dso.com']
10
- gem.description = 'Rspec integration for mutant'
11
- gem.summary = gem.description
12
- gem.homepage = 'https://github.com/mbj/mutant'
13
- gem.license = 'Nonstandard'
14
-
15
- gem.require_paths = %w[lib]
16
- gem.files = `git ls-files -- lib/mutant/integration/rspec.rb`.split("\n")
17
- gem.test_files = `git ls-files -- spec/{integration,unit}/mutant/rspec_spec.rb}`.split("\n")
18
- gem.extra_rdoc_files = %w[LICENSE]
19
-
20
- gem.add_runtime_dependency('mutant', "~> #{gem.version}")
21
- gem.add_runtime_dependency('rspec-core', '>= 3.8.0', '< 4.0.0')
22
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require File.expand_path('lib/mutant/version', __dir__)
4
-
5
- Gem::Specification.new do |gem|
6
- gem.name = 'mutant'
7
- gem.version = Mutant::VERSION.dup
8
- gem.authors = ['Markus Schirp']
9
- gem.email = ['mbj@schirp-dso.com']
10
- gem.description = 'Mutation Testing for Ruby.'
11
- gem.summary = ''
12
- gem.homepage = 'https://github.com/mbj/mutant'
13
- gem.license = 'Nonstandard'
14
-
15
- gem.require_paths = %w[lib]
16
-
17
- exclusion = `git ls-files -- lib/mutant/{integration/{minitest,rspec}.rb,minitest}`.split("\n")
18
-
19
- gem.files = `git ls-files`.split("\n") - exclusion
20
- gem.test_files = `git ls-files -- spec/{unit,integration}`.split("\n")
21
- gem.extra_rdoc_files = %w[LICENSE]
22
- gem.executables = %w[mutant]
23
-
24
- gem.add_runtime_dependency('abstract_type', '~> 0.0.7')
25
- gem.add_runtime_dependency('adamantium', '~> 0.2.0')
26
- gem.add_runtime_dependency('anima', '~> 0.3.1')
27
- gem.add_runtime_dependency('ast', '~> 2.2')
28
- gem.add_runtime_dependency('concord', '~> 0.1.5')
29
- gem.add_runtime_dependency('diff-lcs', '~> 1.3')
30
- gem.add_runtime_dependency('equalizer', '~> 0.0.9')
31
- gem.add_runtime_dependency('ice_nine', '~> 0.11.1')
32
- gem.add_runtime_dependency('memoizable', '~> 0.4.2')
33
- gem.add_runtime_dependency('mprelude', '~> 0.1.0')
34
- gem.add_runtime_dependency('parser', '~> 2.7.1')
35
- gem.add_runtime_dependency('procto', '~> 0.0.2')
36
- gem.add_runtime_dependency('unparser', '~> 0.4.8')
37
- gem.add_runtime_dependency('variable', '~> 0.0.1')
38
-
39
- gem.add_development_dependency('parallel', '~> 1.3')
40
- gem.add_development_dependency('rspec', '~> 3.9')
41
- gem.add_development_dependency('rspec-core', '~> 3.9')
42
- gem.add_development_dependency('rspec-its', '~> 1.2.0')
43
- gem.add_development_dependency('rubocop', '~> 0.79.0')
44
- end
data/mutant.sh DELETED
@@ -1,12 +0,0 @@
1
- #/usr/bin/bash -ex
2
-
3
- bundle exec mutant \
4
- --since HEAD~1 \
5
- --zombie \
6
- --ignore-subject Mutant::CLI#add_debug_options \
7
- --ignore-subject Mutant::Mutator::Node::Argument#skip? \
8
- --ignore-subject Mutant::Mutator::Node::ProcargZero#dispatch \
9
- --ignore-subject Mutant::Mutator::Node::When#mutate_conditions \
10
- --ignore-subject Mutant::Zombifier#call \
11
- -- \
12
- 'Mutant*'
data/mutant.yml DELETED
@@ -1,6 +0,0 @@
1
- ---
2
- includes:
3
- - lib
4
- integration: rspec
5
- requires:
6
- - mutant
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe 'Mutant on ruby corpus', mutant: false do
4
- MutantSpec::Corpus::Project::ALL.select(&:mutation_generation).each do |project|
5
- specify "#{project.name} does not fail on mutation generation" do
6
- project.verify_mutation_generation
7
- end
8
- end
9
-
10
- MutantSpec::Corpus::Project::ALL.select(&:mutation_coverage).each do |project|
11
- specify "#{project.name} (#{project.integration}) does have expected mutation coverage" do
12
- project.verify_mutation_coverage
13
- end
14
- end
15
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Mutant::Isolation::Fork, mutant: false do
4
- def apply(&block)
5
- Mutant::Config::DEFAULT.isolation.call(&block)
6
- end
7
-
8
- it 'isolates local writes' do
9
- a = 1
10
-
11
- expect { apply { a = 2 } }.to_not(change { a }.from(1))
12
- end
13
-
14
- it 'captures console output' do
15
- result = apply do
16
- $stdout.puts('foo')
17
- $stderr.puts('bar')
18
- end
19
-
20
- expect(result.log).to eql("foo\nbar\n")
21
- end
22
-
23
- it 'allows to read result' do
24
- result = apply { :foo }
25
-
26
- expect(result.value).to eql(:foo)
27
- end
28
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe 'minitest integration', mutant: false do
4
- let(:base_cmd) do
5
- %w[bundle exec mutant -I test -I lib --require test_app --use minitest]
6
- end
7
-
8
- let(:gemfile) { 'Gemfile.minitest' }
9
-
10
- it_behaves_like 'framework integration'
11
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe 'null integration', mutant: false do
4
-
5
- let(:base_cmd) { 'bundle exec mutant -I lib --require test_app "TestApp*"' }
6
-
7
- around do |example|
8
- Dir.chdir(TestApp.root) do
9
- example.run
10
- end
11
- end
12
-
13
- specify 'it allows to kill mutations' do
14
- expect(Kernel.system(base_cmd)).to be(false)
15
- end
16
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe 'rspec integration', mutant: false do
4
- let(:base_cmd) do
5
- %w[bundle exec mutant -I lib --require test_app --use rspec]
6
- end
7
-
8
- %w[3.8].each do |version|
9
- context "RSpec #{version}" do
10
- let(:gemfile) { "Gemfile.rspec#{version}" }
11
-
12
- it_behaves_like 'framework integration'
13
- end
14
- end
15
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe 'AST type coverage', mutant: false do
4
- specify 'mutant should not crash for any node parser can generate' do
5
- Mutant::AST::Types::ALL.each do |type|
6
- Mutant::Mutator::REGISTRY.lookup(type)
7
- end
8
- end
9
- end
@@ -1,63 +0,0 @@
1
- ---
2
- - name: rubyspec
3
- namespace: Rubyspec
4
- repo_uri: 'https://github.com/ruby/rubyspec.git'
5
- repo_ref: 249a36c2e9fcddbb208a0d618d05f6bd9a64fd17
6
- integration: mspec
7
- mutation_coverage: false
8
- mutation_generation: true
9
- exclude:
10
- - command_line/fixtures/bad_syntax.rb
11
- - command_line/fixtures/freeze_flag_required_diff_enc.rb
12
- - core/file/stat_spec.rb
13
- - core/kernel/shared/sprintf_encoding.rb
14
- - core/module/fixtures/autoload_empty.rb
15
- - core/module/fixtures/autoload_never_set.rb
16
- - core/module/fixtures/path2/load_path.rb
17
- - core/regexp/shared/new.rb
18
- - core/string/casecmp_spec.rb
19
- - core/string/encode_spec.rb
20
- - core/string/inspect_spec.rb
21
- - core/string/shared/to_sym.rb
22
- - core/symbol/casecmp_spec.rb
23
- - language/fixtures/freeze_magic_comment_required_diff_enc.rb
24
- - language/fixtures/utf16-be-nobom.rb
25
- - language/fixtures/utf16-le-nobom.rb
26
- - language/predefined/fixtures/data4.rb
27
- - language/predefined/fixtures/data_only.rb
28
- - language/source_encoding_spec.rb
29
- - library/base64/decode64_spec.rb
30
- - library/cgi/escapeHTML_spec.rb
31
- - security/cve_2010_1330_spec.rb
32
- - name: regexp_parser
33
- namespace: Regexp
34
- repo_uri: 'https://github.com/ammar/regexp_parser.git'
35
- repo_ref: 'v1.2.0'
36
- integration: rspec
37
- mutation_coverage: false
38
- mutation_generation: true
39
- exclude: []
40
- - name: auom
41
- namespace: AUOM
42
- repo_uri: 'https://github.com/mbj/auom.git'
43
- repo_ref: 'origin/master'
44
- integration: rspec
45
- mutation_coverage: true
46
- mutation_generation: true
47
- exclude: []
48
- - name: auom
49
- namespace: AUOM
50
- repo_uri: 'https://github.com/mbj/auom.git'
51
- repo_ref: 'origin/master'
52
- integration: minitest
53
- mutation_coverage: true
54
- mutation_generation: true
55
- exclude: []
56
- - name: axiom
57
- namespace: Axiom
58
- repo_uri: 'https://github.com/dkubb/axiom.git'
59
- repo_ref: 'origin/master'
60
- integration: rspec
61
- mutation_coverage: false
62
- mutation_generation: true
63
- exclude: []
@@ -1,70 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples_for 'framework integration' do
4
- def system_with_gemfile(*command)
5
- Kernel.system(
6
- {
7
- 'CI' => '1',
8
- 'BUNDLE_GEMFILE' => gemfile
9
- },
10
- *command
11
- )
12
- end
13
-
14
- around do |example|
15
- Bundler.with_clean_env do
16
- Dir.chdir(TestApp.root) do
17
- Kernel.system('bundle', 'install', '--gemfile', gemfile) || fail('Bundle install failed!')
18
- example.run
19
- end
20
- end
21
- end
22
-
23
- let(:effective_base_cmd) do
24
- if ENV.key?('MUTANT_JOBS')
25
- [*base_cmd, '--jobs', ENV.fetch('MUTANT_JOBS')]
26
- else
27
- base_cmd
28
- end
29
- end
30
-
31
- specify 'it allows to kill mutations' do
32
- expect(
33
- system_with_gemfile(
34
- *effective_base_cmd,
35
- 'TestApp::Literal#string'
36
- )
37
- ).to be(true)
38
- end
39
-
40
- specify 'it allows to exclude mutations' do
41
- expect(
42
- system_with_gemfile(
43
- *effective_base_cmd,
44
- '--ignore-subject',
45
- 'TestApp::Literal#uncovered_string',
46
- '--',
47
- 'TestApp::Literal#string',
48
- 'TestApp::Literal#uncovered_string'
49
- )
50
- ).to be(true)
51
- end
52
-
53
- specify 'fails to kill mutations when they are not covered' do
54
- expect(
55
- system_with_gemfile(
56
- *effective_base_cmd,
57
- 'TestApp::Literal#uncovered_string'
58
- )
59
- ).to be(false)
60
- end
61
-
62
- specify 'fails when some mutations are not covered' do
63
- expect(
64
- system_with_gemfile(
65
- *effective_base_cmd,
66
- 'TestApp::Literal'
67
- )
68
- ).to be(false)
69
- end
70
- end