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,122 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Mutant::Zombifier do
4
- let(:root_require) { Pathname.new('project') }
5
- let(:pathname) { class_double(Pathname) }
6
-
7
- let(:require_highjack) do
8
- lambda do |block|
9
- original = ruby_vm.method(:require)
10
- allow(ruby_vm).to receive(:require) do |argument|
11
- return_value = ruby_vm.expected_events.first.return_value
12
- expect(block.call(argument)).to be(return_value)
13
- end
14
- original
15
- end
16
- end
17
-
18
- let(:options) do
19
- {
20
- load_path: %w[a b],
21
- includes: %w[project bar],
22
- namespace: :Zombie,
23
- require_highjack: require_highjack,
24
- root_require: root_require,
25
- pathname: pathname,
26
- kernel: ruby_vm
27
- }
28
- end
29
-
30
- let(:ruby_vm) do
31
- MutantSpec::RubyVM.new(
32
- [
33
- MutantSpec::RubyVM::EventExpectation::Require.new(
34
- expected_payload: {
35
- logical_name: 'project'
36
- },
37
- return_value: true
38
- ),
39
- MutantSpec::RubyVM::EventExpectation::Eval.new(
40
- expected_payload: {
41
- binding: TOPLEVEL_BINDING,
42
- source: "module Zombie\n module Project\n end\nend",
43
- source_location: 'a/project.rb'
44
- },
45
- trigger_requires: %w[foo bar],
46
- return_value: nil
47
- ),
48
- MutantSpec::RubyVM::EventExpectation::Require.new(
49
- expected_payload: {
50
- logical_name: 'foo'
51
- },
52
- trigger_requires: %w[bar],
53
- return_value: true
54
- ),
55
- MutantSpec::RubyVM::EventExpectation::Require.new(
56
- expected_payload: {
57
- logical_name: 'bar'
58
- },
59
- return_value: true
60
- ),
61
- MutantSpec::RubyVM::EventExpectation::Eval.new(
62
- expected_payload: {
63
- binding: TOPLEVEL_BINDING,
64
- source: "module Zombie\n module Bar\n end\nend",
65
- source_location: 'b/bar.rb'
66
- },
67
- trigger_requires: %w[],
68
- return_value: nil
69
- ),
70
- MutantSpec::RubyVM::EventExpectation::Require.new(
71
- expected_payload: {
72
- logical_name: 'bar'
73
- },
74
- return_value: false
75
- )
76
- ]
77
- )
78
- end
79
-
80
- let(:file_entries) do
81
- {
82
- 'a/project.rb' => { file: true, contents: 'module Project; end' },
83
- 'b/bar.rb' => { file: true, contents: 'module Bar; end' }
84
- }
85
- end
86
-
87
- let(:file_system) do
88
- MutantSpec::FileSystem.new(
89
- Hash[
90
- file_entries.map { |key, attributes| [key, MutantSpec::FileState.new(attributes)] }
91
- ]
92
- )
93
- end
94
-
95
- describe '.call' do
96
- def apply
97
- described_class.call(options)
98
- end
99
-
100
- before do
101
- allow(pathname).to receive(:new, &file_system.method(:path))
102
- end
103
-
104
- it 'returns self' do
105
- expect(apply).to be(described_class)
106
- end
107
-
108
- it 'walks the VM through expected steps' do
109
- expect { apply }.to change(ruby_vm, :done?).from(false).to(true)
110
- end
111
-
112
- context 'when zombifier require fails' do
113
- let(:file_entries) do
114
- {}
115
- end
116
-
117
- it 'raises zombifier specific load error' do
118
- expect { apply }.to raise_error(described_class::LoadError, 'Cannot find file "project.rb" in load path')
119
- end
120
- end
121
- end
122
- end
@@ -1 +0,0 @@
1
- --color
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'mutant', path: '../'
4
- gem 'mutant-minitest', path: '../'
@@ -1,7 +0,0 @@
1
- source 'https://rubygems.org'
2
- gem 'rspec', '~> 3.8.0'
3
- gem 'rspec-core', '~> 3.8.0'
4
- gem 'mutant', path: '../'
5
- gem 'mutant-rspec', path: '../'
6
- gem 'adamantium'
7
- eval_gemfile File.expand_path('../../Gemfile.shared', __FILE__)
@@ -1,110 +0,0 @@
1
- require 'adamantium'
2
-
3
- original = $VERBOSE
4
- # Silence intentional violations made to exercise the method matcher edge cases.
5
- # This is NOT representative for could you should write!
6
- $VERBOSE = false
7
- # Namespace for test application
8
- module TestApp
9
- module InstanceMethodTests
10
- module WithMemoizer
11
- include Adamantium
12
-
13
- def bar; end; def baz; end
14
- eval('def boz; end')
15
- def foo; end;
16
- memoize :foo
17
- end
18
-
19
- module DefinedMultipleTimes
20
- class DifferentLines
21
- def foo
22
- end
23
-
24
- def foo(_arg)
25
- end
26
- end
27
-
28
- class SameLineSameScope
29
- def foo; end; def foo(_arg); end
30
- end
31
-
32
- class SameLineDifferentScope
33
- def self.foo; end; def foo(_arg); end
34
- end
35
- end
36
-
37
- class InClassEval
38
- class_eval do
39
- def foo
40
- end
41
- end
42
- end
43
-
44
- class InModuleEval
45
- module_eval do
46
- def foo
47
- end
48
- end
49
- end
50
-
51
- class InInstanceEval
52
- module_eval do
53
- def foo
54
- end
55
- end
56
- end
57
- end
58
-
59
- module SingletonMethodTests
60
- module DefinedOnSelf
61
- def self.foo; end
62
- end
63
-
64
- module DefinedOnLvar
65
- a = self
66
- def a.foo; end
67
- end
68
-
69
- module DefinedOnConstant
70
- module InsideNamespace
71
- def InsideNamespace.foo
72
- end
73
- end
74
-
75
- module OutsideNamespace
76
- end
77
-
78
- def OutsideNamespace.foo
79
- end
80
- end
81
-
82
- module DefinedMultipleTimes
83
- module DifferentLines
84
- def self.foo
85
- end
86
-
87
- def self.foo(_arg)
88
- end
89
- end
90
-
91
- module SameLine
92
- module SameScope
93
- def self.foo; end; def self.foo(_arg); end
94
- end
95
-
96
- module DifferentScope
97
- def self.foo; end; def DifferentScope.foo(_arg); end; def SingletonMethodTests.foo; end
98
- end
99
-
100
- module DifferentName
101
- def self.foo; end; def self.bar(_arg); end
102
- end
103
- end
104
- end
105
- end
106
- end
107
-
108
- require 'test_app/metaclasses'
109
- require 'test_app/literal'
110
- $VERBOSE = original
@@ -1,35 +0,0 @@
1
- module TestApp
2
- # Class for integration testing literal mutations
3
- class Literal
4
- def boolean
5
- true
6
- end
7
-
8
- def command(_foo)
9
- self
10
- end
11
-
12
- def string
13
- 'string'
14
- end
15
-
16
- def uncovered_string
17
- 'string'
18
- end
19
-
20
- def self.string
21
- 'string'
22
- end
23
-
24
- def symbol
25
- :symbol
26
- end
27
-
28
- def float
29
- 2.4
30
- end
31
- end
32
-
33
- class Empty
34
- end
35
- end
@@ -1,108 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TestApp
4
- module MetaclassMethodTests
5
- module DefinedOnSelf
6
- class << self
7
- def foo; end
8
- end
9
-
10
- # again this is a weird edge-case that's being checked for consistent
11
- # behaviour, not something that people ought to be doing.
12
- module InsideMetaclass
13
- class << self
14
- # some older versions of ruby don't have Object#singleton_class,
15
- # this is just an implementation of that so we can grab
16
- # InsideMetaclass.metaclass for use as the scope object
17
- def metaclass
18
- class << self
19
- self
20
- end
21
- end
22
-
23
- # InsideMetaclass.foo
24
- def foo; end
25
-
26
- class << self
27
- # #<Class:InsideMetaclass>.foo
28
- def foo; end
29
- end
30
- end
31
- end
32
- end
33
-
34
- module DefinedOnLvar
35
- a = self
36
- class << a
37
- def foo; end
38
- end
39
- end
40
-
41
- module DefinedOnConstant
42
- module InsideNamespace
43
- class << InsideNamespace
44
- def foo; end
45
- end
46
- end
47
-
48
- module OutsideNamespace
49
- end
50
-
51
- class << OutsideNamespace
52
- def foo
53
- end
54
- end
55
- end
56
-
57
- module DefinedMultipleTimes
58
- module DifferentLines
59
- class << self
60
- def foo
61
- end
62
-
63
- def foo(_arg)
64
- end
65
- end
66
- end
67
-
68
- module SameLine
69
- module SameScope
70
- class << self
71
- def foo; end; def foo(_arg); end
72
- end
73
- end
74
-
75
- module DifferentScope
76
- class << self; def foo; end; end; class << DifferentScope; def foo(_arg); end; end; class << MetaclassMethodTests; def foo; end; end
77
- end
78
-
79
- module DifferentName
80
- class << self; def foo; end; def bar(_arg); end; end
81
- end
82
- end
83
- end
84
-
85
- module NotActuallyInAMetaclass
86
- class << self
87
- # some older versions of ruby don't have Object#singleton_class,
88
- # this is just an implementation of that so we can grab
89
- # InsideMetaclass.metaclass for use as the scope object
90
- def metaclass
91
- class << self
92
- self
93
- end
94
- end
95
-
96
- # this is a very weird construction that I do not recommend.
97
- # to access SomeClass you have to do
98
- # NotActuallyInAMetaclass.singleton_class::SomeClass. Very weird
99
- # This is only here so we can test that metaclass_receiver? correctly
100
- # returns false
101
- class SomeClass
102
- def foo
103
- end
104
- end
105
- end
106
- end
107
- end
108
- end
@@ -1,9 +0,0 @@
1
- $LOAD_PATH << File.join(File.dirname(__FILE__), '../lib')
2
-
3
- require 'test_app'
4
- require 'rspec'
5
-
6
- # require spec support files and shared behavior
7
- Dir[File.expand_path('../{support,shared}/**/*.rb', __FILE__)].each do |file|
8
- require file
9
- end
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe TestApp::Literal do
4
-
5
- describe '#command' do
6
- subject { object.command(double) }
7
-
8
- let(:object) { described_class.new }
9
-
10
- it { should be(object) }
11
- end
12
-
13
- describe '#string' do
14
- subject { object.string }
15
-
16
- let(:object) { described_class.new }
17
-
18
- it { should eql('string') }
19
- end
20
- end
@@ -1,16 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'mutant/minitest/coverage'
3
-
4
- class LiteralTest < Minitest::Test
5
- cover 'TestApp::Literal*'
6
-
7
- def test_command
8
- object = ::TestApp::Literal.new
9
-
10
- assert_equal(object, object.command('x'))
11
- end
12
-
13
- def test_string
14
- assert_equal('string', ::TestApp::Literal.new.string)
15
- end
16
- end