tailor 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -3
  3. data/Gemfile.lock +39 -31
  4. data/History.md +220 -207
  5. data/README.md +58 -45
  6. data/features/step_definitions/indentation_steps.rb +1 -1
  7. data/lib/tailor/reporter.rb +19 -7
  8. data/lib/tailor/rulers/spaces_before_lbrace_ruler.rb +0 -1
  9. data/lib/tailor/rulers/spaces_before_rbrace_ruler.rb +0 -1
  10. data/lib/tailor/rulers/spaces_in_empty_braces_ruler.rb +0 -1
  11. data/lib/tailor/version.rb +1 -1
  12. data/spec/functional/conditional_parentheses_spec.rb +1 -1
  13. data/spec/functional/conditional_spacing_spec.rb +1 -1
  14. data/spec/functional/configuration_spec.rb +61 -52
  15. data/spec/functional/horizontal_spacing/braces_spec.rb +134 -134
  16. data/spec/functional/horizontal_spacing/brackets_spec.rb +34 -36
  17. data/spec/functional/horizontal_spacing/comma_spacing_spec.rb +25 -27
  18. data/spec/functional/horizontal_spacing/hard_tabs_spec.rb +42 -42
  19. data/spec/functional/horizontal_spacing/long_lines_spec.rb +15 -17
  20. data/spec/functional/horizontal_spacing/long_methods_spec.rb +4 -4
  21. data/spec/functional/horizontal_spacing/parens_spec.rb +45 -45
  22. data/spec/functional/horizontal_spacing/trailing_whitespace_spec.rb +7 -8
  23. data/spec/functional/horizontal_spacing_spec.rb +10 -11
  24. data/spec/functional/indentation_spacing/argument_alignment_spec.rb +33 -62
  25. data/spec/functional/indentation_spacing/bad_indentation_spec.rb +176 -179
  26. data/spec/functional/indentation_spacing_spec.rb +13 -14
  27. data/spec/functional/naming/camel_case_methods_spec.rb +4 -6
  28. data/spec/functional/naming/screaming_snake_case_classes_spec.rb +28 -31
  29. data/spec/functional/naming_spec.rb +3 -3
  30. data/spec/functional/rake_task_spec.rb +9 -28
  31. data/spec/functional/string_interpolation_spec.rb +1 -1
  32. data/spec/functional/string_quoting_spec.rb +1 -1
  33. data/spec/functional/vertical_spacing/class_length_spec.rb +4 -6
  34. data/spec/functional/vertical_spacing/method_length_spec.rb +15 -17
  35. data/spec/functional/vertical_spacing_spec.rb +3 -3
  36. data/spec/spec_helper.rb +2 -0
  37. data/spec/support/argument_alignment_cases.rb +32 -32
  38. data/spec/support/conditional_parentheses_cases.rb +26 -26
  39. data/spec/support/good_indentation_cases.rb +205 -205
  40. data/spec/support/horizontal_spacing_cases.rb +53 -54
  41. data/spec/support/line_indentation_cases.rb +20 -20
  42. data/spec/support/naming_cases.rb +12 -12
  43. data/spec/support/string_interpolation_cases.rb +17 -17
  44. data/spec/support/string_quoting_cases.rb +12 -12
  45. data/spec/support/vertical_spacing_cases.rb +8 -8
  46. data/spec/unit/tailor/cli/options_spec.rb +20 -14
  47. data/spec/unit/tailor/cli_spec.rb +29 -43
  48. data/spec/unit/tailor/composite_observable_spec.rb +1 -1
  49. data/spec/unit/tailor/configuration/file_set_spec.rb +10 -11
  50. data/spec/unit/tailor/configuration/style_spec.rb +41 -42
  51. data/spec/unit/tailor/configuration_spec.rb +14 -12
  52. data/spec/unit/tailor/formatter_spec.rb +3 -3
  53. data/spec/unit/tailor/formatters/yaml_spec.rb +12 -13
  54. data/spec/unit/tailor/lexed_line_spec.rb +67 -69
  55. data/spec/unit/tailor/lexer/token_spec.rb +7 -7
  56. data/spec/unit/tailor/lexer_spec.rb +24 -24
  57. data/spec/unit/tailor/problem_spec.rb +12 -12
  58. data/spec/unit/tailor/reporter_spec.rb +8 -9
  59. data/spec/unit/tailor/ruler_spec.rb +10 -10
  60. data/spec/unit/tailor/rulers/indentation_spaces_ruler/indentation_manager_spec.rb +90 -86
  61. data/spec/unit/tailor/rulers/indentation_spaces_ruler_spec.rb +13 -13
  62. data/spec/unit/tailor/rulers/spaces_after_comma_ruler_spec.rb +4 -4
  63. data/spec/unit/tailor/rulers/spaces_after_lbrace_ruler_spec.rb +19 -19
  64. data/spec/unit/tailor/rulers/spaces_before_lbrace_ruler_spec.rb +6 -6
  65. data/spec/unit/tailor/rulers/spaces_before_rbrace_ruler_spec.rb +6 -6
  66. data/spec/unit/tailor/rulers_spec.rb +1 -1
  67. data/spec/unit/tailor/version_spec.rb +1 -2
  68. data/spec/unit/tailor_spec.rb +2 -2
  69. data/tailor.gemspec +3 -3
  70. metadata +20 -6
@@ -1,10 +1,12 @@
1
1
  require 'spec_helper'
2
2
  require 'tailor/cli/options'
3
3
 
4
+ # Module to use in tests.
4
5
  module OptionHelpers
5
6
  def cli_option(name)
6
7
  "--#{name.to_s.gsub('_', '-')}"
7
8
  end
9
+
8
10
  def option_value(name, value)
9
11
  options = Tailor::CLI::Options.parse!([cli_option(name), value])
10
12
  options.style[name]
@@ -13,6 +15,7 @@ end
13
15
 
14
16
  describe Tailor::CLI::Options do
15
17
  include OptionHelpers
18
+
16
19
  describe '#parse!' do
17
20
  [
18
21
  :indentation_spaces,
@@ -31,20 +34,23 @@ describe Tailor::CLI::Options do
31
34
  :spaces_in_empty_braces,
32
35
  :trailing_newlines
33
36
  ].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
37
+ it 'parses a valid numeric argument correct' do
38
+ expect(option_value(o, '1')).to eq 1
39
+ end
40
+
41
+ it 'marks the ruler as off if the option is specified as "off"' do
42
+ expect(option_value(o, 'off')).to eq :off
43
+ end
44
+
45
+ it 'marks a ruler as off if the option is specified as "false"' do
46
+ expect(option_value(o, 'false')).to eq :off
47
+ end
48
+
49
+ it 'raises if the argument is otherwise not an integer' do
50
+ expect do
51
+ option_value(o, 'not-an-integer')
52
+ end.to raise_error(OptionParser::InvalidArgument)
48
53
  end
54
+ end
49
55
  end
50
56
  end
@@ -1,24 +1,18 @@
1
1
  require 'spec_helper'
2
2
  require 'tailor/cli'
3
3
 
4
-
5
4
  describe Tailor::CLI do
6
5
  let(:args) { [] }
7
6
  let(:options) { double 'Options', show_config: false }
8
7
 
9
8
  let(:config) do
10
- double 'Tailor::Configuration',
11
- file_sets: nil, formatters: nil, load!: nil
9
+ double 'Tailor::Configuration', file_sets: nil, formatters: nil, load!: nil
12
10
  end
13
11
 
14
12
  before do
15
- Tailor::Configuration.stub(:new).and_return config
16
- Tailor::Critic.stub(:new)
17
- Tailor::Reporter.stub(:new)
18
- end
19
-
20
- after do
21
- Tailor::Configuration.unstub(:new)
13
+ allow(Tailor::Configuration).to receive(:new).and_return config
14
+ allow(Tailor::Critic).to receive(:new)
15
+ allow(Tailor::Reporter).to receive(:new)
22
16
  end
23
17
 
24
18
  subject { Tailor::CLI.new(args) }
@@ -26,39 +20,40 @@ describe Tailor::CLI do
26
20
  describe '::run' do
27
21
  it "creates an instance of Tailor::CLI and calls that object's #execute!" do
28
22
  cli = double 'Tailor::CLI'
29
- cli.should_receive(:execute!)
30
- Tailor::CLI.should_receive(:new).and_return cli
23
+ expect(cli).to receive(:execute!)
24
+ expect(Tailor::CLI).to receive(:new).and_return cli
31
25
  Tailor::CLI.run([])
32
26
  end
33
27
  end
34
28
 
35
29
  describe '#initialize' do
36
- let(:args) { %w[last] }
30
+ let(:args) { %w(last) }
37
31
 
38
32
  it 'uses Options to parse the args' do
39
- Tailor::Configuration.stub(:new).and_return config
40
- Tailor::Critic.stub(:new)
41
- Tailor::Reporter.stub(:new)
42
- Tailor::CLI::Options.should_receive(:parse!).with(args).and_return options
33
+ allow(Tailor::Configuration).to receive(:new).and_return config
34
+ allow(Tailor::Critic).to receive(:new)
35
+ allow(Tailor::Reporter).to receive(:new)
36
+ expect(Tailor::CLI::Options).to receive(:parse!).
37
+ with(args).and_return options
43
38
 
44
39
  Tailor::CLI.new(args)
45
40
  end
46
41
 
47
42
  it 'creates a new Configuration from the file/dir and options' do
48
- Tailor::CLI::Options.stub(:parse!).and_return(options)
49
- Tailor::Configuration.should_receive(:new).
50
- with(args, options).and_return config
43
+ allow(Tailor::CLI::Options).to receive(:parse!).and_return(options)
44
+ expect(Tailor::Configuration).to receive(:new).with(args, options).
45
+ and_return config
51
46
  Tailor::Critic.stub(:new)
52
47
 
53
48
  Tailor::CLI.new(args)
54
49
  end
55
50
 
56
51
  context 'options.show_config is true' do
57
-
52
+ pending
58
53
  end
59
54
 
60
55
  context 'options.show_config is false' do
61
-
56
+ pending
62
57
  end
63
58
  end
64
59
 
@@ -67,26 +62,21 @@ describe Tailor::CLI do
67
62
  let(:critic) { double 'Tailor::Critic', problem_count: 0 }
68
63
 
69
64
  before do
70
- Tailor::Critic.stub(:new).and_return(critic)
71
- Tailor::Reporter.stub(:new).and_return(reporter)
65
+ allow(Tailor::Critic).to receive(:new).and_return(critic)
66
+ allow(Tailor::Reporter).to receive(:new).and_return(reporter)
72
67
  subject.instance_variable_set(:@critic, critic)
73
68
  subject.instance_variable_set(:@reporter, reporter)
74
69
  end
75
70
 
76
- after do
77
- Tailor::Critic.unstub(:new)
78
- Tailor::Reporter.unstub(:new)
79
- end
80
-
81
71
  it 'calls @critic.critique and yields file problems and the label' do
82
72
  problems_for_file = {}
83
73
  label = :test
84
- config.should_receive(:output_file)
85
- critic.stub(:problem_count).and_return 1
86
- critic.stub(:problems)
87
- critic.stub(:critique).and_yield(problems_for_file, label)
88
- reporter.stub(:summary_report)
89
- reporter.should_receive(:file_report).with(problems_for_file, label)
74
+ expect(config).to receive(:output_file)
75
+ allow(critic).to receive(:problem_count).and_return 1
76
+ allow(critic).to receive(:problems)
77
+ allow(critic).to receive(:critique).and_yield(problems_for_file, label)
78
+ allow(reporter).to receive(:summary_report)
79
+ expect(reporter).to receive(:file_report).with(problems_for_file, label)
90
80
 
91
81
  subject.execute!
92
82
  end
@@ -96,20 +86,16 @@ describe Tailor::CLI do
96
86
  let(:critic) { double 'Tailor::Critic', problem_count: 0 }
97
87
 
98
88
  before do
99
- Tailor::Critic.stub(:new).and_return(critic)
89
+ allow(Tailor::Critic).to receive(:new).and_return(critic)
100
90
  subject.instance_variable_set(:@critic, critic)
101
91
  end
102
92
 
103
- after do
104
- Tailor::Critic.unstub(:new)
105
- end
106
-
107
93
  it 'calls @critic.critique and return @critique.problems hash' do
108
94
  problems = {}
109
- critic.should_receive(:critique)
110
- critic.should_receive(:problems).and_return(problems)
95
+ expect(critic).to receive(:critique)
96
+ expect(critic).to receive(:problems).and_return(problems)
111
97
 
112
- subject.result.should == problems
98
+ expect(subject.result).to eq problems
113
99
  end
114
100
  end
115
101
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'tailor/composite_observable'
3
3
 
4
-
4
+ # Class to use for tests.
5
5
  class Tester
6
6
  include Tailor::CompositeObservable
7
7
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'tailor/configuration/file_set'
3
3
 
4
-
5
4
  describe Tailor::Configuration::FileSet do
6
5
  describe '#build_file_list' do
7
6
  context 'param is a file name' do
@@ -12,14 +11,14 @@ describe Tailor::Configuration::FileSet do
12
11
 
13
12
  it 'builds an Array with that file\'s expanded path' do
14
13
  new_list = subject.instance_eval { build_file_list('./test.rb') }
15
- new_list.should be_an Array
16
- new_list.first.should match %r[/test.rb$]
14
+ expect(new_list).to be_an Array
15
+ expect(new_list.first).to match(%r{/test.rb$})
17
16
  end
18
17
  end
19
18
 
20
19
  context 'the file does not exist' do
21
20
  it 'returns an empty Array' do
22
- subject.instance_eval { build_file_list('test.rb') }.should == []
21
+ expect(subject.instance_eval { build_file_list('test.rb') }).to eq []
23
22
  end
24
23
  end
25
24
  end
@@ -30,8 +29,8 @@ describe Tailor::Configuration::FileSet do
30
29
  end
31
30
 
32
31
  it 'returns the Array with expanded file paths' do
33
- subject.instance_eval { build_file_list(['test.rb']) }.
34
- first.should match %r[/test.rb$]
32
+ expect(subject.instance_eval { build_file_list(['test.rb']) }.first).
33
+ to match(%r{/test.rb$})
35
34
  end
36
35
  end
37
36
 
@@ -43,8 +42,8 @@ describe Tailor::Configuration::FileSet do
43
42
 
44
43
  it 'returns the expanded file paths in that directory' do
45
44
  list = subject.instance_eval { build_file_list('test') }
46
- list.size.should be 1
47
- list.first.should match /.+\/test.rb/
45
+ expect(list.size).to eq 1
46
+ expect(list.first).to match(/.+\/test.rb/)
48
47
  end
49
48
  end
50
49
  end
@@ -57,9 +56,9 @@ describe Tailor::Configuration::FileSet do
57
56
 
58
57
  it 'builds the file list and concats that to @file_list' do
59
58
  subject.update_file_list('test2.rb')
60
- subject.instance_variable_get(:@file_list).size.should be 2
61
- subject.instance_variable_get(:@file_list).last.
62
- should match %r[/test2.rb]
59
+ expect(subject.instance_variable_get(:@file_list).size).to eq 2
60
+ expect(subject.instance_variable_get(:@file_list).last).
61
+ to match(%r{/test2.rb})
63
62
  end
64
63
  end
65
64
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'tailor/configuration/style'
3
3
 
4
-
5
4
  describe Tailor::Configuration::Style do
6
5
  describe '.define_property' do
7
6
  it 'defines an instance method that takes 2 params' do
@@ -12,7 +11,7 @@ describe Tailor::Configuration::Style do
12
11
  it 'allows access to the values via #to_hash' do
13
12
  Tailor::Configuration::Style.define_property(:test_method)
14
13
  subject.test_method(1, level: :pants)
15
- subject.to_hash.should include test_method: [1, { level: :pants }]
14
+ expect(subject.to_hash).to include test_method: [1, { level: :pants }]
16
15
  end
17
16
  end
18
17
 
@@ -20,134 +19,134 @@ describe Tailor::Configuration::Style do
20
19
  describe 'sets up default values' do
21
20
  describe 'allow_camel_case_methods' do
22
21
  specify do
23
- subject.instance_variable_get(:@allow_camel_case_methods).should == [
24
- false, { level: :error }]
22
+ expect(subject.instance_variable_get(:@allow_camel_case_methods)).
23
+ to eq [false, { level: :error }]
25
24
  end
26
25
  end
27
26
 
28
27
  describe 'allow_hard_tabs' do
29
28
  specify do
30
- subject.instance_variable_get(:@allow_hard_tabs).should == [
31
- false, { level: :error }]
29
+ expect(subject.instance_variable_get(:@allow_hard_tabs)).
30
+ to eq [false, { level: :error }]
32
31
  end
33
32
  end
34
33
 
35
34
  describe 'allow_screaming_snake_case_classes' do
36
35
  specify do
37
- subject.instance_variable_get(:@allow_screaming_snake_case_classes).
38
- should == [false, { level: :error }]
36
+ expect(subject.instance_variable_get(:@allow_screaming_snake_case_classes)).
37
+ to eq [false, { level: :error }]
39
38
  end
40
39
  end
41
40
 
42
41
  describe 'allow_trailing_line_spaces' do
43
42
  specify do
44
- subject.instance_variable_get(:@allow_trailing_line_spaces).
45
- should == [false, { level: :error }]
43
+ expect(subject.instance_variable_get(:@allow_trailing_line_spaces)).
44
+ to eq [false, { level: :error }]
46
45
  end
47
46
  end
48
47
 
49
48
  describe 'indentation_spaces' do
50
49
  specify do
51
- subject.instance_variable_get(:@indentation_spaces).should == [
52
- 2, { level: :error }]
50
+ expect(subject.instance_variable_get(:@indentation_spaces)).
51
+ to eq [2, { level: :error }]
53
52
  end
54
53
  end
55
54
 
56
55
  describe 'max_code_lines_in_class' do
57
56
  specify do
58
- subject.instance_variable_get(:@max_code_lines_in_class).should == [
59
- 300, { level: :error }]
57
+ expect(subject.instance_variable_get(:@max_code_lines_in_class)).
58
+ to eq [300, { level: :error }]
60
59
  end
61
60
  end
62
61
 
63
62
  describe 'max_code_lines_in_method' do
64
63
  specify do
65
- subject.instance_variable_get(:@max_code_lines_in_method).should == [
66
- 30, { level: :error }]
64
+ expect(subject.instance_variable_get(:@max_code_lines_in_method)).
65
+ to eq [30, { level: :error }]
67
66
  end
68
67
  end
69
68
 
70
69
  describe 'max_line_length' do
71
70
  specify do
72
- subject.instance_variable_get(:@max_line_length).should == [
73
- 80, { level: :error }]
71
+ expect(subject.instance_variable_get(:@max_line_length)).
72
+ to eq [80, { level: :error }]
74
73
  end
75
74
  end
76
75
 
77
76
  describe 'spaces_after_comma' do
78
77
  specify do
79
- subject.instance_variable_get(:@spaces_after_comma).should == [
80
- 1, { level: :error }]
78
+ expect(subject.instance_variable_get(:@spaces_after_comma)).
79
+ to eq [1, { level: :error }]
81
80
  end
82
81
  end
83
82
 
84
83
  describe 'spaces_after_lbrace' do
85
84
  specify do
86
- subject.instance_variable_get(:@spaces_after_lbrace).should == [
87
- 1, { level: :error }]
85
+ expect(subject.instance_variable_get(:@spaces_after_lbrace)).
86
+ to eq [1, { level: :error }]
88
87
  end
89
88
  end
90
89
 
91
90
  describe 'spaces_after_lbracket' do
92
91
  specify do
93
- subject.instance_variable_get(:@spaces_after_lbracket).should == [
94
- 0, { level: :error }]
92
+ expect(subject.instance_variable_get(:@spaces_after_lbracket)).
93
+ to eq [0, { level: :error }]
95
94
  end
96
95
  end
97
96
 
98
97
  describe 'spaces_after_lparen' do
99
98
  specify do
100
- subject.instance_variable_get(:@spaces_after_lparen).should == [
101
- 0, { level: :error }]
99
+ expect(subject.instance_variable_get(:@spaces_after_lparen)).
100
+ to eq [0, { level: :error }]
102
101
  end
103
102
  end
104
103
 
105
104
  describe 'spaces_before_comma' do
106
105
  specify do
107
- subject.instance_variable_get(:@spaces_before_comma).should == [
108
- 0, { level: :error }]
106
+ expect(subject.instance_variable_get(:@spaces_before_comma)).
107
+ to eq [0, { level: :error }]
109
108
  end
110
109
  end
111
110
 
112
111
  describe 'spaces_before_lbrace' do
113
112
  specify do
114
- subject.instance_variable_get(:@spaces_before_lbrace).should == [
115
- 1, { level: :error }]
113
+ expect(subject.instance_variable_get(:@spaces_before_lbrace)).
114
+ to eq [1, { level: :error }]
116
115
  end
117
116
  end
118
117
 
119
118
  describe 'spaces_before_rbrace' do
120
119
  specify do
121
- subject.instance_variable_get(:@spaces_before_rbrace).should == [
122
- 1, { level: :error }]
120
+ expect(subject.instance_variable_get(:@spaces_before_rbrace)).
121
+ to eq [1, { level: :error }]
123
122
  end
124
123
  end
125
124
 
126
125
  describe 'spaces_before_rbracket' do
127
126
  specify do
128
- subject.instance_variable_get(:@spaces_before_rbracket).should == [
129
- 0, { level: :error }]
127
+ expect(subject.instance_variable_get(:@spaces_before_rbracket)).
128
+ to eq [0, { level: :error }]
130
129
  end
131
130
  end
132
131
 
133
132
  describe 'spaces_before_rparen' do
134
133
  specify do
135
- subject.instance_variable_get(:@spaces_before_rparen).should == [
136
- 0, { level: :error }]
134
+ expect(subject.instance_variable_get(:@spaces_before_rparen)).
135
+ to eq [0, { level: :error }]
137
136
  end
138
137
  end
139
138
 
140
139
  describe 'spaces_in_empty_braces' do
141
140
  specify do
142
- subject.instance_variable_get(:@spaces_in_empty_braces).should == [
143
- 0, { level: :error }]
141
+ expect(subject.instance_variable_get(:@spaces_in_empty_braces)).
142
+ to eq [0, { level: :error }]
144
143
  end
145
144
  end
146
145
 
147
146
  describe 'trailing_newlines' do
148
147
  specify do
149
- subject.instance_variable_get(:@trailing_newlines).should == [
150
- 1, { level: :error }]
148
+ expect(subject.instance_variable_get(:@trailing_newlines)).
149
+ to eq [1, { level: :error }]
151
150
  end
152
151
  end
153
152
  end
@@ -184,7 +183,7 @@ describe Tailor::Configuration::Style do
184
183
  end
185
184
 
186
185
  it 'returns a Hash of all of the attributes and values' do
187
- subject.to_hash.should == default_values
186
+ expect(subject.to_hash).to eq default_values
188
187
  end
189
188
 
190
189
  context 'with a user-added property' do
@@ -194,7 +193,7 @@ describe Tailor::Configuration::Style do
194
193
  end
195
194
 
196
195
  it 'includes the new property as part of the Hash' do
197
- subject.to_hash.should include long_pants: [1, { level: :warn }]
196
+ expect(subject.to_hash).to include long_pants: [1, { level: :warn }]
198
197
  end
199
198
  end
200
199
  end