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
data/Gemfile DELETED
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gemspec name: 'mutant'
6
-
7
- eval_gemfile File.expand_path('Gemfile.shared', __dir__)
@@ -1,107 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- mutant (0.9.10)
5
- abstract_type (~> 0.0.7)
6
- adamantium (~> 0.2.0)
7
- anima (~> 0.3.1)
8
- ast (~> 2.2)
9
- concord (~> 0.1.5)
10
- diff-lcs (~> 1.3)
11
- equalizer (~> 0.0.9)
12
- ice_nine (~> 0.11.1)
13
- memoizable (~> 0.4.2)
14
- mprelude (~> 0.1.0)
15
- parser (~> 2.7.1)
16
- procto (~> 0.0.2)
17
- unparser (~> 0.4.8)
18
- variable (~> 0.0.1)
19
-
20
- GEM
21
- remote: https://rubygems.org/
22
- remote: https://oss:Px2ENN7S91OmWaD5G7MIQJi1dmtmYrEh@gem.mutant.dev/
23
- specs:
24
- abstract_type (0.0.7)
25
- adamantium (0.2.0)
26
- ice_nine (~> 0.11.0)
27
- memoizable (~> 0.4.0)
28
- anima (0.3.1)
29
- abstract_type (~> 0.0.7)
30
- adamantium (~> 0.2)
31
- equalizer (~> 0.0.11)
32
- ast (2.4.1)
33
- concord (0.1.5)
34
- adamantium (~> 0.2.0)
35
- equalizer (~> 0.0.9)
36
- diff-lcs (1.4.4)
37
- equalizer (0.0.11)
38
- ice_nine (0.11.2)
39
- jaro_winkler (1.5.4)
40
- memoizable (0.4.2)
41
- thread_safe (~> 0.3, >= 0.3.1)
42
- mprelude (0.1.0)
43
- abstract_type (~> 0.0.7)
44
- adamantium (~> 0.2.0)
45
- concord (~> 0.1.5)
46
- equalizer (~> 0.0.9)
47
- ice_nine (~> 0.11.1)
48
- procto (~> 0.0.2)
49
- mutant-license (0.1.0)
50
- parallel (1.19.2)
51
- parser (2.7.1.4)
52
- ast (~> 2.4.1)
53
- procto (0.0.3)
54
- rainbow (3.0.0)
55
- rspec (3.9.0)
56
- rspec-core (~> 3.9.0)
57
- rspec-expectations (~> 3.9.0)
58
- rspec-mocks (~> 3.9.0)
59
- rspec-core (3.9.2)
60
- rspec-support (~> 3.9.3)
61
- rspec-expectations (3.9.2)
62
- diff-lcs (>= 1.2.0, < 2.0)
63
- rspec-support (~> 3.9.0)
64
- rspec-its (1.2.0)
65
- rspec-core (>= 3.0.0)
66
- rspec-expectations (>= 3.0.0)
67
- rspec-mocks (3.9.1)
68
- diff-lcs (>= 1.2.0, < 2.0)
69
- rspec-support (~> 3.9.0)
70
- rspec-support (3.9.3)
71
- rubocop (0.79.0)
72
- jaro_winkler (~> 1.5.1)
73
- parallel (~> 1.10)
74
- parser (>= 2.7.0.1)
75
- rainbow (>= 2.2.2, < 4.0)
76
- ruby-progressbar (~> 1.7)
77
- unicode-display_width (>= 1.4.0, < 1.7)
78
- ruby-progressbar (1.10.1)
79
- thread_safe (0.3.6)
80
- unicode-display_width (1.6.1)
81
- unparser (0.4.8)
82
- abstract_type (~> 0.0.7)
83
- adamantium (~> 0.2.0)
84
- anima (~> 0.3.1)
85
- concord (~> 0.1.5)
86
- diff-lcs (~> 1.3)
87
- equalizer (~> 0.0.9)
88
- mprelude (~> 0.1.0)
89
- parser (>= 2.6.5)
90
- procto (~> 0.0.2)
91
- variable (0.0.1)
92
- equalizer (~> 0.0.11)
93
-
94
- PLATFORMS
95
- ruby
96
-
97
- DEPENDENCIES
98
- mutant!
99
- mutant-license!
100
- parallel (~> 1.3)
101
- rspec (~> 3.9)
102
- rspec-core (~> 3.9)
103
- rspec-its (~> 1.2.0)
104
- rubocop (~> 0.79.0)
105
-
106
- BUNDLED WITH
107
- 2.1.4
@@ -1,10 +0,0 @@
1
- # Mutant itself uses an opensource license key.
2
- # Scoped to https://github.com/mbj/mutant it'll
3
- # not be useful elsewhere.
4
- source 'https://oss:Px2ENN7S91OmWaD5G7MIQJi1dmtmYrEh@gem.mutant.dev' do
5
- gem 'mutant-license'
6
- end
7
-
8
- # Place for shared git sources, used for developing updates to depedencies
9
- # where the git sources (without this file) need to be consistently edited
10
- # into multiple Gemfiles.
data/README.md DELETED
@@ -1,199 +0,0 @@
1
- mutant
2
- ======
3
-
4
- ![Build Status](https://github.com/mbj/mutant/workflows/CI/badge.svg)
5
- [![Gem Version](https://img.shields.io/gem/v/mutant.svg)](https://rubygems.org/gems/mutant)
6
- [![Slack Status](https://mutation-testing-slack.herokuapp.com/badge.svg)](https://mutation-testing.slack.com/messages/mutant)
7
-
8
- ## What is Mutant?
9
-
10
- An automated code review tool, with a side effect of producing semantic code coverage
11
- metrics.
12
-
13
- Think of mutant as an expert developer that simplifies your code while making sure that all tests pass.
14
-
15
- That developer never has a bad day and is always ready to jump on your PR.
16
-
17
- Each reported simplification signifies either:
18
-
19
- A) A piece of code that does more than the tests ask for.
20
- You can probably use the simplified version of the code. OR:
21
-
22
- B) If you have a reason to not take the simplified version as it violates a requirement:
23
- There was no test that proves the extra requirement. Likely you are missing an
24
- important test for that requirement.
25
-
26
- On extensive mutant use A) happens more often than B), which leads to overall less code enter
27
- your repository at higher confidence for both the author and the reviewer.
28
-
29
- BTW: Mutant is a mutation testing tool, which is a form of code coverage.
30
- But each reported uncovered mutation is actually a call to action, just like a flag in a code review
31
- would be.
32
-
33
- ## Getting started:
34
-
35
- * Start with reading the [nomenclature](/docs/nomenclature.md). No way around that one, sorry.
36
- * Then select and setup your [integration](/docs/nomenclature.md#integration), also make sure
37
- you can reproduce the examples in the integration specific documentation.
38
- * Use mutant during code reviews and on CI in [incremental](/docs/incremental.md) mode.
39
- * Do not merge code with new alive mutations. If you really must bypass:
40
- Add the subjects with open problems to the ignored subjects.
41
-
42
- ## Ruby Versions
43
-
44
- Mutant supports multiple ruby versions at different levels. The levels arge staged:
45
-
46
- * Runtime, indicates mutant can execute on a specific Ruby Version / implementation.
47
- * Syntax, depends on Runtime support, and indicates syntax new to that Ruby version can be used.
48
- * Mutations, depends on Syntax support, and indicates syntax new to that Ruby verison is being analysed.
49
-
50
- Supported indicates if a specific Ruby version / Implementation is actively supported. Which means:
51
-
52
- * New releases will only be done if all tests pass on supported Ruby versions / implementations.
53
- * New features will be available.
54
-
55
- | Implementation | Version | Runtime | Syntax | Mutations | Supported |
56
- | -------------- | -------------- | ------- | ------------------ | ------------------ | ------------------ |
57
- | cRUBY/MRI | 2.5 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
58
- | cRUBY/MRI | 2.6 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
59
- | cRUBY/MRI | 2.7 | :heavy_check_mark: | :soon: | :soon: | :heavy_check_mark: |
60
- | jruby | TBD | :email: | :email: | :email: | :email: |
61
- | mruby | TBD | :email: | :email: | :email: | :email: |
62
- | cRUBY/MRI | < 2.5 | :no_entry: | :no_entry: | :no_entry: | :no_entry: |
63
-
64
-
65
- Labels:
66
-
67
- * :heavy_check_mark: Supported.
68
- * :soon: Active work in progress.
69
- * :email: Planned, please contact me on interest.
70
- * :no_entry: Not being planned, or considered, still contact me on interest.
71
-
72
- ## Licensing
73
-
74
- Mutant was recently transitioned commercial software, with a free usage plan for opensource projects.
75
-
76
- Commercial projects have to acquire a license per developer, with unlimited repositories
77
- per developer. CI usage for licensed developers is included.
78
-
79
- Opensource projects have to acquire their free license per repository.
80
-
81
- The license distribution happens through the `mutant-license` gem in mutants dependencies.
82
- This gem is dynamically generated per licensee and comes with a unique license gem source
83
- URL.
84
-
85
- After signup for a license the following has to be added to your `Gemfile` replacing `${key}`
86
- with the license key and `${plan}` with `com` for commercial or `oss` for opensource usage.
87
-
88
- ```ruby
89
- source 'https://${plan}:${key}@gem.mutant.dev' do
90
- gem 'mutant-license'
91
- end
92
- ```
93
-
94
- The mutant license gem contains metadata that allows mutant to verify licensed use.
95
-
96
- For commercial licenses mutant checks the git commit author or the configured git email
97
- to be in the set of licensed developers.
98
-
99
- For opensource licenses mutant checks the git remotes against the licensed git repositories.
100
- This allows the project maintainer to sign up and not bother collaborators with the details.
101
-
102
- There are, apart from initial license gem installation, no remote interaction for
103
- license validation.
104
-
105
- ### Getting an Opensource license
106
-
107
- As stated above: Opensource projects of any kind are free to use mutant.
108
-
109
- Just mail [me](mailto:mbj@schirp-dso.com?subject=Mutant%20Opensource%20License): Please
110
- include:
111
-
112
- * Just the git remote URL of your repository. Repository can be anywhere, must not be on Github, just has to be public.
113
-
114
- I do not need any more details.
115
-
116
- ### Getting a commercial license
117
-
118
- Mutant offers a per developer subscription a monthly plan for 30$, or an annual plan for 300$.
119
-
120
- Above 10 developer licensees per customer I'm open to negotiate more discounts.
121
-
122
- Should you want to procure a commercial mutant license please [mail me](mailto:mbj@schirp-dso.com?subject=Mutant%20Commercial%20License).
123
-
124
- Please include the following information:
125
-
126
- * Your invoice address, including your Tax ID (For EU customers VAT-ID is mandatory)
127
- * Per licensed user the git author email address as returned by `git config user.email`
128
-
129
- Also feel free to ask any other question I forgot to proactively answer here.
130
-
131
- #### Payment methods
132
-
133
- * For monthly subscriptions: Exclusively CC.
134
- * For annual subscriptions: CC (worldwide) or ACH (US) / SEPA (EU) wire transfer.
135
-
136
- #### Pricing Why?
137
-
138
- The idea is to charge 1$ per developer per day. Mutant reduces the time spend on code reviews.
139
-
140
- This time saved should be worth way more than the 1$ per day.
141
-
142
- If you think this is not true for your code base, either my claims are wrong our your use of mutant is wrong.
143
- I'd be happy to hear about your case as I'm certainly willing to help you in using mutant right, and in case
144
- I'm wrong I'd be happy to improve mutant to the point I'm right again.
145
-
146
- ## Topics
147
-
148
- * [Nomenclature](/docs/nomenclature.md)
149
- * [Reading Reports](/docs/reading-reports.md)
150
- * [Known Problems](/docs/known-problems.md)
151
- * [Limitations](/docs/limitations.md)
152
- * [Concurrency](/docs/concurrency.md)
153
- * [Rspec Integration](/docs/mutant-rspec.md)
154
- * [Minitest Integration](/docs/mutant-minitest.md)
155
-
156
- ## Communication
157
-
158
- Try the following:
159
-
160
- * [Github Issues](https://github.com/mbj/mutant/issues)
161
- * [Release Announcement Mailing List](https://announce.mutant.dev/signup)
162
- * [Slack channel](mutation-testing.slack.com) request invite from [Markus Schirp](mailto:mbj@schirp-dso.com?subject=Mutation%20Testing%20Slack%20Channel%20Invite).
163
-
164
- ## Sponsoring
165
-
166
- Mutant, as published in the opensource version, would not exist without the help
167
- of [contributors](https://github.com/mbj/mutant/graphs/contributors) spending lots
168
- of their private time.
169
-
170
- Additionally, the following features where sponsored by organizations:
171
-
172
- * The `mutant-minitest` integration was sponsored by [Arkency](https://arkency.com/)
173
- * Mutant's initial concurrency support was sponsored by an undisclosed company that does
174
- currently not wish to be listed here.
175
-
176
- ### Legal
177
-
178
- Contents of this repository are maintained by:
179
-
180
- ```
181
- Schirp DSO LTD
182
- Director: Markus Schirp
183
- Email: info@schirp-dso.com
184
- Vat-ID: MT24186727
185
- Registration: C80467
186
-
187
- Office address:
188
- 2, Carob Lane,
189
- Sir Harry Luke Street
190
- Naxxar NXR 2209,
191
- Malta
192
-
193
- Registred Address
194
- Phoenix Business Centre,
195
- The Penthouse,
196
- Old Railway Track,
197
- Santa Venera SVR9022,
198
- Malta
199
- ```
data/Rakefile DELETED
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'devtools'
4
-
5
- Devtools.init_rake_tasks
@@ -1,2 +0,0 @@
1
- ---
2
- unit_test_timeout: 10.0
@@ -1,139 +0,0 @@
1
- ---
2
- detectors:
3
- Attribute:
4
- enabled: false
5
- exclude: []
6
- BooleanParameter:
7
- enabled: true
8
- exclude: []
9
- ClassVariable:
10
- enabled: true
11
- exclude: []
12
- ControlParameter:
13
- enabled: true
14
- exclude:
15
- - Mutant::Expression#match_length
16
- DataClump:
17
- enabled: true
18
- exclude: []
19
- max_copies: 2
20
- min_clump_size: 2
21
- DuplicateMethodCall:
22
- enabled: false
23
- exclude: []
24
- max_calls: 1
25
- allow_calls: []
26
- FeatureEnvy:
27
- enabled: false
28
- # Buggy smell detector
29
- IrresponsibleModule:
30
- enabled: false
31
- exclude: []
32
- LongParameterList:
33
- enabled: true
34
- exclude:
35
- - Mutant::Matcher::Method::Instance#self.build
36
- - Mutant::Meta::Example::DSL # 3 vars
37
- max_params: 2
38
- LongYieldList:
39
- enabled: true
40
- exclude: []
41
- max_params: 2
42
- NestedIterators:
43
- enabled: true
44
- exclude:
45
- - Mutant#self.singleton_subclass_instance
46
- - Mutant::CLI#parse
47
- - Mutant::Mutator::Node::Arguments#emit_argument_mutations
48
- - Mutant::Mutator::Node::Resbody#mutate_captures
49
- - Mutant::Mutator::Util::Array::Element#dispatch
50
- - Mutant::Parallel::Master#run
51
- - Mutant::RequireHighjack#self.call
52
- - Mutant::Selector::Expression#call
53
- - Parser::Lexer#self.new
54
- max_allowed_nesting: 1
55
- ignore_iterators: []
56
- NilCheck:
57
- enabled: false
58
- RepeatedConditional:
59
- enabled: true
60
- exclude:
61
- - Mutant::Mutator
62
- - Mutant::Meta::Example::DSL
63
- max_ifs: 1
64
- TooManyConstants:
65
- enabled: false
66
- TooManyInstanceVariables:
67
- enabled: true
68
- exclude:
69
- - Mutant::Mutator # 4 vars
70
- - Mutant::Parallel::Master # 4 vars
71
- - Mutant::Meta::Example::DSL # 4 vars
72
- max_instance_variables: 3
73
- TooManyMethods:
74
- enabled: true
75
- exclude:
76
- - Mutant::CLI
77
- - Mutant::Mutator::Node
78
- - Mutant::Parallel::Master
79
- max_methods: 10
80
- TooManyStatements:
81
- enabled: true
82
- exclude:
83
- - Mutant::CLI#add_debug_options
84
- - Mutant::CLI#add_environment_options
85
- - Mutant::Reporter::CLI::Printer::Config#run
86
- - Mutant::Reporter::CLI::Printer::EnvProgress#run
87
- - Mutant::Runner#run_driver
88
- - Mutant::Zombifier::File#self.find
89
- max_statements: 7
90
- UncommunicativeMethodName:
91
- enabled: true
92
- exclude:
93
- - Mutant::AST::Sexp#s
94
- - Mutant::Mutation#sha1
95
- reject:
96
- - '/^[a-z]$/'
97
- - '/[0-9]$/'
98
- - '/[A-Z]/'
99
- accept: []
100
- UncommunicativeModuleName:
101
- enabled: true
102
- exclude: []
103
- reject:
104
- - '/^.$/'
105
- - '/[0-9]$/'
106
- accept: []
107
- UncommunicativeParameterName:
108
- enabled: true
109
- exclude: []
110
- reject:
111
- - '/^.$/'
112
- - '/[0-9]$/'
113
- - '/[A-Z]/'
114
- accept: []
115
- UncommunicativeVariableName:
116
- enabled: true
117
- exclude: []
118
- reject:
119
- - '/^.$/'
120
- - '/[0-9]$/'
121
- - '/[A-Z]/'
122
- accept: ['force_utf32']
123
- UnusedParameters:
124
- enabled: true
125
- exclude: []
126
- UtilityFunction:
127
- enabled: true
128
- exclude:
129
- - Mutant::AST::Sexp#s
130
- - Mutant::CLI#reporter
131
- - Mutant::Integration::Null#call
132
- - Mutant::Integration::Rspec#parse_example
133
- - Mutant::Integration::Rspec#parse_expression # intentional, private
134
- - Mutant::Meta::Example::Verification#format_mutations # intentional, private
135
- - Mutant::Reporter::CLI::Format::Progressive#new_buffer
136
- - Mutant::Reporter::CLI::Printer::StatusProgressive#object # False positive calls super
137
- - Mutant::Repository::Diff#tracks? # intentional, private
138
- - Mutant::Repository::Diff#within_working_directory? # intentional, private
139
- - Mutant::AST::FindMetaclassContaining#include_exact? # intentional, private