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.
- checksums.yaml +4 -4
- data/lib/mutant.rb +2 -4
- data/lib/mutant/bootstrap.rb +14 -1
- data/lib/mutant/cli.rb +6 -0
- data/lib/mutant/isolation.rb +1 -1
- data/lib/mutant/isolation/fork.rb +2 -2
- data/lib/mutant/isolation/none.rb +1 -1
- data/lib/mutant/matcher/config.rb +2 -0
- data/lib/mutant/meta/example.rb +16 -4
- data/lib/mutant/meta/example/dsl.rb +33 -16
- data/lib/mutant/meta/example/verification.rb +70 -28
- data/lib/mutant/minitest/coverage.rb +53 -0
- data/lib/mutant/mutator/node.rb +2 -2
- data/lib/mutant/mutator/node/block_pass.rb +29 -0
- data/lib/mutant/mutator/node/{dstr.rb → dynamic_literal.rb} +7 -5
- data/lib/mutant/mutator/node/index.rb +4 -4
- data/lib/mutant/mutator/node/literal/range.rb +4 -1
- data/lib/mutant/mutator/node/noop.rb +1 -1
- data/lib/mutant/mutator/node/op_asgn.rb +15 -1
- data/lib/mutant/mutator/node/send.rb +25 -1
- data/lib/mutant/mutator/node/send/attribute_assignment.rb +1 -0
- data/lib/mutant/reporter/cli/printer.rb +2 -2
- data/lib/mutant/reporter/cli/printer/isolation_result.rb +9 -3
- data/lib/mutant/reporter/cli/printer/mutation_result.rb +1 -1
- data/lib/mutant/subject/method/instance.rb +41 -2
- data/lib/mutant/version.rb +1 -1
- metadata +59 -347
- data/.github/workflows/ci.yml +0 -121
- data/.gitignore +0 -38
- data/.rspec +0 -5
- data/.rubocop.yml +0 -7
- data/Changelog.md +0 -81
- data/Gemfile +0 -7
- data/Gemfile.lock +0 -167
- data/Gemfile.shared +0 -10
- data/README.md +0 -178
- data/Rakefile +0 -5
- data/config/devtools.yml +0 -2
- data/config/reek.yml +0 -139
- data/config/rubocop.yml +0 -205
- data/config/yardstick.yml +0 -2
- data/docs/commercial-support.md +0 -14
- data/docs/concurrency.md +0 -39
- data/docs/incremental.md +0 -76
- data/docs/known-problems.md +0 -30
- data/docs/limitations.md +0 -50
- data/docs/mutant-minitest.md +0 -149
- data/docs/mutant-rspec.md +0 -130
- data/docs/nomenclature.md +0 -82
- data/docs/reading-reports.md +0 -74
- data/lib/mutant/color.rb +0 -40
- data/lib/mutant/diff.rb +0 -97
- data/lib/mutant/mutator/node/dsym.rb +0 -22
- data/meta/and.rb +0 -13
- data/meta/and_asgn.rb +0 -14
- data/meta/array.rb +0 -27
- data/meta/begin.rb +0 -20
- data/meta/block.rb +0 -199
- data/meta/block_pass.rb +0 -8
- data/meta/blockarg.rb +0 -10
- data/meta/break.rb +0 -9
- data/meta/case.rb +0 -217
- data/meta/casgn.rb +0 -25
- data/meta/cbase.rb +0 -8
- data/meta/class.rb +0 -12
- data/meta/const.rb +0 -17
- data/meta/csend.rb +0 -10
- data/meta/cvar.rb +0 -7
- data/meta/cvasgn.rb +0 -9
- data/meta/date.rb +0 -59
- data/meta/def.rb +0 -196
- data/meta/defined.rb +0 -9
- data/meta/dstr.rb +0 -13
- data/meta/dsym.rb +0 -14
- data/meta/ensure.rb +0 -8
- data/meta/false.rb +0 -7
- data/meta/file.rb +0 -5
- data/meta/float.rb +0 -37
- data/meta/gvar.rb +0 -7
- data/meta/gvasgn.rb +0 -9
- data/meta/hash.rb +0 -20
- data/meta/if.rb +0 -72
- data/meta/index.rb +0 -133
- data/meta/indexasgn.rb +0 -31
- data/meta/int.rb +0 -18
- data/meta/ivar.rb +0 -8
- data/meta/ivasgn.rb +0 -22
- data/meta/kwarg.rb +0 -10
- data/meta/kwbegin.rb +0 -8
- data/meta/kwoptarg.rb +0 -13
- data/meta/lambda.rb +0 -23
- data/meta/line.rb +0 -5
- data/meta/lvar.rb +0 -16
- data/meta/lvasgn.rb +0 -24
- data/meta/masgn.rb +0 -7
- data/meta/match_current_line.rb +0 -14
- data/meta/next.rb +0 -10
- data/meta/nil.rb +0 -5
- data/meta/nthref.rb +0 -14
- data/meta/op_assgn.rb +0 -17
- data/meta/or.rb +0 -13
- data/meta/or_asgn.rb +0 -50
- data/meta/range.rb +0 -39
- data/meta/redo.rb +0 -5
- data/meta/regexp.rb +0 -80
- data/meta/regopt.rb +0 -10
- data/meta/rescue.rb +0 -84
- data/meta/return.rb +0 -16
- data/meta/sclass.rb +0 -12
- data/meta/self.rb +0 -7
- data/meta/send.rb +0 -600
- data/meta/str.rb +0 -7
- data/meta/super.rb +0 -27
- data/meta/sym.rb +0 -8
- data/meta/true.rb +0 -7
- data/meta/until.rb +0 -16
- data/meta/while.rb +0 -24
- data/meta/yield.rb +0 -9
- data/mutant-minitest.gemspec +0 -22
- data/mutant-rspec.gemspec +0 -22
- data/mutant.gemspec +0 -41
- data/mutant.sh +0 -12
- data/mutant.yml +0 -6
- data/spec/integration/mutant/corpus_spec.rb +0 -15
- data/spec/integration/mutant/isolation/fork_spec.rb +0 -28
- data/spec/integration/mutant/minitest_spec.rb +0 -11
- data/spec/integration/mutant/null_spec.rb +0 -16
- data/spec/integration/mutant/rspec_spec.rb +0 -15
- data/spec/integration/mutant/test_mutator_handles_types_spec.rb +0 -9
- data/spec/integrations.yml +0 -63
- data/spec/shared/base_behavior.rb +0 -45
- data/spec/shared/framework_integration_behavior.rb +0 -70
- data/spec/shared/method_matcher_behavior.rb +0 -47
- data/spec/spec_helper.rb +0 -75
- data/spec/support/corpus.rb +0 -318
- data/spec/support/file_system.rb +0 -62
- data/spec/support/ice_nine_config.rb +0 -10
- data/spec/support/ruby_vm.rb +0 -84
- data/spec/support/shared_context.rb +0 -169
- data/spec/support/test_app.rb +0 -7
- data/spec/support/warnings.yml +0 -6
- data/spec/support/xspec.rb +0 -183
- data/spec/unit/mutant/ast/find_metaclass_containing_spec.rb +0 -64
- data/spec/unit/mutant/ast/meta/optarg_spec.rb +0 -24
- data/spec/unit/mutant/ast/meta/send/proc_predicate_spec.rb +0 -30
- data/spec/unit/mutant/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +0 -39
- data/spec/unit/mutant/ast/meta/send_spec.rb +0 -42
- data/spec/unit/mutant/ast/named_children_spec.rb +0 -89
- data/spec/unit/mutant/ast/sexp_spec.rb +0 -38
- data/spec/unit/mutant/ast_spec.rb +0 -57
- data/spec/unit/mutant/bootstrap_spec.rb +0 -216
- data/spec/unit/mutant/cli_spec.rb +0 -305
- data/spec/unit/mutant/clock_monotonic_spec.rb +0 -52
- data/spec/unit/mutant/config_spec.rb +0 -126
- data/spec/unit/mutant/context_spec.rb +0 -111
- data/spec/unit/mutant/diff_spec.rb +0 -189
- data/spec/unit/mutant/env_spec.rb +0 -229
- data/spec/unit/mutant/expression/method_spec.rb +0 -62
- data/spec/unit/mutant/expression/methods_spec.rb +0 -66
- data/spec/unit/mutant/expression/namespace/exact_spec.rb +0 -28
- data/spec/unit/mutant/expression/namespace/recursive_spec.rb +0 -66
- data/spec/unit/mutant/expression/parser_spec.rb +0 -65
- data/spec/unit/mutant/expression_spec.rb +0 -45
- data/spec/unit/mutant/integration/rspec_spec.rb +0 -201
- data/spec/unit/mutant/integration_spec.rb +0 -150
- data/spec/unit/mutant/isolation/fork_spec.rb +0 -309
- data/spec/unit/mutant/isolation/none_spec.rb +0 -23
- data/spec/unit/mutant/isolation/result_spec.rb +0 -73
- data/spec/unit/mutant/license_spec.rb +0 -305
- data/spec/unit/mutant/loader_spec.rb +0 -79
- data/spec/unit/mutant/matcher/chain_spec.rb +0 -26
- data/spec/unit/mutant/matcher/compiler_spec.rb +0 -0
- data/spec/unit/mutant/matcher/config_spec.rb +0 -47
- data/spec/unit/mutant/matcher/filter_spec.rb +0 -22
- data/spec/unit/mutant/matcher/method/instance_spec.rb +0 -164
- data/spec/unit/mutant/matcher/method/metaclass_spec.rb +0 -108
- data/spec/unit/mutant/matcher/method/singleton_spec.rb +0 -90
- data/spec/unit/mutant/matcher/methods/instance_spec.rb +0 -54
- data/spec/unit/mutant/matcher/methods/metaclass_spec.rb +0 -62
- data/spec/unit/mutant/matcher/methods/singleton_spec.rb +0 -51
- data/spec/unit/mutant/matcher/namespace_spec.rb +0 -39
- data/spec/unit/mutant/matcher/null_spec.rb +0 -12
- data/spec/unit/mutant/matcher/scope_spec.rb +0 -45
- data/spec/unit/mutant/matcher/static_spec.rb +0 -13
- data/spec/unit/mutant/matcher_spec.rb +0 -102
- data/spec/unit/mutant/meta/example/dsl_spec.rb +0 -108
- data/spec/unit/mutant/meta/example/verification_spec.rb +0 -154
- data/spec/unit/mutant/meta/example_spec.rb +0 -34
- data/spec/unit/mutant/mutation_spec.rb +0 -140
- data/spec/unit/mutant/mutator/node_spec.rb +0 -47
- data/spec/unit/mutant/mutator_spec.rb +0 -21
- data/spec/unit/mutant/parallel/driver_spec.rb +0 -126
- data/spec/unit/mutant/parallel/source/array_spec.rb +0 -57
- data/spec/unit/mutant/parallel/worker_spec.rb +0 -206
- data/spec/unit/mutant/parallel_spec.rb +0 -115
- data/spec/unit/mutant/parser_spec.rb +0 -26
- data/spec/unit/mutant/range_spec.rb +0 -141
- data/spec/unit/mutant/registry_spec.rb +0 -74
- data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +0 -17
- data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +0 -85
- data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +0 -45
- data/spec/unit/mutant/reporter/cli/printer/isolation_result_spec.rb +0 -132
- data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +0 -25
- data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +0 -153
- data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +0 -45
- data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +0 -36
- data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +0 -44
- data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +0 -16
- data/spec/unit/mutant/reporter/cli/printer_spec.rb +0 -163
- data/spec/unit/mutant/reporter/cli_spec.rb +0 -137
- data/spec/unit/mutant/reporter/null_spec.rb +0 -14
- data/spec/unit/mutant/reporter/sequence_spec.rb +0 -31
- data/spec/unit/mutant/repository/diff/ranges_spec.rb +0 -180
- data/spec/unit/mutant/repository/diff_spec.rb +0 -122
- data/spec/unit/mutant/repository/subject_filter_spec.rb +0 -30
- data/spec/unit/mutant/require_highjack_spec.rb +0 -73
- data/spec/unit/mutant/result/class_methods_spec.rb +0 -51
- data/spec/unit/mutant/result/env_spec.rb +0 -161
- data/spec/unit/mutant/result/mutation_spec.rb +0 -70
- data/spec/unit/mutant/result/subject_spec.rb +0 -111
- data/spec/unit/mutant/result/test_spec.rb +0 -14
- data/spec/unit/mutant/result_spec.rb +0 -33
- data/spec/unit/mutant/runner/sink_spec.rb +0 -174
- data/spec/unit/mutant/runner_spec.rb +0 -121
- data/spec/unit/mutant/selector/expression_spec.rb +0 -62
- data/spec/unit/mutant/selector/null_spec.rb +0 -17
- data/spec/unit/mutant/subject/method/instance_spec.rb +0 -181
- data/spec/unit/mutant/subject/method/metaclass_spec.rb +0 -63
- data/spec/unit/mutant/subject/method/singleton_spec.rb +0 -61
- data/spec/unit/mutant/subject_spec.rb +0 -93
- data/spec/unit/mutant/transform/array_spec.rb +0 -92
- data/spec/unit/mutant/transform/bool_spec.rb +0 -63
- data/spec/unit/mutant/transform/error_spec.rb +0 -132
- data/spec/unit/mutant/transform/exception_spec.rb +0 -44
- data/spec/unit/mutant/transform/hash_spec.rb +0 -236
- data/spec/unit/mutant/transform/index_spec.rb +0 -92
- data/spec/unit/mutant/transform/named_spec.rb +0 -49
- data/spec/unit/mutant/transform/primitive_spec.rb +0 -56
- data/spec/unit/mutant/transform/sequence_spec.rb +0 -98
- data/spec/unit/mutant/util/one_spec.rb +0 -22
- data/spec/unit/mutant/warnings_spec.rb +0 -89
- data/spec/unit/mutant/world_spec.rb +0 -63
- data/spec/unit/mutant/zombifier_spec.rb +0 -122
- data/test_app/.rspec +0 -1
- data/test_app/Gemfile.minitest +0 -4
- data/test_app/Gemfile.rspec3.8 +0 -7
- data/test_app/lib/test_app.rb +0 -110
- data/test_app/lib/test_app/literal.rb +0 -35
- data/test_app/lib/test_app/metaclasses.rb +0 -108
- data/test_app/spec/spec_helper.rb +0 -9
- data/test_app/spec/unit/test_app/literal_spec.rb +0 -20
- 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
|
data/test_app/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--color
|
data/test_app/Gemfile.minitest
DELETED
data/test_app/Gemfile.rspec3.8
DELETED
data/test_app/lib/test_app.rb
DELETED
@@ -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,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
|