tailor 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +30 -28
- data/History.md +257 -0
- data/README.md +486 -0
- data/Rakefile +1 -9
- data/lib/ext/string_ext.rb +1 -1
- data/lib/tailor/cli.rb +3 -1
- data/lib/tailor/cli/options.rb +59 -39
- data/lib/tailor/configuration.rb +8 -5
- data/lib/tailor/configuration/file_set.rb +1 -3
- data/lib/tailor/configuration/style.rb +2 -0
- data/lib/tailor/critic.rb +2 -2
- data/lib/tailor/formatters/text.rb +17 -16
- data/lib/tailor/lexed_line.rb +2 -4
- data/lib/tailor/lexer.rb +9 -9
- data/lib/tailor/lexer/lexer_constants.rb +32 -32
- data/lib/tailor/lexer/token.rb +8 -10
- data/lib/tailor/logger.rb +1 -1
- data/lib/tailor/problem.rb +4 -1
- data/lib/tailor/rake_task.rb +4 -1
- data/lib/tailor/reporter.rb +3 -3
- data/lib/tailor/ruler.rb +2 -2
- data/lib/tailor/rulers/allow_camel_case_methods_ruler.rb +2 -2
- data/lib/tailor/rulers/allow_hard_tabs_ruler.rb +1 -1
- data/lib/tailor/rulers/allow_invalid_ruby_ruler.rb +1 -1
- data/lib/tailor/rulers/allow_screaming_snake_case_classes_ruler.rb +2 -2
- data/lib/tailor/rulers/indentation_spaces_ruler.rb +24 -22
- data/lib/tailor/rulers/indentation_spaces_ruler/indentation_manager.rb +13 -13
- data/lib/tailor/rulers/max_code_lines_in_class_ruler.rb +2 -2
- data/lib/tailor/rulers/max_code_lines_in_method_ruler.rb +2 -2
- data/lib/tailor/rulers/spaces_after_comma_ruler.rb +6 -6
- data/lib/tailor/rulers/spaces_after_conditional_ruler.rb +48 -0
- data/lib/tailor/rulers/spaces_after_lbrace_ruler.rb +8 -8
- data/lib/tailor/rulers/spaces_after_lbracket_ruler.rb +6 -6
- data/lib/tailor/rulers/spaces_after_lparen_ruler.rb +6 -6
- data/lib/tailor/rulers/spaces_before_comma_ruler.rb +2 -2
- data/lib/tailor/rulers/spaces_before_lbrace_ruler.rb +4 -4
- data/lib/tailor/rulers/spaces_before_rbrace_ruler.rb +9 -9
- data/lib/tailor/rulers/spaces_before_rbracket_ruler.rb +6 -6
- data/lib/tailor/rulers/spaces_before_rparen_ruler.rb +6 -6
- data/lib/tailor/rulers/spaces_in_empty_braces_ruler.rb +1 -1
- data/lib/tailor/rulers/trailing_newlines_ruler.rb +2 -2
- data/lib/tailor/tailorrc.erb +1 -1
- data/lib/tailor/version.rb +1 -1
- data/spec/functional/conditional_spacing_spec.rb +149 -0
- data/spec/functional/configuration_spec.rb +36 -26
- data/spec/functional/horizontal_spacing/braces_spec.rb +1 -1
- data/spec/functional/horizontal_spacing/brackets_spec.rb +14 -14
- data/spec/functional/horizontal_spacing/comma_spacing_spec.rb +8 -8
- data/spec/functional/horizontal_spacing/hard_tabs_spec.rb +13 -13
- data/spec/functional/horizontal_spacing/long_lines_spec.rb +6 -6
- data/spec/functional/horizontal_spacing/long_methods_spec.rb +55 -0
- data/spec/functional/horizontal_spacing/parens_spec.rb +17 -17
- data/spec/functional/horizontal_spacing/trailing_whitespace_spec.rb +8 -8
- data/spec/functional/horizontal_spacing_spec.rb +11 -11
- data/spec/functional/indentation_spacing/bad_indentation_spec.rb +83 -83
- data/spec/functional/indentation_spacing_spec.rb +10 -10
- data/spec/functional/naming/camel_case_methods_spec.rb +6 -6
- data/spec/functional/naming/screaming_snake_case_classes_spec.rb +10 -10
- data/spec/functional/naming_spec.rb +3 -3
- data/spec/functional/vertical_spacing/class_length_spec.rb +6 -6
- data/spec/functional/vertical_spacing/method_length_spec.rb +6 -6
- data/spec/functional/vertical_spacing_spec.rb +3 -3
- data/spec/support/conditional_spacing_cases.rb +37 -0
- data/spec/support/good_indentation_cases.rb +1 -1
- data/spec/unit/tailor/cli/options_spec.rb +50 -0
- data/spec/unit/tailor/cli_spec.rb +3 -3
- data/spec/unit/tailor/composite_observable_spec.rb +8 -8
- data/spec/unit/tailor/configuration/file_set_spec.rb +2 -2
- data/spec/unit/tailor/configuration/style_spec.rb +30 -29
- data/spec/unit/tailor/configuration_spec.rb +39 -24
- data/spec/unit/tailor/critic_spec.rb +18 -17
- data/spec/unit/tailor/formatter_spec.rb +15 -15
- data/spec/unit/tailor/formatters/yaml_spec.rb +1 -1
- data/spec/unit/tailor/lexed_line_spec.rb +258 -258
- data/spec/unit/tailor/lexer/token_spec.rb +11 -11
- data/spec/unit/tailor/lexer_spec.rb +35 -35
- data/spec/unit/tailor/problem_spec.rb +13 -13
- data/spec/unit/tailor/reporter_spec.rb +19 -18
- data/spec/unit/tailor/ruler_spec.rb +15 -15
- data/spec/unit/tailor/rulers/indentation_spaces_ruler/indentation_manager_spec.rb +72 -72
- data/spec/unit/tailor/rulers/indentation_spaces_ruler_spec.rb +32 -32
- data/spec/unit/tailor/rulers/spaces_after_comma_ruler_spec.rb +8 -8
- data/spec/unit/tailor/rulers/spaces_after_lbrace_ruler_spec.rb +36 -36
- data/spec/unit/tailor/rulers/spaces_before_lbrace_ruler_spec.rb +14 -14
- data/spec/unit/tailor/rulers/spaces_before_rbrace_ruler_spec.rb +14 -14
- data/spec/unit/tailor/rulers_spec.rb +2 -2
- data/spec/unit/tailor/version_spec.rb +1 -1
- data/spec/unit/tailor_spec.rb +4 -4
- data/tailor.gemspec +1 -1
- metadata +16 -9
- data/History.rdoc +0 -189
- data/README.rdoc +0 -422
- data/spec/unit/tailor/options_spec.rb +0 -6
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/critic'
|
3
3
|
require 'tailor/configuration/style'
|
4
4
|
|
@@ -15,7 +15,7 @@ BRACKETS['two_d_array_space_before_rbrackets'] =
|
|
15
15
|
%Q{[[1, 2, 3 ], [ 'a', 'b', 'c'] ]}
|
16
16
|
|
17
17
|
|
18
|
-
describe
|
18
|
+
describe 'Detection of spaces around brackets' do
|
19
19
|
before do
|
20
20
|
Tailor::Logger.stub(:log)
|
21
21
|
FakeFS.activate!
|
@@ -37,49 +37,49 @@ describe "Detection of spaces around brackets" do
|
|
37
37
|
style
|
38
38
|
end
|
39
39
|
|
40
|
-
context
|
41
|
-
context
|
40
|
+
context 'Arrays' do
|
41
|
+
context 'empty with space inside' do
|
42
42
|
let(:file_name) { 'space_in_empty_array' }
|
43
43
|
specify { critic.problems[file_name].size.should be 1 }
|
44
|
-
specify { critic.problems[file_name].first[:type].should ==
|
44
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_lbracket' }
|
45
45
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
46
46
|
specify { critic.problems[file_name].first[:column].should be 1 }
|
47
47
|
specify { critic.problems[file_name].first[:level].should be :error }
|
48
48
|
end
|
49
49
|
|
50
|
-
context
|
50
|
+
context 'space after lbracket' do
|
51
51
|
let(:file_name) { 'simple_array_space_after_lbracket' }
|
52
52
|
specify { critic.problems[file_name].size.should be 1 }
|
53
|
-
specify { critic.problems[file_name].first[:type].should ==
|
53
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_lbracket' }
|
54
54
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
55
55
|
specify { critic.problems[file_name].first[:column].should be 1 }
|
56
56
|
specify { critic.problems[file_name].first[:level].should be :error }
|
57
57
|
end
|
58
58
|
|
59
|
-
context
|
59
|
+
context 'space before rbracket' do
|
60
60
|
let(:file_name) { 'simple_array_space_before_rbracket' }
|
61
61
|
specify { critic.problems[file_name].size.should be 1 }
|
62
|
-
specify { critic.problems[file_name].first[:type].should ==
|
62
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_before_rbracket' }
|
63
63
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
64
64
|
specify { critic.problems[file_name].first[:column].should be 9 }
|
65
65
|
specify { critic.problems[file_name].first[:level].should be :error }
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
context
|
70
|
-
context
|
69
|
+
context 'Hash key references' do
|
70
|
+
context 'space before rbracket' do
|
71
71
|
let(:file_name) { 'hash_key_ref_space_before_rbracket' }
|
72
72
|
specify { critic.problems[file_name].size.should be 1 }
|
73
|
-
specify { critic.problems[file_name].first[:type].should ==
|
73
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_before_rbracket' }
|
74
74
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
75
75
|
specify { critic.problems[file_name].first[:column].should be 11 }
|
76
76
|
specify { critic.problems[file_name].first[:level].should be :error }
|
77
77
|
end
|
78
78
|
|
79
|
-
context
|
79
|
+
context 'space after lbracket' do
|
80
80
|
let(:file_name) { 'hash_key_ref_space_after_lbracket' }
|
81
81
|
specify { critic.problems[file_name].size.should be 1 }
|
82
|
-
specify { critic.problems[file_name].first[:type].should ==
|
82
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_lbracket' }
|
83
83
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
84
84
|
specify { critic.problems[file_name].first[:column].should be 6 }
|
85
85
|
specify { critic.problems[file_name].first[:level].should be :error }
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/critic'
|
3
3
|
require 'tailor/configuration/style'
|
4
4
|
|
@@ -17,7 +17,7 @@ COMMA_SPACING['spaces_before_with_trailing_comments'] = %Q{[
|
|
17
17
|
}
|
18
18
|
|
19
19
|
|
20
|
-
describe
|
20
|
+
describe 'Spacing around comma detection' do
|
21
21
|
before do
|
22
22
|
Tailor::Logger.stub(:log)
|
23
23
|
FakeFS.activate!
|
@@ -39,28 +39,28 @@ describe "Spacing around comma detection" do
|
|
39
39
|
style
|
40
40
|
end
|
41
41
|
|
42
|
-
context
|
42
|
+
context 'no space after a comma' do
|
43
43
|
let(:file_name) { 'no_space_after_comma' }
|
44
44
|
specify { critic.problems[file_name].size.should be 1 }
|
45
|
-
specify { critic.problems[file_name].first[:type].should ==
|
45
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_comma' }
|
46
46
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
47
47
|
specify { critic.problems[file_name].first[:column].should be 3 }
|
48
48
|
specify { critic.problems[file_name].first[:level].should be :error }
|
49
49
|
end
|
50
50
|
|
51
|
-
context
|
51
|
+
context 'two spaces after a comma' do
|
52
52
|
let(:file_name) { 'two_spaces_after_comma' }
|
53
53
|
specify { critic.problems[file_name].size.should be 1 }
|
54
|
-
specify { critic.problems[file_name].first[:type].should ==
|
54
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_comma' }
|
55
55
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
56
56
|
specify { critic.problems[file_name].first[:column].should be 3 }
|
57
57
|
specify { critic.problems[file_name].first[:level].should be :error }
|
58
58
|
end
|
59
59
|
|
60
|
-
context
|
60
|
+
context 'one space before comma' do
|
61
61
|
let(:file_name) { 'one_space_before_comma' }
|
62
62
|
specify { critic.problems[file_name].size.should be 1 }
|
63
|
-
specify { critic.problems[file_name].first[:type].should ==
|
63
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_before_comma' }
|
64
64
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
65
65
|
specify { critic.problems[file_name].first[:column].should be 2 }
|
66
66
|
specify { critic.problems[file_name].first[:level].should be :error }
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/critic'
|
3
3
|
require 'tailor/configuration/style'
|
4
4
|
|
@@ -38,7 +38,7 @@ HARD_TABS['hard_tab_with_2_indented_spaces'] =
|
|
38
38
|
end
|
39
39
|
end}
|
40
40
|
|
41
|
-
describe
|
41
|
+
describe 'Hard tab detection' do
|
42
42
|
before do
|
43
43
|
Tailor::Logger.stub(:log)
|
44
44
|
FakeFS.activate!
|
@@ -60,49 +60,49 @@ describe "Hard tab detection" do
|
|
60
60
|
style
|
61
61
|
end
|
62
62
|
|
63
|
-
context
|
63
|
+
context '1 hard tab' do
|
64
64
|
let(:file_name) { 'hard_tab' }
|
65
65
|
specify { critic.problems[file_name].size.should be 2 }
|
66
|
-
specify { critic.problems[file_name].first[:type].should ==
|
66
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_hard_tabs' }
|
67
67
|
specify { critic.problems[file_name].first[:line].should be 2 }
|
68
68
|
specify { critic.problems[file_name].first[:column].should be 0 }
|
69
69
|
specify { critic.problems[file_name].first[:level].should be :error }
|
70
|
-
specify { critic.problems[file_name].last[:type].should ==
|
70
|
+
specify { critic.problems[file_name].last[:type].should == 'indentation_spaces' }
|
71
71
|
specify { critic.problems[file_name].last[:line].should be 2 }
|
72
72
|
specify { critic.problems[file_name].last[:column].should be 1 }
|
73
73
|
specify { critic.problems[file_name].last[:level].should be :error }
|
74
74
|
end
|
75
75
|
|
76
|
-
context
|
76
|
+
context '1 hard tab with 2 spaces after it' do
|
77
77
|
let(:file_name) { 'hard_tab_with_spaces' }
|
78
78
|
specify { critic.problems[file_name].size.should be 2 }
|
79
|
-
specify { critic.problems[file_name].first[:type].should ==
|
79
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_hard_tabs' }
|
80
80
|
specify { critic.problems[file_name].first[:line].should be 3 }
|
81
81
|
specify { critic.problems[file_name].first[:column].should be 0 }
|
82
82
|
specify { critic.problems[file_name].first[:level].should be :error }
|
83
|
-
specify { critic.problems[file_name].last[:type].should ==
|
83
|
+
specify { critic.problems[file_name].last[:type].should == 'indentation_spaces' }
|
84
84
|
specify { critic.problems[file_name].last[:line].should be 3 }
|
85
85
|
specify { critic.problems[file_name].last[:column].should be 3 }
|
86
86
|
specify { critic.problems[file_name].last[:level].should be :error }
|
87
87
|
end
|
88
88
|
|
89
|
-
context
|
89
|
+
context '1 hard tab with 3 spaces after it' do
|
90
90
|
let(:file_name) { 'hard_tab_with_1_indented_space' }
|
91
91
|
specify { critic.problems[file_name].size.should be 1 }
|
92
|
-
specify { critic.problems[file_name].first[:type].should ==
|
92
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_hard_tabs' }
|
93
93
|
specify { critic.problems[file_name].first[:line].should be 3 }
|
94
94
|
specify { critic.problems[file_name].first[:column].should be 0 }
|
95
95
|
specify { critic.problems[file_name].first[:level].should be :error }
|
96
96
|
end
|
97
97
|
|
98
|
-
context
|
98
|
+
context '1 hard tab with 4 spaces after it' do
|
99
99
|
let(:file_name) { 'hard_tab_with_2_indented_spaces' }
|
100
100
|
specify { critic.problems[file_name].size.should be 2 }
|
101
|
-
specify { critic.problems[file_name].first[:type].should ==
|
101
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_hard_tabs' }
|
102
102
|
specify { critic.problems[file_name].first[:line].should be 3 }
|
103
103
|
specify { critic.problems[file_name].first[:column].should be 0 }
|
104
104
|
specify { critic.problems[file_name].first[:level].should be :error }
|
105
|
-
specify { critic.problems[file_name].last[:type].should ==
|
105
|
+
specify { critic.problems[file_name].last[:type].should == 'indentation_spaces' }
|
106
106
|
specify { critic.problems[file_name].last[:line].should be 3 }
|
107
107
|
specify { critic.problems[file_name].last[:column].should be 5 }
|
108
108
|
specify { critic.problems[file_name].last[:level].should be :error }
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/critic'
|
3
3
|
require 'tailor/configuration/style'
|
4
4
|
|
@@ -9,7 +9,7 @@ LONG_LINE['long_line_newline_at_82'] = %Q{'#{'#' * 79}'
|
|
9
9
|
}
|
10
10
|
|
11
11
|
|
12
|
-
describe
|
12
|
+
describe 'Long line detection' do
|
13
13
|
before do
|
14
14
|
Tailor::Logger.stub(:log)
|
15
15
|
FakeFS.activate!
|
@@ -31,19 +31,19 @@ describe "Long line detection" do
|
|
31
31
|
style
|
32
32
|
end
|
33
33
|
|
34
|
-
context
|
34
|
+
context 'line is 81 chars, no newline' do
|
35
35
|
let(:file_name) { 'long_line_no_newline' }
|
36
36
|
specify { critic.problems[file_name].size.should be 1 }
|
37
|
-
specify { critic.problems[file_name].first[:type].should ==
|
37
|
+
specify { critic.problems[file_name].first[:type].should == 'max_line_length' }
|
38
38
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
39
39
|
specify { critic.problems[file_name].first[:column].should be 81 }
|
40
40
|
specify { critic.problems[file_name].first[:level].should be :error }
|
41
41
|
end
|
42
42
|
|
43
|
-
context
|
43
|
+
context 'line is 81 chars, plus a newline' do
|
44
44
|
let(:file_name) { 'long_line_newline_at_82' }
|
45
45
|
specify { critic.problems[file_name].size.should be 1 }
|
46
|
-
specify { critic.problems[file_name].first[:type].should ==
|
46
|
+
specify { critic.problems[file_name].first[:type].should == 'max_line_length' }
|
47
47
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
48
48
|
specify { critic.problems[file_name].first[:column].should be 81 }
|
49
49
|
specify { critic.problems[file_name].first[:level].should be :error }
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'tailor/critic'
|
3
|
+
require 'tailor/configuration/style'
|
4
|
+
|
5
|
+
|
6
|
+
LONG_METHOD_IN_CLASS = {}
|
7
|
+
LONG_METHOD_IN_CLASS['ok_with_equals'] = <<-METH
|
8
|
+
class Test
|
9
|
+
def method1
|
10
|
+
[1, 2, 3, 4].each do |uuid|
|
11
|
+
next if (@profiles[uuid].to_s.start_with? "SM" || @profiles[uuid] ==
|
12
|
+
:SystemLogger)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def method2
|
17
|
+
puts 'Do not ever get here.'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
METH
|
21
|
+
|
22
|
+
describe 'Long method detection' do
|
23
|
+
before do
|
24
|
+
Tailor::Logger.stub(:log)
|
25
|
+
FakeFS.activate!
|
26
|
+
File.open('long_method.rb', 'w') { |f| f.write contents }
|
27
|
+
subject.check_file(file_name, style.to_hash)
|
28
|
+
end
|
29
|
+
|
30
|
+
subject do
|
31
|
+
Tailor::Critic.new
|
32
|
+
end
|
33
|
+
|
34
|
+
let(:contents) { LONG_METHOD_IN_CLASS[file_name] }
|
35
|
+
|
36
|
+
let(:style) do
|
37
|
+
style = Tailor::Configuration::Style.new
|
38
|
+
style.trailing_newlines 0, level: :off
|
39
|
+
style.indentation_spaces 2, level: :off
|
40
|
+
style.allow_invalid_ruby true, level: :off
|
41
|
+
style.max_code_lines_in_method 3
|
42
|
+
|
43
|
+
style
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'methods are within limits' do
|
47
|
+
context 'method ends with line that ends with ==' do
|
48
|
+
let(:file_name) { 'ok_with_equals' }
|
49
|
+
specify {
|
50
|
+
pending 'https://github.com/turboladen/tailor/issues/112'
|
51
|
+
|
52
|
+
subject.problems[file_name].size.should be 1 }
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/critic'
|
3
3
|
require 'tailor/configuration/style'
|
4
4
|
|
@@ -17,7 +17,7 @@ PARENS['multi_line_method_call_space_after_lparen_trailing_comment'] =
|
|
17
17
|
%Q{thing( one,
|
18
18
|
two)}
|
19
19
|
|
20
|
-
describe
|
20
|
+
describe 'Detection of spaces around brackets' do
|
21
21
|
before do
|
22
22
|
Tailor::Logger.stub(:log)
|
23
23
|
FakeFS.activate!
|
@@ -39,61 +39,61 @@ describe "Detection of spaces around brackets" do
|
|
39
39
|
style
|
40
40
|
end
|
41
41
|
|
42
|
-
context
|
43
|
-
context
|
42
|
+
context 'methods' do
|
43
|
+
context 'space after lparen' do
|
44
44
|
let(:file_name) { 'simple_method_call_space_after_lparen' }
|
45
45
|
specify { critic.problems[file_name].size.should be 1 }
|
46
|
-
specify { critic.problems[file_name].first[:type].should ==
|
46
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_lparen' }
|
47
47
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
48
48
|
specify { critic.problems[file_name].first[:column].should be 6 }
|
49
49
|
specify { critic.problems[file_name].first[:level].should be :error }
|
50
50
|
end
|
51
51
|
|
52
|
-
context
|
52
|
+
context 'space before rparen' do
|
53
53
|
let(:file_name) { 'simple_method_call_space_before_rparen' }
|
54
54
|
specify { critic.problems[file_name].size.should be 1 }
|
55
|
-
specify { critic.problems[file_name].first[:type].should ==
|
55
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_before_rparen' }
|
56
56
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
57
57
|
specify { critic.problems[file_name].first[:column].should be 15 }
|
58
58
|
specify { critic.problems[file_name].first[:level].should be :error }
|
59
59
|
end
|
60
60
|
|
61
|
-
context
|
61
|
+
context 'space after lparen, trailing comment' do
|
62
62
|
let(:file_name) { 'method_call_space_after_lparen_trailing_comment' }
|
63
63
|
specify { critic.problems[file_name].size.should be 1 }
|
64
|
-
specify { critic.problems[file_name].first[:type].should ==
|
64
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_lparen' }
|
65
65
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
66
66
|
specify { critic.problems[file_name].first[:column].should be 6 }
|
67
67
|
specify { critic.problems[file_name].first[:level].should be :error }
|
68
68
|
end
|
69
69
|
|
70
|
-
context
|
70
|
+
context 'space after lparen, before rparen, trailing comment' do
|
71
71
|
let(:file_name) { 'method_call_space_after_lparen_before_rparen_trailing_comment' }
|
72
72
|
specify { critic.problems[file_name].size.should be 2 }
|
73
|
-
specify { critic.problems[file_name].first[:type].should ==
|
73
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_lparen' }
|
74
74
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
75
75
|
specify { critic.problems[file_name].first[:column].should be 6 }
|
76
76
|
specify { critic.problems[file_name].first[:level].should be :error }
|
77
|
-
specify { critic.problems[file_name].last[:type].should ==
|
77
|
+
specify { critic.problems[file_name].last[:type].should == 'spaces_before_rparen' }
|
78
78
|
specify { critic.problems[file_name].last[:line].should be 1 }
|
79
79
|
specify { critic.problems[file_name].last[:column].should be 16 }
|
80
80
|
specify { critic.problems[file_name].last[:level].should be :error }
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
context
|
85
|
-
context
|
84
|
+
context 'multi-line method calls' do
|
85
|
+
context 'space after lparen' do
|
86
86
|
let(:file_name) { 'multi_line_method_call_space_after_lparen' }
|
87
87
|
specify { critic.problems[file_name].size.should be 1 }
|
88
|
-
specify { critic.problems[file_name].first[:type].should ==
|
88
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_lparen' }
|
89
89
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
90
90
|
specify { critic.problems[file_name].first[:column].should be 6 }
|
91
91
|
specify { critic.problems[file_name].first[:level].should be :error }
|
92
92
|
end
|
93
|
-
context
|
93
|
+
context 'space after lparen, trailing comment' do
|
94
94
|
let(:file_name) { 'multi_line_method_call_space_after_lparen_trailing_comment' }
|
95
95
|
specify { critic.problems[file_name].size.should be 1 }
|
96
|
-
specify { critic.problems[file_name].first[:type].should ==
|
96
|
+
specify { critic.problems[file_name].first[:type].should == 'spaces_after_lparen' }
|
97
97
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
98
98
|
specify { critic.problems[file_name].first[:column].should be 6 }
|
99
99
|
specify { critic.problems[file_name].first[:level].should be :error }
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require_relative '../../support/horizontal_spacing_cases'
|
3
3
|
require 'tailor/critic'
|
4
4
|
require 'tailor/configuration/style'
|
@@ -15,7 +15,7 @@ TRAILING_WHITESPACE['trailing_spaces_on_def'] = %Q{def thing
|
|
15
15
|
puts 'something'
|
16
16
|
end}
|
17
17
|
|
18
|
-
describe
|
18
|
+
describe 'Trailing whitespace detection' do
|
19
19
|
before do
|
20
20
|
Tailor::Logger.stub(:log)
|
21
21
|
FakeFS.activate!
|
@@ -37,28 +37,28 @@ describe "Trailing whitespace detection" do
|
|
37
37
|
style
|
38
38
|
end
|
39
39
|
|
40
|
-
context
|
40
|
+
context 'line is empty spaces' do
|
41
41
|
let(:file_name) { 'empty_line_with_spaces' }
|
42
42
|
specify { critic.problems[file_name].size.should be 1 }
|
43
|
-
specify { critic.problems[file_name].first[:type].should ==
|
43
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_trailing_line_spaces' }
|
44
44
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
45
45
|
specify { critic.problems[file_name].first[:column].should be 2 }
|
46
46
|
specify { critic.problems[file_name].first[:level].should be :error }
|
47
47
|
end
|
48
48
|
|
49
|
-
context
|
49
|
+
context 'method contains an empty line with spaces' do
|
50
50
|
let(:file_name) { 'empty_line_with_spaces_in_method' }
|
51
51
|
specify { critic.problems[file_name].size.should be 1 }
|
52
|
-
specify { critic.problems[file_name].first[:type].should ==
|
52
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_trailing_line_spaces' }
|
53
53
|
specify { critic.problems[file_name].first[:line].should be 2 }
|
54
54
|
specify { critic.problems[file_name].first[:column].should be 2 }
|
55
55
|
specify { critic.problems[file_name].first[:level].should be :error }
|
56
56
|
end
|
57
57
|
|
58
|
-
context
|
58
|
+
context 'def line ends with spaces' do
|
59
59
|
let(:file_name) { 'trailing_spaces_on_def' }
|
60
60
|
specify { critic.problems[file_name].size.should be 1 }
|
61
|
-
specify { critic.problems[file_name].first[:type].should ==
|
61
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_trailing_line_spaces' }
|
62
62
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
63
63
|
specify { critic.problems[file_name].first[:column].should be 11 }
|
64
64
|
specify { critic.problems[file_name].first[:level].should be :error }
|
@@ -1,9 +1,9 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require_relative '../support/horizontal_spacing_cases'
|
3
3
|
require 'tailor/critic'
|
4
4
|
require 'tailor/configuration/style'
|
5
5
|
|
6
|
-
describe
|
6
|
+
describe 'Horizontal Space problem detection' do
|
7
7
|
before do
|
8
8
|
Tailor::Logger.stub(:log)
|
9
9
|
FakeFS.activate!
|
@@ -27,13 +27,13 @@ describe "Horizontal Space problem detection" do
|
|
27
27
|
File.open(file_name, 'w') { |f| f.write contents }
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
30
|
+
it 'should be OK' do
|
31
31
|
critic.check_file(file_name, style.to_hash)
|
32
32
|
critic.problems.should == { file_name => [] }
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
context
|
36
|
+
context 'line ends with a backslash' do
|
37
37
|
let(:file_name) { 'line_split_by_backslash' }
|
38
38
|
|
39
39
|
before do
|
@@ -41,7 +41,7 @@ describe "Horizontal Space problem detection" do
|
|
41
41
|
File.open(file_name, 'w') { |f| f.write contents }
|
42
42
|
end
|
43
43
|
|
44
|
-
context
|
44
|
+
context 'no problems' do
|
45
45
|
let(:contents) do
|
46
46
|
%Q{execute 'myscript' do
|
47
47
|
command \\
|
@@ -50,13 +50,13 @@ describe "Horizontal Space problem detection" do
|
|
50
50
|
end}
|
51
51
|
end
|
52
52
|
|
53
|
-
it
|
53
|
+
it 'is OK' do
|
54
54
|
critic.check_file(file_name, style.to_hash)
|
55
55
|
critic.problems.should == { file_name => [] }
|
56
56
|
end
|
57
57
|
end
|
58
|
-
|
59
|
-
context
|
58
|
+
|
59
|
+
context 'line after backslash is too long' do
|
60
60
|
let(:contents) do
|
61
61
|
%Q{execute 'myscript' do
|
62
62
|
command \\
|
@@ -65,15 +65,15 @@ end}
|
|
65
65
|
end}
|
66
66
|
end
|
67
67
|
|
68
|
-
it
|
68
|
+
it 'is OK' do
|
69
69
|
critic.check_file(file_name, style.to_hash)
|
70
70
|
critic.problems.should == {
|
71
71
|
file_name => [
|
72
72
|
{
|
73
|
-
:type =>
|
73
|
+
:type => 'max_line_length',
|
74
74
|
:line => 3,
|
75
75
|
:column => 81,
|
76
|
-
:message =>
|
76
|
+
:message => 'Line is 81 chars long, but should be 80.',
|
77
77
|
:level=>:error
|
78
78
|
}
|
79
79
|
]
|