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,82 +0,0 @@
1
- Nomenclature
2
- ============
3
-
4
- The following explains several nouns you may experience in mutant's documentation.
5
- It's a good idea to familiarize yourself before moving on.
6
-
7
- ## AST
8
-
9
- Acronym for [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree)
10
- and the level of abstraction mutant operates on.
11
-
12
- ## Subject
13
-
14
- An addressable piece of code to be targeted for mutation testing.
15
-
16
- Mutant currently supports the following subjects:
17
-
18
- * Instance methods
19
- * Singleton (class) methods
20
-
21
- Other subjects (constants, class bodies for DSLs, ...) are possible but aren't
22
- implemented in the OSS version.
23
-
24
- ## Mutation operator
25
-
26
- A transformation applied to the AST of a subject. Mutant knows the following high level operator
27
- classes:
28
-
29
- * Semantic Reduction
30
- * Orthogonal Replacement
31
- * [Noop](#neutral-noop-tests)
32
-
33
- An exhaustive list can be found in the [mutant-meta](https://github.com/mbj/mutant/tree/master/meta)
34
- subdirectory of the source.
35
-
36
- ## Mutation
37
-
38
- The result of applying a mutation operator to the AST of a subject. A mutation represents a
39
- hypothesis that ideally gets falsified by the tests.
40
-
41
- ## Insertion
42
-
43
- The process of inserting a mutation into the runtime environment.
44
- Mutant currently supports insertion via dynamically created monkeypatches.
45
-
46
- Other insertion strategies (such as "boot time") are possible but aren't implemented
47
- in the OSS version.
48
-
49
- ## Isolation
50
-
51
- The attempt to isolate the (side) effects of killing a mutation via an integration
52
- to prevent a mutation leaking into adjacent concurrent, or future mutations.
53
-
54
- Examples of sources for leaks are
55
-
56
- * Global variable writes
57
- * Thread local writes
58
- * DB State
59
- * File system
60
-
61
- Natively, mutant offers fork isolation. This works for any state within the executing
62
- Ruby process. For all state reachable via IO, it's the test author's responsibility to
63
- provide proper isolation.
64
-
65
- ## Integration
66
-
67
- The method used to determine if a specific inserted mutation is covered by tests.
68
-
69
- Currently mutant supports integrations for:
70
-
71
- * [mutant-rspec](/docs/mutant-rspec.md) for [rspec](https://rspec.info)
72
- * [mutant-minitest](/docs/mutant-minitest.md) for [minitest](https://github.com/seattlerb/minitest)
73
-
74
- ## Report
75
-
76
- Mutant currently provides two different reporters:
77
-
78
- * Progress (printed during mutation testing).
79
- * Summary (printed at the end of a finished analysis run)
80
-
81
- A reporter producing a machine readable report does not exist in the OSS version
82
- at the time of writing this documentation.
@@ -1,74 +0,0 @@
1
- Reading Reports
2
- ===============
3
-
4
- Mutation output is grouped by selection groups. Each group contains three sections:
5
-
6
- 1. An identifier for the current group.
7
-
8
- **Format**:
9
-
10
- ```text
11
- [SUBJECT EXPRESSION]:[SOURCE LOCATION]:[LINENO]
12
- ```
13
-
14
- **Example**:
15
-
16
- ```text
17
- Book#add_page:Book#add_page:/home/dev/mutant-examples/lib/book.rb:18
18
- ```
19
-
20
- 2. A list of specs that mutant ran to try to kill mutations for the current group.
21
-
22
- **Format**:
23
-
24
- ```text
25
- - [INTEGRATION]:0:[SPEC LOCATION]:[SPEC DESCRIPTION]
26
- - [INTEGRATION]:1:[SPEC LOCATION]:[SPEC DESCRIPTION]
27
- ```
28
-
29
- **Example**:
30
-
31
- ```text
32
- - rspec:0:./spec/unit/book_spec.rb:9/Book#add_page should return self
33
- - rspec:1:./spec/unit/book_spec.rb:13/Book#add_page should add page to book
34
- ```
35
-
36
- 3. A list of unkilled mutations diffed against the original unparsed source
37
-
38
- **Format**:
39
-
40
- ```text
41
- [MUTATION TYPE]:[SUBJECT EXPRESSION]:[SOURCE LOCATION]:[SOURCE LINENO]:[IDENTIFIER]
42
- [DIFF]
43
- -----------------------
44
- ```
45
-
46
- - `[MUTATION TYPE]` will be one of the following:
47
- - `evil` - a mutation of your source was not killed by your tests
48
- - `neutral` your original source was injected and one or more tests failed
49
- - `[IDENTIFIER]` - Unique identifier for this mutation
50
-
51
- **Example**:
52
-
53
- ```diff
54
- evil:Book#add_page:Book#add_page:/home/dev/mutant-examples/lib/book.rb:18:01f69
55
- @@ -1,6 +1,6 @@
56
- def add_page(page)
57
- - @pages << page
58
- + @pages
59
- @index[page.number] = page
60
- self
61
- end
62
- -----------------------
63
- evil:Book#add_page:Book#add_page:/home/dev/mutant-examples/lib/book.rb:18:b1ff2
64
- @@ -1,6 +1,6 @@
65
- def add_page(page)
66
- - @pages << page
67
- + self
68
- @index[page.number] = page
69
- self
70
- end
71
- -----------------------
72
- ```
73
-
74
- At this time no machine readable output exists in the opensourced versions of mutant.
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Mutant
4
- class Mutator
5
- class Node
6
-
7
- # Dsym mutator
8
- class Dsym < Generic
9
-
10
- handle(:dsym)
11
-
12
- private
13
-
14
- def dispatch
15
- super()
16
- emit_singletons
17
- end
18
-
19
- end # Dsym
20
- end # Node
21
- end # Mutator
22
- end # Mutant
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :and do
4
- source 'true and false'
5
-
6
- singleton_mutations
7
- mutation 'true'
8
- mutation 'false'
9
- mutation 'true or false'
10
- mutation 'false and false'
11
- mutation 'true and true'
12
- mutation '!true and false'
13
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :and_asgn do
4
- source 'a &&= 1'
5
-
6
- singleton_mutations
7
-
8
- mutation 'a__mutant__ &&= 1'
9
- mutation 'a &&= nil'
10
- mutation 'a &&= 0'
11
- mutation 'a &&= -1'
12
- mutation 'a &&= 2'
13
- mutation 'a &&= self'
14
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :array do
4
- source '[true]'
5
-
6
- singleton_mutations
7
- mutation 'true'
8
- mutation '[false]'
9
- mutation '[]'
10
- end
11
-
12
- Mutant::Meta::Example.add :array do
13
- source '[true, false]'
14
-
15
- singleton_mutations
16
-
17
- # Mutation of each element in array
18
- mutation '[false, false]'
19
- mutation '[true, true]'
20
-
21
- # Remove each element of array once
22
- mutation '[true]'
23
- mutation '[false]'
24
-
25
- # Empty array
26
- mutation '[]'
27
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :begin do
4
-
5
- source 'true; false'
6
- # Mutation of each statement in block
7
- mutation 'true; true'
8
- mutation 'false; false'
9
-
10
- # Delete each statement
11
- mutation 'true'
12
- mutation 'false'
13
- end
14
-
15
- Mutant::Meta::Example.add :begin do
16
-
17
- source s(:begin, s(:true))
18
- # Mutation of each statement in block
19
- mutation s(:begin, s(:false))
20
- end
@@ -1,199 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Mutant::Meta::Example.add :block do
4
- source 'foo { a; b }'
5
-
6
- singleton_mutations
7
- mutation 'foo { a }'
8
- mutation 'foo { b }'
9
- mutation 'foo {}'
10
- mutation 'foo { raise }'
11
- mutation 'foo { a; nil }'
12
- mutation 'foo { a; self }'
13
- mutation 'foo { nil; b }'
14
- mutation 'foo { self; b }'
15
- mutation 'foo'
16
- mutation 'a; b'
17
- end
18
-
19
- Mutant::Meta::Example.add :block do
20
- source 'foo { |a, b| }'
21
-
22
- singleton_mutations
23
- mutation 'foo'
24
- mutation 'foo { |a, b| raise }'
25
- mutation 'foo { |a, _b| }'
26
- mutation 'foo { |_a, b| }'
27
- mutation 'foo { |a, | }'
28
- mutation 'foo { |b, | }'
29
- mutation 'foo { || }'
30
- end
31
-
32
- Mutant::Meta::Example.add :block do
33
- source 'foo { |(a, b), c| }'
34
-
35
- singleton_mutations
36
- mutation 'foo { || }'
37
- mutation 'foo { |a, b, c| }'
38
- mutation 'foo { |(a, b), c| raise }'
39
- mutation 'foo { |(a), c| }'
40
- mutation 'foo { |(b), c| }'
41
- mutation 'foo { |c, | }'
42
- mutation 'foo { |(_a, b), c| }'
43
- mutation 'foo { |(a, _b), c| }'
44
- mutation 'foo { |(a, b), _c| }'
45
- mutation 'foo'
46
- end
47
-
48
- Mutant::Meta::Example.add :block do
49
- source 'foo(a, b) {}'
50
-
51
- singleton_mutations
52
- mutation 'foo(a, nil) {}'
53
- mutation 'foo(nil, b) {}'
54
- mutation 'foo(self, b) {}'
55
- mutation 'foo(a, self) {}'
56
- mutation 'foo(a, b)'
57
- mutation 'foo(a, b) { raise }'
58
- mutation 'foo(a) {}'
59
- mutation 'foo(b) {}'
60
- mutation 'foo {}'
61
- end
62
-
63
- Mutant::Meta::Example.add :block do
64
- source 'foo { |_a| }'
65
-
66
- singleton_mutations
67
- mutation 'foo { || }'
68
- mutation 'foo { |_a| raise }'
69
- mutation 'foo'
70
- end
71
-
72
- Mutant::Meta::Example.add :block do
73
- source 'foo { |a| }'
74
-
75
- singleton_mutations
76
- mutation 'foo { || }'
77
- mutation 'foo { |a| raise }'
78
- mutation 'foo { |_a| }'
79
- mutation 'foo'
80
- end
81
-
82
- Mutant::Meta::Example.add :block do
83
- source 'foo { |a| }'
84
-
85
- singleton_mutations
86
- mutation 'foo { || }'
87
- mutation 'foo { |a| raise }'
88
- mutation 'foo { |_a| }'
89
- mutation 'foo'
90
- end
91
-
92
- Mutant::Meta::Example.add :block do
93
- source 'foo { bar(nil) }'
94
-
95
- singleton_mutations
96
- mutation 'foo'
97
- mutation 'foo { bar }'
98
- mutation 'foo { nil }'
99
- mutation 'foo {}'
100
- mutation 'foo { self }'
101
- mutation 'foo { raise }'
102
- mutation 'foo.bar(nil)'
103
- mutation 'bar(nil)'
104
- end
105
-
106
- Mutant::Meta::Example.add :block do
107
- source 'foo { self << true }'
108
-
109
- singleton_mutations
110
- mutation 'foo { self << false }'
111
- mutation 'foo { nil << true }'
112
- mutation 'foo { nil }'
113
- mutation 'foo { self }'
114
- mutation 'foo { true }'
115
- mutation 'self << true'
116
- mutation 'foo << true'
117
- mutation 'foo { raise }'
118
- mutation 'foo { }'
119
- mutation 'foo'
120
- end
121
-
122
- Mutant::Meta::Example.add :block do
123
- source 'foo { next if true }'
124
-
125
- singleton_mutations
126
- mutation 'foo'
127
- mutation 'foo { }'
128
- mutation 'foo { self }'
129
- mutation 'foo { nil }'
130
- mutation 'foo { raise }'
131
- mutation 'foo { self if true }'
132
- mutation 'foo { nil if true }'
133
- mutation 'foo { break if true }'
134
- mutation 'foo { next if !true }'
135
- mutation 'foo { next if false }'
136
- mutation 'foo { next }'
137
- end
138
-
139
- Mutant::Meta::Example.add :block do
140
- source 'foo { next }'
141
-
142
- singleton_mutations
143
- mutation 'foo { nil }'
144
- mutation 'foo { raise }'
145
- mutation 'foo { self }'
146
- mutation 'foo { break }'
147
- mutation 'foo { }'
148
- mutation 'foo'
149
- end
150
-
151
- Mutant::Meta::Example.add :block do
152
- source 'foo { break if true }'
153
-
154
- singleton_mutations
155
- mutation 'foo'
156
- mutation 'foo { }'
157
- mutation 'foo { self }'
158
- mutation 'foo { nil }'
159
- mutation 'foo { raise }'
160
- mutation 'foo { self if true }'
161
- mutation 'foo { nil if true }'
162
- mutation 'foo { break if !true }'
163
- mutation 'foo { break if false }'
164
- mutation 'foo { break }'
165
- end
166
-
167
- Mutant::Meta::Example.add :block do
168
- source 'foo { break }'
169
-
170
- singleton_mutations
171
- mutation 'foo { nil }'
172
- mutation 'foo { raise }'
173
- mutation 'foo { self }'
174
- mutation 'foo { }'
175
- mutation 'foo'
176
- end
177
-
178
- Mutant::Meta::Example.add :block do
179
- source 'foo(&:bar).baz {}'
180
-
181
- singleton_mutations
182
-
183
- mutation 'foo(&:bar).baz { raise }'
184
- mutation 'foo.baz { }'
185
- mutation 'foo(&:bar).baz'
186
- mutation 'self.baz {}'
187
- end
188
-
189
- Mutant::Meta::Example.add :block do
190
- source 'foo(nil, &:bar).baz {}'
191
-
192
- singleton_mutations
193
- mutation 'foo(nil, &:bar).baz { raise }'
194
- mutation 'foo(&:bar).baz { }'
195
- mutation 'foo(nil).baz { }'
196
- mutation 'foo.baz { }'
197
- mutation 'self.baz { }'
198
- mutation 'foo(nil, &:bar).baz'
199
- end