reek 5.1.0 → 5.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e1bd0b5a333788b75250144a86c3a1a47a915bb
4
- data.tar.gz: b9077da5e1add357ca2411a983cccaef9f754ab5
3
+ metadata.gz: 6edbc24f9dc5d13f418d60c9fbcadd30e8ac433c
4
+ data.tar.gz: f0fdcaa7d1a6dc702f24763f62a44367a7004365
5
5
  SHA512:
6
- metadata.gz: b7c6ea853eabe8c9d2b090bd12c679bf5a95723b9009d48b35e641c106126697e3ad53ed4121b7540ee5d9bf8fe6e95c269bb90f7b16cfb25ea049953f9b2e26
7
- data.tar.gz: 2b2cc32734fa88f97792cae488fae2e210981920b53626b3041f3e88846e856cf54e8ad26e8d430992cbb4f3b0fdc6be0f4653cc51dc2528655efda4b2cd7db2
6
+ metadata.gz: aa7cad97b7d6108cf2c8f813adf0dc72258f64aab8645eacbb5854146614a6afa6d35951e950187d967007abeefe38eebd5af468f005d551929a73115e7cbe00
7
+ data.tar.gz: 4a04b1a57046145c006322cb6d34db5bcd970cceef1834a539209dfe2c2469c1b4d05359e5e3393dd8084f3f605af25dd2aaafaecb6212cf680587a267326e2d
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 5.2.0 (2018-10-13)
6
+
7
+ * (troessner) Enable exclusion of single files.
8
+
5
9
  ## 5.1.0 (2018-09-22)
6
10
 
7
11
  * (troessner) Simplify todo list feature.
@@ -89,6 +89,14 @@ class Alfa
89
89
  end
90
90
  ```
91
91
 
92
+ We also aim to make our specs as self-reliant as possible. They should not rely on external sample
93
+ or configuration files since that makes it very hard to reason about them and introduces a tight coupling
94
+ which makes refactoring more difficult.
95
+ Unfortunately our current specs are a bit misleading in this regard since they are often doing the
96
+ opposite, relying on external sample and configuration files (indicated by using
97
+ some of the constants defined in `samples/paths.rb`).
98
+ Our goal is to reverse this development.
99
+
92
100
  ### Cucumber Features
93
101
 
94
102
  Reek uses [Cucumber](https://cucumber.io/) with
data/Gemfile CHANGED
@@ -12,7 +12,7 @@ group :development do
12
12
  gem 'kramdown', '~> 1.17'
13
13
  gem 'rake', '~> 12.0'
14
14
  gem 'rspec', '~> 3.0'
15
- gem 'rspec-benchmark', '~> 0.3.0'
15
+ gem 'rspec-benchmark', '~> 0.4.0'
16
16
  gem 'rubocop', '~> 0.59.1'
17
17
  gem 'rubocop-rspec', '~> 1.29.0'
18
18
  gem 'simplecov', '~> 0.16.1'
data/README.md CHANGED
@@ -324,10 +324,11 @@ directories:
324
324
 
325
325
  ### Excluding directories
326
326
 
327
- # Directories below will not be scanned at all
327
+ # Directories and files below will not be scanned at all
328
328
  exclude_paths:
329
329
  - lib/legacy
330
330
  - lib/rake/legacy_tasks
331
+ - lib/smelly.rb
331
332
  ```
332
333
 
333
334
  As you see above, Reek's configuration consists of 3 different sections denoted by 3 different keys:
@@ -582,6 +583,9 @@ directories:
582
583
  "app/mailers":
583
584
  InstanceVariableAssumption:
584
585
  enabled: false
586
+ "app/models":
587
+ InstanceVariableAssumption:
588
+ enabled: false
585
589
  ```
586
590
 
587
591
  Be careful though, Reek does not merge your configuration entries, so if you already have a directory directive for "app/controllers" or "app/helpers" you need to update those directives instead of copying the above YAML sample into your configuration file.
@@ -129,6 +129,35 @@ An instance variable must:
129
129
 
130
130
  If not, _Instance Variable Assumption_ will be reported.
131
131
 
132
+ ## Using Instance Variable Assumption in a Rails context
133
+
134
+ In ActiveRecord it seems common to use callbacks like `after_initialize` to initialize instance variables as
135
+ outlined [here](https://stackoverflow.com/questions/41165520/overriding-applicationrecord-initialize-bad-idea)
136
+ or [here](http://blog.dalethatcher.com/2008/03/rails-dont-override-initialize-on.html)
137
+ instead of overriding the `initialize` method.
138
+ If an instance variable is initialized in such a callback Reek will report it correspondingly.
139
+
140
+ This would smell for instance:
141
+
142
+ ```Ruby
143
+ class Sample < ApplicationRecord
144
+ after_initialize do
145
+ @my_var = false
146
+ end
147
+ end
148
+ ```
149
+
150
+ Since Reek cannot reliably detect that is used in a Rails context we recommend to disable this detector
151
+ for "app/models" like this:
152
+
153
+ ```Yaml
154
+ directories:
155
+ # Your other configuration....
156
+ "app/models":
157
+ InstanceVariableAssumption:
158
+ enabled: false
159
+ ```
160
+
132
161
  ## Configuration
133
162
 
134
163
  _Instance Variable Assumption_ supports the [Basic Smell Options](Basic-Smell-Options.md).
@@ -43,7 +43,7 @@ Feature: Reek can be controlled using command-line options
43
43
  -c, --config FILE Read configuration options from FILE
44
44
  --smell SMELL Only look for a specific smell.
45
45
  Call it like this: reek --smell MissingSafeMethod source.rb
46
- Check out https://github.com/troessner/reek/blob/v5.1.0/docs/Code-Smells.md for a list of smells
46
+ Check out https://github.com/troessner/reek/blob/v5.2.0/docs/Code-Smells.md for a list of smells
47
47
  --stdin-filename FILE When passing code in via pipe, assume this filename when checking file or directory rules in the config.
48
48
 
49
49
  Generate a todo list:
@@ -120,5 +120,5 @@ Feature: Reek can be controlled using command-line options
120
120
  UnusedPrivateMethod
121
121
  UtilityFunction
122
122
 
123
- Check out https://github.com/troessner/reek/blob/v5.1.0/docs/Code-Smells.md for a details on each detector
123
+ Check out https://github.com/troessner/reek/blob/v5.2.0/docs/Code-Smells.md for a details on each detector
124
124
  """
@@ -3,25 +3,24 @@ Feature: Exclude paths directives
3
3
  As a user
4
4
  I want to be able to exclude specific paths from being checked
5
5
 
6
- Scenario: Exclude some paths
7
- Given a file named "bad_files_live_here/smelly.rb" with:
8
- """
9
- # A smelly example class
10
- class Smelly
11
- def alfa(bravo); end
12
- end
13
- """
6
+ Scenario: Exclude paths
7
+ Given the smelly file "smelly.rb" in the directory "smelly_sources"
8
+ And the smelly file "smelly.rb" in the directory "smelly_as_well"
9
+ And the smelly file "smelly.rb" in the directory "smelly_as_well_2"
14
10
  When I run reek .
15
11
  Then the exit status indicates smells
16
12
  Given a file named "config.reek" with:
17
13
  """
18
14
  ---
19
15
  exclude_paths:
20
- - bad_files_live_here
16
+ - smelly_sources/smelly.rb
17
+ - smelly_as_well/
18
+ - smelly_as_well_2
21
19
  """
22
20
  When I run reek -c config.reek .
23
21
  Then it succeeds
24
22
  And it reports nothing
23
+
25
24
  Scenario: Using a file name within an excluded directory
26
25
  Given a file named "bad_files_live_here/smelly.rb" with:
27
26
  """
@@ -35,8 +35,8 @@ Feature: Validate schema
35
35
 
36
36
  exclude_paths:
37
37
  - lib/legacy
38
- - lib/rake/legacy_tasks
39
38
  """
39
+ And a directory named "lib/legacy"
40
40
  And the clean file "clean.rb"
41
41
  When I run reek -c config.reek clean.rb
42
42
  Then it succeeds
@@ -24,7 +24,7 @@ Feature: Report smells using simple JSON layout
24
24
  "context": "Smelly#x",
25
25
  "lines": [ 4 ],
26
26
  "message": "has the name 'x'",
27
- "documentation_link": "https://github.com/troessner/reek/blob/v5.1.0/docs/Uncommunicative-Method-Name.md",
27
+ "documentation_link": "https://github.com/troessner/reek/blob/v5.2.0/docs/Uncommunicative-Method-Name.md",
28
28
  "name": "x"
29
29
  },
30
30
  {
@@ -33,7 +33,7 @@ Feature: Report smells using simple JSON layout
33
33
  "context": "Smelly#x",
34
34
  "lines": [ 5 ],
35
35
  "message": "has the variable name 'y'",
36
- "documentation_link": "https://github.com/troessner/reek/blob/v5.1.0/docs/Uncommunicative-Variable-Name.md",
36
+ "documentation_link": "https://github.com/troessner/reek/blob/v5.2.0/docs/Uncommunicative-Variable-Name.md",
37
37
  "name": "y"
38
38
  }
39
39
  ]
@@ -53,7 +53,7 @@ Feature: Report smells using simple JSON layout
53
53
  1
54
54
  ],
55
55
  "message": "has no descriptive comment",
56
- "documentation_link": "https://github.com/troessner/reek/blob/v5.1.0/docs/Irresponsible-Module.md"
56
+ "documentation_link": "https://github.com/troessner/reek/blob/v5.2.0/docs/Irresponsible-Module.md"
57
57
  }
58
58
  ]
59
59
  """
@@ -182,8 +182,8 @@ Feature: Correctly formatted reports
182
182
  And it reports:
183
183
  """
184
184
  smelly.rb -- 2 warnings:
185
- [4]:UncommunicativeMethodName: Smelly#x has the name 'x' [https://github.com/troessner/reek/blob/v5.1.0/docs/Uncommunicative-Method-Name.md]
186
- [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y' [https://github.com/troessner/reek/blob/v5.1.0/docs/Uncommunicative-Variable-Name.md]
185
+ [4]:UncommunicativeMethodName: Smelly#x has the name 'x' [https://github.com/troessner/reek/blob/v5.2.0/docs/Uncommunicative-Method-Name.md]
186
+ [5]:UncommunicativeVariableName: Smelly#x has the variable name 'y' [https://github.com/troessner/reek/blob/v5.2.0/docs/Uncommunicative-Variable-Name.md]
187
187
  """
188
188
 
189
189
  Examples:
@@ -209,8 +209,8 @@ Feature: Correctly formatted reports
209
209
  And it reports:
210
210
  """
211
211
  smelly.rb -- 2 warnings:
212
- UncommunicativeMethodName: Smelly#x has the name 'x' [https://github.com/troessner/reek/blob/v5.1.0/docs/Uncommunicative-Method-Name.md]
213
- UncommunicativeVariableName: Smelly#x has the variable name 'y' [https://github.com/troessner/reek/blob/v5.1.0/docs/Uncommunicative-Variable-Name.md]
212
+ UncommunicativeMethodName: Smelly#x has the name 'x' [https://github.com/troessner/reek/blob/v5.2.0/docs/Uncommunicative-Method-Name.md]
213
+ UncommunicativeVariableName: Smelly#x has the variable name 'y' [https://github.com/troessner/reek/blob/v5.2.0/docs/Uncommunicative-Variable-Name.md]
214
214
  """
215
215
 
216
216
  Examples:
@@ -25,7 +25,7 @@ Feature: Report smells using simple YAML layout
25
25
  smell_type: UncommunicativeMethodName
26
26
  source: smelly.rb
27
27
  name: x
28
- documentation_link: https://github.com/troessner/reek/blob/v5.1.0/docs/Uncommunicative-Method-Name.md
28
+ documentation_link: https://github.com/troessner/reek/blob/v5.2.0/docs/Uncommunicative-Method-Name.md
29
29
  - context: Smelly#x
30
30
  lines:
31
31
  - 5
@@ -33,7 +33,7 @@ Feature: Report smells using simple YAML layout
33
33
  smell_type: UncommunicativeVariableName
34
34
  source: smelly.rb
35
35
  name: y
36
- documentation_link: https://github.com/troessner/reek/blob/v5.1.0/docs/Uncommunicative-Variable-Name.md
36
+ documentation_link: https://github.com/troessner/reek/blob/v5.2.0/docs/Uncommunicative-Variable-Name.md
37
37
  """
38
38
 
39
39
  Scenario: Indicate smells and print them as yaml when using STDIN
@@ -48,5 +48,5 @@ Feature: Report smells using simple YAML layout
48
48
  lines:
49
49
  - 1
50
50
  message: has no descriptive comment
51
- documentation_link: https://github.com/troessner/reek/blob/v5.1.0/docs/Irresponsible-Module.md
51
+ documentation_link: https://github.com/troessner/reek/blob/v5.2.0/docs/Irresponsible-Module.md
52
52
  """
@@ -4,6 +4,12 @@ Given(/^the smelly file '(.+)'$/) do |filename|
4
4
  write_file(filename, SAMPLES_DIR.join('smelly_source').join(filename).read)
5
5
  end
6
6
 
7
+ Given(/^the smelly file "(.+)" in the directory "(.+)"$/) do |filename, directory|
8
+ FileUtils.mkdir_p directory
9
+ write_file Pathname(directory).join(filename).to_s,
10
+ SAMPLES_DIR.join('smelly_source').join(filename).read
11
+ end
12
+
7
13
  Given(/^the clean file "(.*)"$/) do |filename|
8
14
  write_file(filename, CLEAN_FILE.read)
9
15
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative './configuration_validator'
4
+ require_relative '../errors/config_file_error'
4
5
 
5
6
  module Reek
6
7
  module Configuration
@@ -10,11 +11,10 @@ module Reek
10
11
  module ExcludedPaths
11
12
  include ConfigurationValidator
12
13
 
13
- # @quality :reek:NestedIterators { max_allowed_nesting: 2 }
14
+ # @param paths [String]
15
+ # @return [undefined]
14
16
  def add(paths)
15
- paths.each do |path|
16
- with_valid_directory(path) { |directory| self << directory }
17
- end
17
+ paths.each { |path| self << Pathname(path) }
18
18
  end
19
19
  end
20
20
  end
@@ -59,6 +59,8 @@ module Reek
59
59
 
60
60
  false
61
61
  end
62
+ elsif path_excluded?(path)
63
+ true
62
64
  else
63
65
  false
64
66
  end
@@ -8,6 +8,6 @@ module Reek
8
8
  # @public
9
9
  module Version
10
10
  # @public
11
- STRING = '5.1.0'
11
+ STRING = '5.2.0'
12
12
  end
13
13
  end
@@ -2,3 +2,4 @@
2
2
  exclude_paths:
3
3
  - samples/source_with_exclude_paths/ignore_me/
4
4
  - samples/source_with_exclude_paths/nested/ignore_me_as_well
5
+ - samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb
@@ -0,0 +1,6 @@
1
+ # Klass comment.
2
+ class Klass
3
+ def meth
4
+ x = 5
5
+ end
6
+ end
@@ -7,48 +7,65 @@ require_lib 'reek/configuration/excluded_paths'
7
7
 
8
8
  RSpec.describe Reek::Configuration::AppConfiguration do
9
9
  describe 'factory methods' do
10
- let(:expected_excluded_paths) do
11
- [SAMPLES_DIR.join('two_smelly_files'),
12
- SAMPLES_DIR.join('source_with_non_ruby_files')]
13
- end
14
-
15
- let(:expected_default_directive) do
16
- { Reek::SmellDetectors::IrresponsibleModule => { 'enabled' => false } }
10
+ around do |example|
11
+ Dir.mktmpdir('/tmp') do |tmp|
12
+ Dir.chdir(tmp) do
13
+ example.run
14
+ end
15
+ end
17
16
  end
18
17
 
19
- let(:expected_directory_directives) do
20
- { SAMPLES_DIR.join('three_clean_files') =>
21
- { Reek::SmellDetectors::UtilityFunction => { 'enabled' => false } } }
18
+ let(:expected_exclude_file_names) do
19
+ %w(exclude_me.rb exclude_me_too.rb)
22
20
  end
23
21
 
24
- let(:default_directive_value) do
25
- { Reek::DETECTORS_KEY =>
26
- { 'IrresponsibleModule' => { 'enabled' => false } } }
22
+ let(:expected_exclude_directories) do
23
+ %w(directory_with_trailing_slash/ directory_without_trailing_slash)
27
24
  end
28
25
 
29
- let(:directory_directives_value) do
30
- { Reek::DIRECTORIES_KEY =>
31
- { 'samples/three_clean_files' =>
32
- { 'UtilityFunction' => { 'enabled' => false } } } }
26
+ let(:expected_excluded_paths) do
27
+ (expected_exclude_file_names + expected_exclude_directories).map { |path| Pathname(path) }
33
28
  end
34
29
 
35
- let(:exclude_paths_value) do
36
- { Reek::EXCLUDE_PATHS_KEY =>
37
- ['samples/two_smelly_files',
38
- 'samples/source_with_non_ruby_files'] }
30
+ let(:expected_default_directive) do
31
+ { Reek::SmellDetectors::IrresponsibleModule => { 'enabled' => false } }
39
32
  end
40
33
 
41
- let(:combined_value) do
42
- directory_directives_value.
43
- merge(default_directive_value).
44
- merge(exclude_paths_value)
34
+ let(:expected_directory_directives) do
35
+ { Pathname('directory_with_some_ruby_files') =>
36
+ { Reek::SmellDetectors::UtilityFunction => { 'enabled' => false } } }
45
37
  end
46
38
 
47
39
  describe '#from_path' do
48
- let(:full_configuration_path) { CONFIGURATION_DIR.join('full_configuration.reek') }
40
+ let(:configuration_path) { 'config.reek' }
41
+ let(:configuration) do
42
+ <<-EOF.strip_heredoc
43
+ ---
44
+ detectors:
45
+ IrresponsibleModule:
46
+ enabled: false
47
+
48
+ directories:
49
+ "directory_with_some_ruby_files":
50
+ UtilityFunction:
51
+ enabled: false
52
+
53
+ exclude_paths:
54
+ - "exclude_me.rb"
55
+ - "exclude_me_too.rb"
56
+ - "directory_with_trailing_slash/"
57
+ - "directory_without_trailing_slash"
58
+ EOF
59
+ end
60
+
61
+ before do
62
+ File.write configuration_path, configuration
63
+ FileUtils.touch expected_exclude_file_names
64
+ FileUtils.mkdir expected_exclude_directories
65
+ end
49
66
 
50
67
  it 'properly loads configuration and processes it' do
51
- config = described_class.from_path full_configuration_path
68
+ config = described_class.from_path configuration_path
52
69
 
53
70
  expect(config.send(:excluded_paths)).to eq(expected_excluded_paths)
54
71
  expect(config.send(:default_directive)).to eq(expected_default_directive)
@@ -57,6 +74,32 @@ RSpec.describe Reek::Configuration::AppConfiguration do
57
74
  end
58
75
 
59
76
  describe '#from_hash' do
77
+ before do
78
+ FileUtils.touch expected_exclude_file_names
79
+ FileUtils.mkdir expected_exclude_directories
80
+ end
81
+
82
+ let(:default_directive_value) do
83
+ { Reek::DETECTORS_KEY =>
84
+ { 'IrresponsibleModule' => { 'enabled' => false } } }
85
+ end
86
+
87
+ let(:directory_directives_value) do
88
+ { Reek::DIRECTORIES_KEY =>
89
+ { 'directory_with_some_ruby_files' =>
90
+ { 'UtilityFunction' => { 'enabled' => false } } } }
91
+ end
92
+
93
+ let(:exclude_paths_value) do
94
+ { Reek::EXCLUDE_PATHS_KEY => (expected_exclude_file_names + expected_exclude_directories) }
95
+ end
96
+
97
+ let(:combined_value) do
98
+ directory_directives_value.
99
+ merge(default_directive_value).
100
+ merge(exclude_paths_value)
101
+ end
102
+
60
103
  it 'sets the configuration a unified simple data structure' do
61
104
  config = described_class.from_hash(combined_value)
62
105
 
@@ -79,7 +122,7 @@ RSpec.describe Reek::Configuration::AppConfiguration do
79
122
 
80
123
  describe '#directive_for' do
81
124
  context 'with multiple directory directives and no default directive present' do
82
- let(:source_via) { 'samples/three_clean_files/dummy.rb' }
125
+ let(:source_via) { 'samples/some_files/dummy1.rb' }
83
126
  let(:baz_config) { { IrresponsibleModule: { enabled: false } } }
84
127
  let(:bang_config) { { Attribute: { enabled: true } } }
85
128
  let(:expected_result) { { Reek::SmellDetectors::Attribute => { enabled: true } } }
@@ -87,8 +130,8 @@ RSpec.describe Reek::Configuration::AppConfiguration do
87
130
  let(:directory_directives) do
88
131
  { Reek::DIRECTORIES_KEY =>
89
132
  {
90
- 'samples/two_smelly_files' => baz_config,
91
- 'samples/three_clean_files' => bang_config
133
+ 'samples/some_files' => bang_config,
134
+ 'samples/other_files' => baz_config
92
135
  } }
93
136
  end
94
137
 
@@ -124,7 +167,7 @@ RSpec.describe Reek::Configuration::AppConfiguration do
124
167
  end
125
168
 
126
169
  context 'with a path not covered by a directory directive but a default directive present' do
127
- let(:source_via) { 'spec/samples/three_clean_files/dummy.rb' }
170
+ let(:source_via) { 'samples/some_files/dummy.rb' }
128
171
 
129
172
  let(:configuration_as_hash) do
130
173
  {
@@ -132,7 +175,7 @@ RSpec.describe Reek::Configuration::AppConfiguration do
132
175
  IrresponsibleModule: { enabled: false }
133
176
  },
134
177
  Reek::DIRECTORIES_KEY =>
135
- { 'spec/samples/two_smelly_files' => { Attribute: { enabled: false } } }
178
+ { 'samples/other_files' => { Attribute: { enabled: false } } }
136
179
  }
137
180
  end
138
181
 
@@ -5,15 +5,12 @@ require_lib 'reek/configuration/excluded_paths'
5
5
  RSpec.describe Reek::Configuration::ExcludedPaths do
6
6
  describe '#add' do
7
7
  let(:exclusions) { [].extend(described_class) }
8
+ let(:paths) { ['smelly/sources'] }
9
+ let(:expected_exclude_paths) { [Pathname('smelly/sources')] }
8
10
 
9
- context 'when one of given paths is a file' do
10
- let(:smelly_source_dir) { SAMPLES_DIR.join('smelly_source') }
11
- let(:file_as_path) { smelly_source_dir.join('inline.rb') }
12
- let(:paths) { [smelly_source_dir, file_as_path] }
13
-
14
- it 'raises an error if one of the given paths is a file' do
15
- expect { exclusions.add(paths) }.to raise_error(Reek::Errors::ConfigFileError)
16
- end
11
+ it 'adds the given paths as Pathname' do
12
+ exclusions.add(paths)
13
+ expect(exclusions).to eq expected_exclude_paths
17
14
  end
18
15
  end
19
16
  end
@@ -92,17 +92,18 @@ RSpec.describe Reek::Source::SourceLocator do
92
92
  end
93
93
  end
94
94
 
95
- context 'when path is a directory' do
95
+ context 'when path is a directory or a file' do
96
96
  let(:path) { SAMPLES_DIR.join('source_with_exclude_paths') }
97
97
 
98
98
  let(:expected_paths) do
99
- [path.join('nested/uncommunicative_parameter_name.rb')]
99
+ [path.join('nested/uncommunicative_variable_name.rb')]
100
100
  end
101
101
 
102
102
  let(:paths_that_are_expected_to_be_ignored) do
103
103
  [
104
104
  path.join('ignore_me/uncommunicative_method_name.rb'),
105
- path.join('nested/ignore_me_as_well/irresponsible_module.rb')
105
+ path.join('nested/ignore_me_as_well/irresponsible_module.rb'),
106
+ path.join('nested/uncommunicative_parameter_name.rb')
106
107
  ]
107
108
  end
108
109
 
@@ -111,7 +112,7 @@ RSpec.describe Reek::Source::SourceLocator do
111
112
  expect(sources).not_to include(*paths_that_are_expected_to_be_ignored)
112
113
  end
113
114
 
114
- it 'scans directories that are not excluded' do
115
+ it 'scans directories and files that are not excluded' do
115
116
  sources = described_class.new([path], configuration: configuration).sources
116
117
  expect(sources).to eq expected_paths
117
118
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reek
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Rutherford
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-09-22 00:00:00.000000000 Z
14
+ date: 2018-10-13 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: codeclimate-engine-rb
@@ -367,6 +367,7 @@ files:
367
367
  - samples/source_with_exclude_paths/ignore_me/uncommunicative_method_name.rb
368
368
  - samples/source_with_exclude_paths/nested/ignore_me_as_well/irresponsible_module.rb
369
369
  - samples/source_with_exclude_paths/nested/uncommunicative_parameter_name.rb
370
+ - samples/source_with_exclude_paths/nested/uncommunicative_variable_name.rb
370
371
  - samples/source_with_hidden_directories/.hidden/hidden.rb
371
372
  - samples/source_with_hidden_directories/not_hidden.rb
372
373
  - samples/source_with_non_ruby_files/gibberish