danger-spec_postfix 0.0.4 → 0.0.6

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
  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