danger-spec_postfix 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb88efc2559876baef00d2c8339fc8c331ba086443dda16b240c04fa669f41b6
4
- data.tar.gz: da7ccb91e79a960316d896c479e6ea93537f18311d52f257d71cab25a4655e33
3
+ metadata.gz: acf829f0845c574d42a1fb15cc83470b25574042efd05749ec3b533bde18dcaf
4
+ data.tar.gz: fc48c175541ec881fc91779b353201bfa7556b0a51ec4dd673db0d37724a1478
5
5
  SHA512:
6
- metadata.gz: c8dcbd37fc22a213ee5ad3c43b7333f6bbf100c14c6e7da372a83828337e66c89a525bc088609fc195707cc864c4b6cac15714ffaf2a1273352b59a900d6e68f
7
- data.tar.gz: 51f52ec49624703032a7be42cb99f59a86550bc1e5a7e27da2b9195724030685afbc155f6005de08b85ba1462782d10d9f9e772f48219ebcc60395471ba7c287
6
+ metadata.gz: 4a629d1298c250bbcfdebb1d117a021de6760d23b6e5081110e9b36e9dc46f480eb2e449ae53fb534ceb286a71456c1ce2d2f76401719ba5df45f2fcf1c86d8d
7
+ data.tar.gz: cd7976ffc6b336ad6293dba8fc7bafe1962d85426b6833d86e245ad014c7bb2e590f07dbb80ff6f2d6263922356410f0f81578236cd79e8681146c21c1cdacbf
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ usage.rb
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-spec_postfix (0.0.4)
4
+ danger-spec_postfix (0.0.6)
5
5
  danger-plugin-api (~> 1.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,20 +1,43 @@
1
- # danger-readme_docs
1
+ # danger-spec_postfix
2
2
 
3
- Danger plugin to validate sub README mention in main README file
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
- ## Usage
9
+ ## Example of usage
10
10
 
11
- Add this to your Dangerfile:
11
+ 1. Add lint to your Dangerfile (specifying what you want to check and how)
12
12
 
13
- spec_postfix.lint
13
+ For example in order to make sure that all tests in your 'spec/' folder have required postfix '_spec' (this is the purpose plugin was initially built for) add:
14
+
15
+ ```
16
+ options = {
17
+ message: 'Tests should have `_spec` postfix',
18
+ scope: %r{spec/},
19
+ match: %r{_spec.rb$}
20
+ }
21
+ spec_postfix.lint(options)
22
+ ```
14
23
 
15
24
  You can also pass `exceptions` param in order to skip irrelevant files or directories:
16
25
 
17
- spec_postfix.lint(exceptions: ['rails_helper.rb', 'rails_helper.rb', 'spec/factories/', 'spec/support/'])
26
+ ```
27
+ options = {
28
+ message: 'Tests should have `_spec` postfix',
29
+ scope: %r{spec/},
30
+ match: %r{_spec.rb$}
31
+ exception: Regexp.union(%r{rails_helper.rb}, %r{rails_helper.rb}, %{spec/factories/}, %r{spec/support/})
32
+ }
33
+ spec_postfix.lint(options)
34
+ ```
35
+
36
+ 2. Get warnings:
37
+
38
+ ```
39
+ "Tests should have `_spec` postfix: spec/models/test_without_postfix.rb"
40
+ ```
18
41
 
19
42
  ## Development
20
43
 
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.version = SpecPostfix::VERSION
10
10
  spec.authors = ['Igor Udalov']
11
11
  spec.email = ['i.udalov@rambler-co.ru']
12
- spec.summary = "Danger plugin to validate '_spec' postfix in tests"
12
+ spec.summary = "Danger plugin to validate files (or directories) naming."
13
13
  spec.homepage = 'https://github.com/rambler-digital-solutions/danger-spec_postfix'
14
14
  spec.license = 'MIT'
15
15
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SpecPostfix
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.6'
5
5
  end
@@ -1,20 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Danger
4
- # Lints the test files. Will fail if any has no '_spec' postfix.
4
+ # Lints files (or directories) naming.
5
5
  # Generates a `string` with warning.
6
6
  #
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 want to get some directories or files out of scope.
10
14
  # @return [void]
11
15
  #
12
16
  class DangerSpecPostfix < Plugin
13
- def lint(exceptions: [])
14
- changed_files.select { |f| f.match?(%r{^spec/.*rb$}) }
15
- .reject { |f| f.end_with?('_spec.rb') }
16
- .reject { |f| exceptions.any? { |e| f.start_with?(e) } }
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
@@ -9,7 +9,21 @@ module Danger
9
9
  end
10
10
 
11
11
  describe 'with Dangerfile' do
12
- let(:file_path) { nil }
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
- subject do
22
- @spec_postfix.lint
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 'with no _spec' do
33
- let(:file_path) { 'spec/models/my_test.rb' }
41
+ context 'when not match' do
42
+ let(:file_path) { 'spec/some_test.rb' }
34
43
 
35
- it { is_expected.to eq(["Tests should have `_spec` postfix: #{file_path}"]) }
36
- end
44
+ it { is_expected.to eq(["#{message}: #{file_path}"]) }
37
45
 
38
- context 'when is irrelevant (exceptions)' do
39
- subject do
40
- @spec_postfix.lint(exceptions: ['not_tests/'])
41
- @spec_postfix.status_report[:warnings]
42
- end
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
- let(:file_path) { 'not_tests/factory.rb' }
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
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-spec_postfix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Udalov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-17 00:00:00.000000000 Z
11
+ date: 2023-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger-plugin-api
@@ -171,6 +171,7 @@ executables: []
171
171
  extensions: []
172
172
  extra_rdoc_files: []
173
173
  files:
174
+ - ".gitignore"
174
175
  - Gemfile
175
176
  - Gemfile.lock
176
177
  - Guardfile
@@ -206,7 +207,7 @@ requirements: []
206
207
  rubygems_version: 3.1.6
207
208
  signing_key:
208
209
  specification_version: 4
209
- summary: Danger plugin to validate '_spec' postfix in tests
210
+ summary: Danger plugin to validate files (or directories) naming.
210
211
  test_files:
211
212
  - spec/spec_helper.rb
212
213
  - spec/spec_postfix_spec.rb