mutant 0.9.9 → 0.9.14

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 (252) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mutant.rb +2 -4
  3. data/lib/mutant/bootstrap.rb +14 -1
  4. data/lib/mutant/cli.rb +6 -0
  5. data/lib/mutant/isolation.rb +1 -1
  6. data/lib/mutant/isolation/fork.rb +2 -2
  7. data/lib/mutant/isolation/none.rb +1 -1
  8. data/lib/mutant/matcher/config.rb +2 -0
  9. data/lib/mutant/meta/example.rb +16 -4
  10. data/lib/mutant/meta/example/dsl.rb +33 -16
  11. data/lib/mutant/meta/example/verification.rb +70 -28
  12. data/lib/mutant/minitest/coverage.rb +53 -0
  13. data/lib/mutant/mutator/node.rb +2 -2
  14. data/lib/mutant/mutator/node/block_pass.rb +29 -0
  15. data/lib/mutant/mutator/node/{dstr.rb → dynamic_literal.rb} +7 -5
  16. data/lib/mutant/mutator/node/index.rb +4 -4
  17. data/lib/mutant/mutator/node/literal/range.rb +4 -1
  18. data/lib/mutant/mutator/node/noop.rb +1 -1
  19. data/lib/mutant/mutator/node/op_asgn.rb +15 -1
  20. data/lib/mutant/mutator/node/send.rb +25 -1
  21. data/lib/mutant/mutator/node/send/attribute_assignment.rb +1 -0
  22. data/lib/mutant/reporter/cli/printer.rb +2 -2
  23. data/lib/mutant/reporter/cli/printer/isolation_result.rb +9 -3
  24. data/lib/mutant/reporter/cli/printer/mutation_result.rb +1 -1
  25. data/lib/mutant/subject/method/instance.rb +41 -2
  26. data/lib/mutant/version.rb +1 -1
  27. metadata +59 -347
  28. data/.github/workflows/ci.yml +0 -121
  29. data/.gitignore +0 -38
  30. data/.rspec +0 -5
  31. data/.rubocop.yml +0 -7
  32. data/Changelog.md +0 -81
  33. data/Gemfile +0 -7
  34. data/Gemfile.lock +0 -167
  35. data/Gemfile.shared +0 -10
  36. data/README.md +0 -178
  37. data/Rakefile +0 -5
  38. data/config/devtools.yml +0 -2
  39. data/config/reek.yml +0 -139
  40. data/config/rubocop.yml +0 -205
  41. data/config/yardstick.yml +0 -2
  42. data/docs/commercial-support.md +0 -14
  43. data/docs/concurrency.md +0 -39
  44. data/docs/incremental.md +0 -76
  45. data/docs/known-problems.md +0 -30
  46. data/docs/limitations.md +0 -50
  47. data/docs/mutant-minitest.md +0 -149
  48. data/docs/mutant-rspec.md +0 -130
  49. data/docs/nomenclature.md +0 -82
  50. data/docs/reading-reports.md +0 -74
  51. data/lib/mutant/color.rb +0 -40
  52. data/lib/mutant/diff.rb +0 -97
  53. data/lib/mutant/mutator/node/dsym.rb +0 -22
  54. data/meta/and.rb +0 -13
  55. data/meta/and_asgn.rb +0 -14
  56. data/meta/array.rb +0 -27
  57. data/meta/begin.rb +0 -20
  58. data/meta/block.rb +0 -199
  59. data/meta/block_pass.rb +0 -8
  60. data/meta/blockarg.rb +0 -10
  61. data/meta/break.rb +0 -9
  62. data/meta/case.rb +0 -217
  63. data/meta/casgn.rb +0 -25
  64. data/meta/cbase.rb +0 -8
  65. data/meta/class.rb +0 -12
  66. data/meta/const.rb +0 -17
  67. data/meta/csend.rb +0 -10
  68. data/meta/cvar.rb +0 -7
  69. data/meta/cvasgn.rb +0 -9
  70. data/meta/date.rb +0 -59
  71. data/meta/def.rb +0 -196
  72. data/meta/defined.rb +0 -9
  73. data/meta/dstr.rb +0 -13
  74. data/meta/dsym.rb +0 -14
  75. data/meta/ensure.rb +0 -8
  76. data/meta/false.rb +0 -7
  77. data/meta/file.rb +0 -5
  78. data/meta/float.rb +0 -37
  79. data/meta/gvar.rb +0 -7
  80. data/meta/gvasgn.rb +0 -9
  81. data/meta/hash.rb +0 -20
  82. data/meta/if.rb +0 -72
  83. data/meta/index.rb +0 -133
  84. data/meta/indexasgn.rb +0 -31
  85. data/meta/int.rb +0 -18
  86. data/meta/ivar.rb +0 -8
  87. data/meta/ivasgn.rb +0 -22
  88. data/meta/kwarg.rb +0 -10
  89. data/meta/kwbegin.rb +0 -8
  90. data/meta/kwoptarg.rb +0 -13
  91. data/meta/lambda.rb +0 -23
  92. data/meta/line.rb +0 -5
  93. data/meta/lvar.rb +0 -16
  94. data/meta/lvasgn.rb +0 -24
  95. data/meta/masgn.rb +0 -7
  96. data/meta/match_current_line.rb +0 -14
  97. data/meta/next.rb +0 -10
  98. data/meta/nil.rb +0 -5
  99. data/meta/nthref.rb +0 -14
  100. data/meta/op_assgn.rb +0 -17
  101. data/meta/or.rb +0 -13
  102. data/meta/or_asgn.rb +0 -50
  103. data/meta/range.rb +0 -39
  104. data/meta/redo.rb +0 -5
  105. data/meta/regexp.rb +0 -80
  106. data/meta/regopt.rb +0 -10
  107. data/meta/rescue.rb +0 -84
  108. data/meta/return.rb +0 -16
  109. data/meta/sclass.rb +0 -12
  110. data/meta/self.rb +0 -7
  111. data/meta/send.rb +0 -600
  112. data/meta/str.rb +0 -7
  113. data/meta/super.rb +0 -27
  114. data/meta/sym.rb +0 -8
  115. data/meta/true.rb +0 -7
  116. data/meta/until.rb +0 -16
  117. data/meta/while.rb +0 -24
  118. data/meta/yield.rb +0 -9
  119. data/mutant-minitest.gemspec +0 -22
  120. data/mutant-rspec.gemspec +0 -22
  121. data/mutant.gemspec +0 -41
  122. data/mutant.sh +0 -12
  123. data/mutant.yml +0 -6
  124. data/spec/integration/mutant/corpus_spec.rb +0 -15
  125. data/spec/integration/mutant/isolation/fork_spec.rb +0 -28
  126. data/spec/integration/mutant/minitest_spec.rb +0 -11
  127. data/spec/integration/mutant/null_spec.rb +0 -16
  128. data/spec/integration/mutant/rspec_spec.rb +0 -15
  129. data/spec/integration/mutant/test_mutator_handles_types_spec.rb +0 -9
  130. data/spec/integrations.yml +0 -63
  131. data/spec/shared/base_behavior.rb +0 -45
  132. data/spec/shared/framework_integration_behavior.rb +0 -70
  133. data/spec/shared/method_matcher_behavior.rb +0 -47
  134. data/spec/spec_helper.rb +0 -75
  135. data/spec/support/corpus.rb +0 -318
  136. data/spec/support/file_system.rb +0 -62
  137. data/spec/support/ice_nine_config.rb +0 -10
  138. data/spec/support/ruby_vm.rb +0 -84
  139. data/spec/support/shared_context.rb +0 -169
  140. data/spec/support/test_app.rb +0 -7
  141. data/spec/support/warnings.yml +0 -6
  142. data/spec/support/xspec.rb +0 -183
  143. data/spec/unit/mutant/ast/find_metaclass_containing_spec.rb +0 -64
  144. data/spec/unit/mutant/ast/meta/optarg_spec.rb +0 -24
  145. data/spec/unit/mutant/ast/meta/send/proc_predicate_spec.rb +0 -30
  146. data/spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +0 -39
  147. data/spec/unit/mutant/ast/meta/send_spec.rb +0 -42
  148. data/spec/unit/mutant/ast/named_children_spec.rb +0 -89
  149. data/spec/unit/mutant/ast/sexp_spec.rb +0 -38
  150. data/spec/unit/mutant/ast_spec.rb +0 -57
  151. data/spec/unit/mutant/bootstrap_spec.rb +0 -216
  152. data/spec/unit/mutant/cli_spec.rb +0 -305
  153. data/spec/unit/mutant/clock_monotonic_spec.rb +0 -52
  154. data/spec/unit/mutant/config_spec.rb +0 -126
  155. data/spec/unit/mutant/context_spec.rb +0 -111
  156. data/spec/unit/mutant/diff_spec.rb +0 -189
  157. data/spec/unit/mutant/env_spec.rb +0 -229
  158. data/spec/unit/mutant/expression/method_spec.rb +0 -62
  159. data/spec/unit/mutant/expression/methods_spec.rb +0 -66
  160. data/spec/unit/mutant/expression/namespace/exact_spec.rb +0 -28
  161. data/spec/unit/mutant/expression/namespace/recursive_spec.rb +0 -66
  162. data/spec/unit/mutant/expression/parser_spec.rb +0 -65
  163. data/spec/unit/mutant/expression_spec.rb +0 -45
  164. data/spec/unit/mutant/integration/rspec_spec.rb +0 -201
  165. data/spec/unit/mutant/integration_spec.rb +0 -150
  166. data/spec/unit/mutant/isolation/fork_spec.rb +0 -309
  167. data/spec/unit/mutant/isolation/none_spec.rb +0 -23
  168. data/spec/unit/mutant/isolation/result_spec.rb +0 -73
  169. data/spec/unit/mutant/license_spec.rb +0 -305
  170. data/spec/unit/mutant/loader_spec.rb +0 -79
  171. data/spec/unit/mutant/matcher/chain_spec.rb +0 -26
  172. data/spec/unit/mutant/matcher/compiler_spec.rb +0 -0
  173. data/spec/unit/mutant/matcher/config_spec.rb +0 -47
  174. data/spec/unit/mutant/matcher/filter_spec.rb +0 -22
  175. data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -164
  176. data/spec/unit/mutant/matcher/method/metaclass_spec.rb +0 -108
  177. data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -90
  178. data/spec/unit/mutant/matcher/methods/instance_spec.rb +0 -54
  179. data/spec/unit/mutant/matcher/methods/metaclass_spec.rb +0 -62
  180. data/spec/unit/mutant/matcher/methods/singleton_spec.rb +0 -51
  181. data/spec/unit/mutant/matcher/namespace_spec.rb +0 -39
  182. data/spec/unit/mutant/matcher/null_spec.rb +0 -12
  183. data/spec/unit/mutant/matcher/scope_spec.rb +0 -45
  184. data/spec/unit/mutant/matcher/static_spec.rb +0 -13
  185. data/spec/unit/mutant/matcher_spec.rb +0 -102
  186. data/spec/unit/mutant/meta/example/dsl_spec.rb +0 -108
  187. data/spec/unit/mutant/meta/example/verification_spec.rb +0 -154
  188. data/spec/unit/mutant/meta/example_spec.rb +0 -34
  189. data/spec/unit/mutant/mutation_spec.rb +0 -140
  190. data/spec/unit/mutant/mutator/node_spec.rb +0 -47
  191. data/spec/unit/mutant/mutator_spec.rb +0 -21
  192. data/spec/unit/mutant/parallel/driver_spec.rb +0 -126
  193. data/spec/unit/mutant/parallel/source/array_spec.rb +0 -57
  194. data/spec/unit/mutant/parallel/worker_spec.rb +0 -206
  195. data/spec/unit/mutant/parallel_spec.rb +0 -115
  196. data/spec/unit/mutant/parser_spec.rb +0 -26
  197. data/spec/unit/mutant/range_spec.rb +0 -141
  198. data/spec/unit/mutant/registry_spec.rb +0 -74
  199. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -17
  200. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -85
  201. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -45
  202. data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +0 -132
  203. data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +0 -25
  204. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +0 -153
  205. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -45
  206. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +0 -36
  207. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +0 -44
  208. data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +0 -16
  209. data/spec/unit/mutant/reporter/cli/printer_spec.rb +0 -163
  210. data/spec/unit/mutant/reporter/cli_spec.rb +0 -137
  211. data/spec/unit/mutant/reporter/null_spec.rb +0 -14
  212. data/spec/unit/mutant/reporter/sequence_spec.rb +0 -31
  213. data/spec/unit/mutant/repository/diff/ranges_spec.rb +0 -180
  214. data/spec/unit/mutant/repository/diff_spec.rb +0 -122
  215. data/spec/unit/mutant/repository/subject_filter_spec.rb +0 -30
  216. data/spec/unit/mutant/require_highjack_spec.rb +0 -73
  217. data/spec/unit/mutant/result/class_methods_spec.rb +0 -51
  218. data/spec/unit/mutant/result/env_spec.rb +0 -161
  219. data/spec/unit/mutant/result/mutation_spec.rb +0 -70
  220. data/spec/unit/mutant/result/subject_spec.rb +0 -111
  221. data/spec/unit/mutant/result/test_spec.rb +0 -14
  222. data/spec/unit/mutant/result_spec.rb +0 -33
  223. data/spec/unit/mutant/runner/sink_spec.rb +0 -174
  224. data/spec/unit/mutant/runner_spec.rb +0 -121
  225. data/spec/unit/mutant/selector/expression_spec.rb +0 -62
  226. data/spec/unit/mutant/selector/null_spec.rb +0 -17
  227. data/spec/unit/mutant/subject/method/instance_spec.rb +0 -181
  228. data/spec/unit/mutant/subject/method/metaclass_spec.rb +0 -63
  229. data/spec/unit/mutant/subject/method/singleton_spec.rb +0 -61
  230. data/spec/unit/mutant/subject_spec.rb +0 -93
  231. data/spec/unit/mutant/transform/array_spec.rb +0 -92
  232. data/spec/unit/mutant/transform/bool_spec.rb +0 -63
  233. data/spec/unit/mutant/transform/error_spec.rb +0 -132
  234. data/spec/unit/mutant/transform/exception_spec.rb +0 -44
  235. data/spec/unit/mutant/transform/hash_spec.rb +0 -236
  236. data/spec/unit/mutant/transform/index_spec.rb +0 -92
  237. data/spec/unit/mutant/transform/named_spec.rb +0 -49
  238. data/spec/unit/mutant/transform/primitive_spec.rb +0 -56
  239. data/spec/unit/mutant/transform/sequence_spec.rb +0 -98
  240. data/spec/unit/mutant/util/one_spec.rb +0 -22
  241. data/spec/unit/mutant/warnings_spec.rb +0 -89
  242. data/spec/unit/mutant/world_spec.rb +0 -63
  243. data/spec/unit/mutant/zombifier_spec.rb +0 -122
  244. data/test_app/.rspec +0 -1
  245. data/test_app/Gemfile.minitest +0 -4
  246. data/test_app/Gemfile.rspec3.8 +0 -7
  247. data/test_app/lib/test_app.rb +0 -110
  248. data/test_app/lib/test_app/literal.rb +0 -35
  249. data/test_app/lib/test_app/metaclasses.rb +0 -108
  250. data/test_app/spec/spec_helper.rb +0 -9
  251. data/test_app/spec/unit/test_app/literal_spec.rb +0 -20
  252. 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,41 +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.6')
37
- gem.add_runtime_dependency('variable', '~> 0.0.1')
38
-
39
- gem.add_development_dependency('devtools', '~> 0.1.25')
40
- gem.add_development_dependency('parallel', '~> 1.3')
41
- 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,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.shared_examples 'no block evaluation' do
4
- context 'with block' do
5
- let(:block) { -> { fail } }
6
-
7
- it 'does not evaluate block' do
8
- apply
9
- end
10
- end
11
- end
12
-
13
- RSpec.shared_examples 'requires block' do
14
- context 'without block' do
15
- let(:block) { nil }
16
-
17
- specify do
18
- expect { apply }.to raise_error(LocalJumpError)
19
- end
20
- end
21
- end
22
-
23
- RSpec.shared_examples 'returns self' do
24
- it 'returns self' do
25
- expect(apply).to be(subject)
26
- end
27
- end
28
-
29
- RSpec.shared_examples '#apply block evaluation' do
30
- it 'evaluates block and returns its wrapped result' do
31
- expect { expect(apply).to eql(block_result) }
32
- .to change(yields, :to_a)
33
- .from([])
34
- .to([value])
35
- end
36
- end
37
-
38
- RSpec.shared_examples 'Functor#fmap block evaluation' do
39
- it 'evaluates block and returns its wrapped result' do
40
- expect { expect(apply).to eql(described_class.new(block_result)) }
41
- .to change(yields, :to_a)
42
- .from([])
43
- .to([value])
44
- end
45
- end
@@ -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