-
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
def_end_alignment_spec.rb
121 lines (101 loc) · 3.13 KB
/
def_end_alignment_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# frozen_string_literal: true
RSpec.describe RuboCop::Cop::Layout::DefEndAlignment, :config do
let(:source) do
<<~RUBY
foo def a
a1
end
foo def b
b1
end
RUBY
end
context 'when EnforcedStyleAlignWith is start_of_line' do
let(:cop_config) do
{ 'EnforcedStyleAlignWith' => 'start_of_line', 'AutoCorrect' => true }
end
include_examples 'misaligned', <<~RUBY, false
def test
end
^^^ `end` at 2, 2 is not aligned with `def` at 1, 0.
def Test.test
end
^^^ `end` at 2, 2 is not aligned with `def` at 1, 0.
RUBY
include_examples 'aligned', "\xef\xbb\xbfdef", 'test', 'end'
include_examples 'aligned', 'def', 'test', 'end'
include_examples 'aligned', 'def', 'Test.test', 'end', 'defs'
include_examples 'aligned', 'foo def', 'test', 'end'
include_examples 'aligned', 'foo bar def', 'test', 'end'
include_examples 'misaligned', <<~RUBY, :def
foo def test
end
^^^ `end` at 2, 4 is not aligned with `foo def` at 1, 0.
RUBY
context 'correct + opposite' do
it 'registers an offense' do
inspect_source(source)
expect(cop.offenses.size).to eq(1)
expect(cop.messages.first)
.to eq('`end` at 7, 4 is not aligned with `foo def` at 5, 0.')
expect(cop.highlights.first).to eq('end')
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
end
it 'does auto-correction' do
corrected = autocorrect_source(source)
expect(corrected).to eq(<<~RUBY)
foo def a
a1
end
foo def b
b1
end
RUBY
end
end
end
context 'when EnforcedStyleAlignWith is def' do
let(:cop_config) do
{ 'EnforcedStyleAlignWith' => 'def', 'AutoCorrect' => true }
end
include_examples 'misaligned', <<~RUBY, false
def test
end
^^^ `end` at 2, 2 is not aligned with `def` at 1, 0.
def Test.test
end
^^^ `end` at 2, 2 is not aligned with `def` at 1, 0.
RUBY
include_examples 'aligned', 'def', 'test', 'end'
include_examples 'aligned', 'def', 'Test.test', 'end', 'defs'
include_examples('aligned',
'foo def', 'test',
' end')
include_examples 'misaligned', <<~RUBY, :start_of_line
foo def test
end
^^^ `end` at 2, 0 is not aligned with `def` at 1, 4.
RUBY
context 'correct + opposite' do
it 'registers an offense' do
inspect_source(source)
expect(cop.offenses.size).to eq(1)
expect(cop.messages.first)
.to eq('`end` at 3, 0 is not aligned with `def` at 1, 4.')
expect(cop.highlights.first).to eq('end')
expect(cop.config_to_allow_offenses).to eq('Enabled' => false)
end
it 'does auto-correction' do
corrected = autocorrect_source(source)
expect(corrected).to eq(<<~RUBY)
foo def a
a1
end
foo def b
b1
end
RUBY
end
end
end
end