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
|
|
@@ -14,7 +14,7 @@ CAMEL_CASE_METHODS['one_caps_camel_case_method_trailing_comment'] =
|
|
14
14
|
end}
|
15
15
|
|
16
16
|
|
17
|
-
describe
|
17
|
+
describe 'Detection of camel case methods' do
|
18
18
|
before do
|
19
19
|
Tailor::Logger.stub(:log)
|
20
20
|
FakeFS.activate!
|
@@ -36,19 +36,19 @@ describe "Detection of camel case methods" do
|
|
36
36
|
style
|
37
37
|
end
|
38
38
|
|
39
|
-
context
|
39
|
+
context 'standard camel case method' do
|
40
40
|
let(:file_name) { 'one_caps_camel_case_method' }
|
41
41
|
specify { critic.problems[file_name].size.should be 1 }
|
42
|
-
specify { critic.problems[file_name].first[:type].should ==
|
42
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_camel_case_methods' }
|
43
43
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
44
44
|
specify { critic.problems[file_name].first[:column].should be 4 }
|
45
45
|
specify { critic.problems[file_name].first[:level].should be :error }
|
46
46
|
end
|
47
47
|
|
48
|
-
context
|
48
|
+
context 'standard camel case method, trailing comment' do
|
49
49
|
let(:file_name) { 'one_caps_camel_case_method_trailing_comment' }
|
50
50
|
specify { critic.problems[file_name].size.should be 1 }
|
51
|
-
specify { critic.problems[file_name].first[:type].should ==
|
51
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_camel_case_methods' }
|
52
52
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
53
53
|
specify { critic.problems[file_name].first[:column].should be 4 }
|
54
54
|
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
|
|
@@ -23,7 +23,7 @@ end}
|
|
23
23
|
|
24
24
|
|
25
25
|
|
26
|
-
describe
|
26
|
+
describe 'Detection of camel case methods' do
|
27
27
|
before do
|
28
28
|
Tailor::Logger.stub(:log)
|
29
29
|
FakeFS.activate!
|
@@ -45,37 +45,37 @@ describe "Detection of camel case methods" do
|
|
45
45
|
style
|
46
46
|
end
|
47
47
|
|
48
|
-
context
|
48
|
+
context 'standard screaming snake case class' do
|
49
49
|
let(:file_name) { 'one_screaming_snake_case_class' }
|
50
50
|
specify { critic.problems[file_name].size.should be 1 }
|
51
|
-
specify { critic.problems[file_name].first[:type].should ==
|
51
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_screaming_snake_case_classes' }
|
52
52
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
53
53
|
specify { critic.problems[file_name].first[:column].should be 6 }
|
54
54
|
specify { critic.problems[file_name].first[:level].should be :error }
|
55
55
|
end
|
56
56
|
|
57
|
-
context
|
57
|
+
context 'standard screaming snake case module' do
|
58
58
|
let(:file_name) { 'one_screaming_snake_case_module' }
|
59
59
|
specify { critic.problems[file_name].size.should be 1 }
|
60
|
-
specify { critic.problems[file_name].first[:type].should ==
|
60
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_screaming_snake_case_classes' }
|
61
61
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
62
62
|
specify { critic.problems[file_name].first[:column].should be 7 }
|
63
63
|
specify { critic.problems[file_name].first[:level].should be :error }
|
64
64
|
end
|
65
65
|
|
66
|
-
context
|
66
|
+
context 'double screaming snake case class' do
|
67
67
|
let(:file_name) { 'double_screaming_snake_case_class' }
|
68
68
|
specify { critic.problems[file_name].size.should be 1 }
|
69
|
-
specify { critic.problems[file_name].first[:type].should ==
|
69
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_screaming_snake_case_classes' }
|
70
70
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
71
71
|
specify { critic.problems[file_name].first[:column].should be 6 }
|
72
72
|
specify { critic.problems[file_name].first[:level].should be :error }
|
73
73
|
end
|
74
74
|
|
75
|
-
context
|
75
|
+
context 'double screaming snake case module' do
|
76
76
|
let(:file_name) { 'double_screaming_snake_case_module' }
|
77
77
|
specify { critic.problems[file_name].size.should be 1 }
|
78
|
-
specify { critic.problems[file_name].first[:type].should ==
|
78
|
+
specify { critic.problems[file_name].first[:type].should == 'allow_screaming_snake_case_classes' }
|
79
79
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
80
80
|
specify { critic.problems[file_name].first[:column].should be 7 }
|
81
81
|
specify { critic.problems[file_name].first[:level].should be :error }
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require_relative '../support/naming_cases'
|
3
3
|
require 'tailor/critic'
|
4
4
|
require 'tailor/configuration/style'
|
5
5
|
|
6
6
|
|
7
|
-
describe
|
7
|
+
describe 'Naming problem detection' do
|
8
8
|
before do
|
9
9
|
Tailor::Logger.stub(:log)
|
10
10
|
FakeFS.activate!
|
@@ -28,7 +28,7 @@ describe "Naming problem detection" do
|
|
28
28
|
File.open(file_name, 'w') { |f| f.write contents }
|
29
29
|
end
|
30
30
|
|
31
|
-
it
|
31
|
+
it 'should be OK' do
|
32
32
|
critic.check_file(file_name, style.to_hash)
|
33
33
|
critic.problems.should == { file_name => [] }
|
34
34
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/critic'
|
3
3
|
require 'tailor/configuration/style'
|
4
4
|
|
@@ -24,7 +24,7 @@ CLASS_LENGTH['parent_class_too_long'] =
|
|
24
24
|
end}
|
25
25
|
|
26
26
|
|
27
|
-
describe
|
27
|
+
describe 'Detection of class length' do
|
28
28
|
before do
|
29
29
|
Tailor::Logger.stub(:log)
|
30
30
|
FakeFS.activate!
|
@@ -47,19 +47,19 @@ describe "Detection of class length" do
|
|
47
47
|
style
|
48
48
|
end
|
49
49
|
|
50
|
-
context
|
50
|
+
context 'single class' do
|
51
51
|
let(:file_name) { 'class_too_long' }
|
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 == 'max_code_lines_in_class' }
|
54
54
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
55
55
|
specify { critic.problems[file_name].first[:column].should be 0 }
|
56
56
|
specify { critic.problems[file_name].first[:level].should be :error }
|
57
57
|
end
|
58
58
|
|
59
|
-
context
|
59
|
+
context 'class in a class' do
|
60
60
|
let(:file_name) { 'parent_class_too_long' }
|
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 == 'max_code_lines_in_class' }
|
63
63
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
64
64
|
specify { critic.problems[file_name].first[:column].should be 0 }
|
65
65
|
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
|
|
@@ -18,7 +18,7 @@ METHOD_LENGTH['parent_method_too_long'] =
|
|
18
18
|
end}
|
19
19
|
|
20
20
|
|
21
|
-
describe
|
21
|
+
describe 'Detection of method length' do
|
22
22
|
before do
|
23
23
|
Tailor::Logger.stub(:log)
|
24
24
|
FakeFS.activate!
|
@@ -41,19 +41,19 @@ describe "Detection of method length" do
|
|
41
41
|
style
|
42
42
|
end
|
43
43
|
|
44
|
-
context
|
44
|
+
context 'single class too long' do
|
45
45
|
let(:file_name) { 'method_too_long' }
|
46
46
|
specify { critic.problems[file_name].size.should be 1 }
|
47
|
-
specify { critic.problems[file_name].first[:type].should ==
|
47
|
+
specify { critic.problems[file_name].first[:type].should == 'max_code_lines_in_method' }
|
48
48
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
49
49
|
specify { critic.problems[file_name].first[:column].should be 0 }
|
50
50
|
specify { critic.problems[file_name].first[:level].should be :error }
|
51
51
|
end
|
52
52
|
|
53
|
-
context
|
53
|
+
context 'method in a method' do
|
54
54
|
let(:file_name) { 'method_too_long' }
|
55
55
|
specify { critic.problems[file_name].size.should be 1 }
|
56
|
-
specify { critic.problems[file_name].first[:type].should ==
|
56
|
+
specify { critic.problems[file_name].first[:type].should == 'max_code_lines_in_method' }
|
57
57
|
specify { critic.problems[file_name].first[:line].should be 1 }
|
58
58
|
specify { critic.problems[file_name].first[:column].should be 0 }
|
59
59
|
specify { critic.problems[file_name].first[:level].should be :error }
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require_relative '../support/vertical_spacing_cases'
|
3
3
|
require 'tailor/critic'
|
4
4
|
require 'tailor/configuration/style'
|
5
5
|
|
6
6
|
|
7
|
-
describe
|
7
|
+
describe 'Vertical Space problem detection' do
|
8
8
|
before do
|
9
9
|
Tailor::Logger.stub(:log)
|
10
10
|
FakeFS.activate!
|
@@ -28,7 +28,7 @@ describe "Vertical Space problem detection" do
|
|
28
28
|
File.open(file_name, 'w') { |f| f.write contents }
|
29
29
|
end
|
30
30
|
|
31
|
-
it
|
31
|
+
it 'should be OK' do
|
32
32
|
critic.check_file(file_name, style.to_hash)
|
33
33
|
critic.problems.should == { file_name => [] }
|
34
34
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
CONDITIONAL_SPACING = {}
|
2
|
+
|
3
|
+
CONDITIONAL_SPACING['no_space_after_if'] =
|
4
|
+
%q{if(foo)
|
5
|
+
end}
|
6
|
+
|
7
|
+
CONDITIONAL_SPACING['space_after_if'] =
|
8
|
+
%q{if (foo)
|
9
|
+
end}
|
10
|
+
|
11
|
+
CONDITIONAL_SPACING['no_parens'] =
|
12
|
+
%q{if foo
|
13
|
+
end}
|
14
|
+
|
15
|
+
CONDITIONAL_SPACING['nested_parens'] =
|
16
|
+
%q{if(foo(bar))
|
17
|
+
end}
|
18
|
+
|
19
|
+
CONDITIONAL_SPACING['no_space_after_unless'] =
|
20
|
+
%q{unless(foo)
|
21
|
+
end}
|
22
|
+
|
23
|
+
CONDITIONAL_SPACING['space_after_unless'] =
|
24
|
+
%q{unless (foo)
|
25
|
+
end}
|
26
|
+
|
27
|
+
CONDITIONAL_SPACING['no_space_after_case'] =
|
28
|
+
%q{puts case(true)
|
29
|
+
when true then 'a'
|
30
|
+
when false then 'b'
|
31
|
+
end}
|
32
|
+
|
33
|
+
CONDITIONAL_SPACING['space_after_case'] =
|
34
|
+
%q{puts case (true)
|
35
|
+
when true then 'a'
|
36
|
+
when false then 'b'
|
37
|
+
end}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'tailor/cli/options'
|
3
|
+
|
4
|
+
module OptionHelpers
|
5
|
+
def cli_option(name)
|
6
|
+
"--#{name.to_s.gsub('_', '-')}"
|
7
|
+
end
|
8
|
+
def option_value(name, value)
|
9
|
+
options = Tailor::CLI::Options.parse!([cli_option(name), value])
|
10
|
+
options.style[name]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe Tailor::CLI::Options do
|
15
|
+
include OptionHelpers
|
16
|
+
describe '#parse!' do
|
17
|
+
[
|
18
|
+
:indentation_spaces,
|
19
|
+
:max_code_lines_in_class,
|
20
|
+
:max_code_lines_in_method,
|
21
|
+
:max_line_length,
|
22
|
+
:spaces_after_comma,
|
23
|
+
:spaces_after_lbrace,
|
24
|
+
:spaces_after_lbracket,
|
25
|
+
:spaces_after_lparen,
|
26
|
+
:spaces_before_comma,
|
27
|
+
:spaces_before_lbrace,
|
28
|
+
:spaces_before_rbrace,
|
29
|
+
:spaces_before_rbracket,
|
30
|
+
:spaces_before_rparen,
|
31
|
+
:spaces_in_empty_braces,
|
32
|
+
:trailing_newlines
|
33
|
+
].each do |o|
|
34
|
+
it 'parses a valid numeric argument correct' do
|
35
|
+
expect(option_value(o, '1')).to eq 1
|
36
|
+
end
|
37
|
+
it 'marks the ruler as off if the option is specified as "off"' do
|
38
|
+
expect(option_value(o, 'off')).to eq :off
|
39
|
+
end
|
40
|
+
it 'marks a ruler as off if the option is specified as "false"' do
|
41
|
+
expect(option_value(o, 'false')).to eq :off
|
42
|
+
end
|
43
|
+
it 'raises if the argument is otherwise not an integer' do
|
44
|
+
expect do
|
45
|
+
option_value(o, 'not-an-integer')
|
46
|
+
end.to raise_error(OptionParser::InvalidArgument)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/cli'
|
3
3
|
|
4
4
|
|
@@ -25,7 +25,7 @@ describe Tailor::CLI do
|
|
25
25
|
|
26
26
|
describe '::run' do
|
27
27
|
it "creates an instance of Tailor::CLI and calls that object's #execute!" do
|
28
|
-
cli = double
|
28
|
+
cli = double 'Tailor::CLI'
|
29
29
|
cli.should_receive(:execute!)
|
30
30
|
Tailor::CLI.should_receive(:new).and_return cli
|
31
31
|
Tailor::CLI.run([])
|
@@ -33,7 +33,7 @@ describe Tailor::CLI do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe '#initialize' do
|
36
|
-
let(:args) { [
|
36
|
+
let(:args) { %w[last] }
|
37
37
|
|
38
38
|
it 'uses Options to parse the args' do
|
39
39
|
Tailor::Configuration.stub(:new).and_return config
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/composite_observable'
|
3
3
|
|
4
4
|
|
@@ -9,31 +9,31 @@ end
|
|
9
9
|
describe Tailor::CompositeObservable do
|
10
10
|
subject { Tester.new }
|
11
11
|
|
12
|
-
describe
|
12
|
+
describe '.define_observer' do
|
13
13
|
context "observer = 'pants'" do
|
14
14
|
before { Tailor::CompositeObservable.define_observer 'pants' }
|
15
15
|
|
16
|
-
context
|
16
|
+
context 'observer responds to #pants_update' do
|
17
17
|
it "defines an instance method 'add_pants_observer' that takes 1 arg" do
|
18
|
-
observer = double
|
18
|
+
observer = double 'Observer', respond_to?: true
|
19
19
|
subject.add_pants_observer(observer)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
context
|
23
|
+
context 'observer does not respond to #pants_update' do
|
24
24
|
it "defines an instance method 'add_pants_observer' that takes 1 arg" do
|
25
|
-
observer = double
|
25
|
+
observer = double 'Observer', respond_to?: false
|
26
26
|
expect { subject.add_pants_observer(observer) }.
|
27
27
|
to raise_error NoMethodError
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
it
|
31
|
+
it 'defines an instance method #notify_pants_observers' do
|
32
32
|
expect { subject.notify_pants_observers }.
|
33
33
|
to_not raise_error
|
34
34
|
end
|
35
35
|
|
36
|
-
it
|
36
|
+
it 'defines an instance method #pants_changed' do
|
37
37
|
expect { subject.pants_changed }.to_not raise_error
|
38
38
|
end
|
39
39
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/configuration/file_set'
|
3
3
|
|
4
4
|
|
@@ -18,7 +18,7 @@ describe Tailor::Configuration::FileSet do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
context 'the file does not exist' do
|
21
|
-
it
|
21
|
+
it 'returns an empty Array' do
|
22
22
|
subject.instance_eval { build_file_list('test.rb') }.should == []
|
23
23
|
end
|
24
24
|
end
|
@@ -1,150 +1,150 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
2
|
require 'tailor/configuration/style'
|
3
3
|
|
4
4
|
|
5
5
|
describe Tailor::Configuration::Style do
|
6
|
-
describe
|
7
|
-
it
|
6
|
+
describe '.define_property' do
|
7
|
+
it 'defines an instance method that takes 2 params' do
|
8
8
|
Tailor::Configuration::Style.define_property(:test_method)
|
9
9
|
subject.test_method(1, 2)
|
10
10
|
end
|
11
11
|
|
12
|
-
it
|
12
|
+
it 'allows access to the values via #to_hash' do
|
13
13
|
Tailor::Configuration::Style.define_property(:test_method)
|
14
14
|
subject.test_method(1, level: :pants)
|
15
15
|
subject.to_hash.should include test_method: [1, { level: :pants }]
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
describe
|
20
|
-
describe
|
21
|
-
describe
|
19
|
+
describe '#initialize' do
|
20
|
+
describe 'sets up default values' do
|
21
|
+
describe 'allow_camel_case_methods' do
|
22
22
|
specify do
|
23
23
|
subject.instance_variable_get(:@allow_camel_case_methods).should == [
|
24
24
|
false, { level: :error }]
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
describe
|
28
|
+
describe 'allow_hard_tabs' do
|
29
29
|
specify do
|
30
30
|
subject.instance_variable_get(:@allow_hard_tabs).should == [
|
31
31
|
false, { level: :error }]
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
describe
|
35
|
+
describe 'allow_screaming_snake_case_classes' do
|
36
36
|
specify do
|
37
37
|
subject.instance_variable_get(:@allow_screaming_snake_case_classes).
|
38
38
|
should == [false, { level: :error }]
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
describe
|
42
|
+
describe 'allow_trailing_line_spaces' do
|
43
43
|
specify do
|
44
44
|
subject.instance_variable_get(:@allow_trailing_line_spaces).
|
45
45
|
should == [false, { level: :error }]
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
describe
|
49
|
+
describe 'indentation_spaces' do
|
50
50
|
specify do
|
51
51
|
subject.instance_variable_get(:@indentation_spaces).should == [
|
52
52
|
2, { level: :error }]
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
describe
|
56
|
+
describe 'max_code_lines_in_class' do
|
57
57
|
specify do
|
58
58
|
subject.instance_variable_get(:@max_code_lines_in_class).should == [
|
59
59
|
300, { level: :error }]
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
describe
|
63
|
+
describe 'max_code_lines_in_method' do
|
64
64
|
specify do
|
65
65
|
subject.instance_variable_get(:@max_code_lines_in_method).should == [
|
66
66
|
30, { level: :error }]
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
describe
|
70
|
+
describe 'max_line_length' do
|
71
71
|
specify do
|
72
72
|
subject.instance_variable_get(:@max_line_length).should == [
|
73
73
|
80, { level: :error }]
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
describe
|
77
|
+
describe 'spaces_after_comma' do
|
78
78
|
specify do
|
79
79
|
subject.instance_variable_get(:@spaces_after_comma).should == [
|
80
80
|
1, { level: :error }]
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
describe
|
84
|
+
describe 'spaces_after_lbrace' do
|
85
85
|
specify do
|
86
86
|
subject.instance_variable_get(:@spaces_after_lbrace).should == [
|
87
87
|
1, { level: :error }]
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
-
describe
|
91
|
+
describe 'spaces_after_lbracket' do
|
92
92
|
specify do
|
93
93
|
subject.instance_variable_get(:@spaces_after_lbracket).should == [
|
94
94
|
0, { level: :error }]
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
|
-
describe
|
98
|
+
describe 'spaces_after_lparen' do
|
99
99
|
specify do
|
100
100
|
subject.instance_variable_get(:@spaces_after_lparen).should == [
|
101
101
|
0, { level: :error }]
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
describe
|
105
|
+
describe 'spaces_before_comma' do
|
106
106
|
specify do
|
107
107
|
subject.instance_variable_get(:@spaces_before_comma).should == [
|
108
108
|
0, { level: :error }]
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
|
-
describe
|
112
|
+
describe 'spaces_before_lbrace' do
|
113
113
|
specify do
|
114
114
|
subject.instance_variable_get(:@spaces_before_lbrace).should == [
|
115
115
|
1, { level: :error }]
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
|
-
describe
|
119
|
+
describe 'spaces_before_rbrace' do
|
120
120
|
specify do
|
121
121
|
subject.instance_variable_get(:@spaces_before_rbrace).should == [
|
122
122
|
1, { level: :error }]
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
126
|
-
describe
|
126
|
+
describe 'spaces_before_rbracket' do
|
127
127
|
specify do
|
128
128
|
subject.instance_variable_get(:@spaces_before_rbracket).should == [
|
129
129
|
0, { level: :error }]
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
-
describe
|
133
|
+
describe 'spaces_before_rparen' do
|
134
134
|
specify do
|
135
135
|
subject.instance_variable_get(:@spaces_before_rparen).should == [
|
136
136
|
0, { level: :error }]
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
-
describe
|
140
|
+
describe 'spaces_in_empty_braces' do
|
141
141
|
specify do
|
142
142
|
subject.instance_variable_get(:@spaces_in_empty_braces).should == [
|
143
143
|
0, { level: :error }]
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
-
describe
|
147
|
+
describe 'trailing_newlines' do
|
148
148
|
specify do
|
149
149
|
subject.instance_variable_get(:@trailing_newlines).should == [
|
150
150
|
1, { level: :error }]
|
@@ -153,7 +153,7 @@ describe Tailor::Configuration::Style do
|
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
156
|
-
describe
|
156
|
+
describe '#to_hash' do
|
157
157
|
let(:default_values) do
|
158
158
|
{
|
159
159
|
:allow_camel_case_methods => [false, { :level => :error }],
|
@@ -166,6 +166,7 @@ describe Tailor::Configuration::Style do
|
|
166
166
|
:max_code_lines_in_method => [30, { :level => :error }],
|
167
167
|
:max_line_length => [80, { :level => :error }],
|
168
168
|
:spaces_after_comma => [1, { :level => :error }],
|
169
|
+
:spaces_after_conditional => [1, { :level=>:error }],
|
169
170
|
:spaces_after_lbrace => [1, { :level => :error }],
|
170
171
|
:spaces_after_lbracket => [0, { :level => :error }],
|
171
172
|
:spaces_after_lparen => [0, { :level => :error }],
|
@@ -179,17 +180,17 @@ describe Tailor::Configuration::Style do
|
|
179
180
|
}
|
180
181
|
end
|
181
182
|
|
182
|
-
it
|
183
|
+
it 'returns a Hash of all of the attributes and values' do
|
183
184
|
subject.to_hash.should == default_values
|
184
185
|
end
|
185
186
|
|
186
|
-
context
|
187
|
+
context 'with a user-added property' do
|
187
188
|
before do
|
188
189
|
Tailor::Configuration::Style.define_property(:long_pants)
|
189
190
|
subject.long_pants(1, level: :warn)
|
190
191
|
end
|
191
192
|
|
192
|
-
it
|
193
|
+
it 'includes the new property as part of the Hash' do
|
193
194
|
subject.to_hash.should include long_pants: [1, { level: :warn }]
|
194
195
|
end
|
195
196
|
end
|