danger-spec_postfix 0.0.4 → 0.0.5
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +17 -6
- data/lib/spec_postfix/gem_version.rb +1 -1
- data/lib/spec_postfix/plugin.rb +8 -9
- data/spec/spec_postfix_spec.rb +33 -20
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f994553adae976417f7e7b521b26896c1268ea3a84b33a0f194bea84cc3b1575
|
4
|
+
data.tar.gz: 8bd8f8b3c83d9f5cb819e8d903034ae60e5327ead7e8b86a3f456c017b4ad1db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7896330e819c4184977dc42df31fccfd4e5ca336b99a76be90eaa0a1cd78888e9ae860ba3b6f3fc3ad4e8ffc393cecbb749820011801acbe1ae09dc1c06fd18d
|
7
|
+
data.tar.gz: 1e42be75ca36f539a36d73dfc4c40c1237202d0ff38155fdd0beef76f81f606242852b6ddbbb924cafbf74e3445927da1da470fe9c8f1bca2a595c401985d34a
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,20 +1,31 @@
|
|
1
|
-
# danger-
|
1
|
+
# danger-spec_postfix
|
2
2
|
|
3
|
-
Danger plugin to validate
|
3
|
+
Danger plugin to validate files (or directories) naming.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
$ gem install danger-spec_postfix
|
8
8
|
|
9
|
-
##
|
9
|
+
## Example of usage
|
10
10
|
|
11
|
-
Add
|
11
|
+
Add to your Dangerfile:
|
12
12
|
|
13
|
-
|
13
|
+
options = {
|
14
|
+
message: 'Tests should have `_spec` postfix',
|
15
|
+
scope: %r{spec/},
|
16
|
+
match: %r{_spec.rb$}
|
17
|
+
}
|
18
|
+
spec_postfix.lint(options)
|
14
19
|
|
15
20
|
You can also pass `exceptions` param in order to skip irrelevant files or directories:
|
16
21
|
|
17
|
-
|
22
|
+
options = {
|
23
|
+
message: 'Tests should have `_spec` postfix',
|
24
|
+
scope: %r{spec/},
|
25
|
+
match: %r{_spec.rb$}
|
26
|
+
exception: Regexp.union(%r{rails_helper.rb}, %r{rails_helper.rb}, %{spec/factories/}, %r{spec/support/})
|
27
|
+
}
|
28
|
+
spec_postfix.lint(options)
|
18
29
|
|
19
30
|
## Development
|
20
31
|
|
data/lib/spec_postfix/plugin.rb
CHANGED
@@ -7,14 +7,17 @@ module Danger
|
|
7
7
|
# @param [Array<String>] files
|
8
8
|
# A globbed string which should return the files that you want to lint, defaults to nil.
|
9
9
|
# if nil, modified and added files from the diff will be used.
|
10
|
+
# @param scope [Regexp] Scope of check
|
11
|
+
# @param match [Regexp] Pattern to match
|
12
|
+
# @param message [String] Warn message
|
13
|
+
# @param exception [Regexp] Not required. In case you get some directories or files out of scope.
|
10
14
|
# @return [void]
|
11
15
|
#
|
12
16
|
class DangerSpecPostfix < Plugin
|
13
|
-
def lint(
|
14
|
-
changed_files.select { |f| f.match?(
|
15
|
-
|
16
|
-
|
17
|
-
.each { |f| warn(warning_generator(f)) }
|
17
|
+
def lint(scope:, match:, message:, exception: nil)
|
18
|
+
wrong_files = changed_files.select { |f| f.match?(scope) }.reject { |f| f.match?(match) }
|
19
|
+
wrong_files = wrong_files.reject { |f| f.match?(exception) } if exception
|
20
|
+
wrong_files.each { |f| warn("#{message}: #{f}") }
|
18
21
|
end
|
19
22
|
|
20
23
|
private
|
@@ -22,9 +25,5 @@ module Danger
|
|
22
25
|
def changed_files
|
23
26
|
(git.modified_files + git.added_files)
|
24
27
|
end
|
25
|
-
|
26
|
-
def warning_generator(file)
|
27
|
-
"Tests should have `_spec` postfix: #{file}"
|
28
|
-
end
|
29
28
|
end
|
30
29
|
end
|
data/spec/spec_postfix_spec.rb
CHANGED
@@ -9,7 +9,21 @@ module Danger
|
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'with Dangerfile' do
|
12
|
-
|
12
|
+
subject do
|
13
|
+
@spec_postfix.lint(options)
|
14
|
+
@spec_postfix.status_report[:warnings]
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:message) { 'Tests should have `_spec` postfix' }
|
18
|
+
let(:scope) { %r{spec/} }
|
19
|
+
let(:match) { %r{_spec.rb$} }
|
20
|
+
let(:options) do
|
21
|
+
{
|
22
|
+
message: message,
|
23
|
+
scope: scope,
|
24
|
+
match: match
|
25
|
+
}
|
26
|
+
end
|
13
27
|
|
14
28
|
before do
|
15
29
|
@spec_postfix = testing_dangerfile.spec_postfix
|
@@ -18,32 +32,31 @@ module Danger
|
|
18
32
|
allow(@spec_postfix.git).to receive(:modified_files).and_return([file_path])
|
19
33
|
end
|
20
34
|
|
21
|
-
|
22
|
-
|
23
|
-
@spec_postfix.status_report[:warnings]
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'with _spec' do
|
27
|
-
let(:file_path) { 'spec/models/my_test_spec.rb' }
|
35
|
+
context 'when match' do
|
36
|
+
let(:file_path) { 'spec/some_test_spec.rb' }
|
28
37
|
|
29
38
|
it { is_expected.to be_empty }
|
30
39
|
end
|
31
40
|
|
32
|
-
context '
|
33
|
-
let(:file_path) { 'spec/
|
41
|
+
context 'when not match' do
|
42
|
+
let(:file_path) { 'spec/some_test.rb' }
|
34
43
|
|
35
|
-
it { is_expected.to eq(["
|
36
|
-
end
|
44
|
+
it { is_expected.to eq(["#{message}: #{file_path}"]) }
|
37
45
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
46
|
+
context 'with exception' do
|
47
|
+
let(:options) do
|
48
|
+
{
|
49
|
+
message: message,
|
50
|
+
scope: scope,
|
51
|
+
match: match,
|
52
|
+
exception: exception
|
53
|
+
}
|
54
|
+
end
|
55
|
+
let(:file_path) { 'spec/spec_helper.rb' }
|
56
|
+
let(:exception) { Regexp.union(%r{spec/factories}, %r{spec_helper.rb}) }
|
43
57
|
|
44
|
-
|
45
|
-
|
46
|
-
it { is_expected.to be_empty }
|
58
|
+
it { is_expected.to be_empty }
|
59
|
+
end
|
47
60
|
end
|
48
61
|
end
|
49
62
|
end
|