rubocop-cask 0.10.0 → 0.10.1

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
  SHA1:
3
- metadata.gz: bc41b93e46d74f5a11c71dda2ca017d9f7adca15
4
- data.tar.gz: 7464060b75c9104bb9ff85948c738d19f63f750c
3
+ metadata.gz: 24d992c9eea4197d74d5c85d4a61fe4cace1527e
4
+ data.tar.gz: bf06c75b18669a7bf7e64a0a6919e8797d55c5ea
5
5
  SHA512:
6
- metadata.gz: 6a35ab58a638ea9425891964a4f407c807574db4608b99ae7e7962bc7b6d1ba7f4551e8cacc9601cb47febf98ed16be0099efa08ad16b6ed2a2745b771003391
7
- data.tar.gz: bc2361de09827a110939c2a7717640002f18b0fb1f42a2074ea1392ac901c6742a553bb2cb99ed60223666eff8e2c5d3bd0602bccfa891079678054c4d462acc
6
+ metadata.gz: 2da13aead784851dea5e2889aeb14106e788630225200fa9f058b9e8b186b9ab2e0a33442f5dff1918204cfe24938bff13cfc8230a40484c74225c514e2c28f4
7
+ data.tar.gz: 575ec4e8f2149ec6b8681ba8ad2eed4407fecfd43b00a458df677f19d9c8039ccc4f2b7a05a1facfe9d579451101d2d1f8c42b825bb4a673e6840de1fd78ee16
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Cask
5
5
  # Version information for the Cask RuboCop plugin.
6
6
  module Version
7
- STRING = '0.10.0'.freeze
7
+ STRING = '0.10.1'.freeze
8
8
 
9
9
  def self.gem_version
10
10
  Gem::Version.new(STRING)
@@ -12,11 +12,17 @@ module RuboCop
12
12
  extend Forwardable
13
13
  include CaskHelp
14
14
 
15
+ REFERENCE_URL = 'https://github.com/caskroom/homebrew-cask/blob/master/doc/cask_language_reference/stanzas/url.md#when-url-and-homepage-hostnames-differ-add-a-comment'.freeze
16
+
17
+ COMMENT_FORMAT = /# [^ ]+ was verified as official when first introduced to the cask/
18
+
15
19
  MSG_NO_MATCH = '`%s` does not match `%s`'.freeze
16
20
 
17
21
  MSG_MISSING = '`%s` does not match `%s`, a comment has to be added ' \
18
- 'above the `url` stanza. For details, see ' \
19
- 'https://github.com/caskroom/homebrew-cask/blob/master/doc/cask_language_reference/stanzas/url.md#when-url-and-homepage-hostnames-differ-add-a-comment'.freeze
22
+ 'above the `url` stanza. For details, see ' + REFERENCE_URL
23
+
24
+ MSG_WRONG_FORMAT = '`%s` does not match the expected comment format. ' \
25
+ 'For details, see ' + REFERENCE_URL
20
26
 
21
27
  MSG_UNNECESSARY = '`%s` matches `%s`, the comment above the `url` ' \
22
28
  'stanza is unnecessary'.freeze
@@ -34,35 +40,53 @@ module RuboCop
34
40
 
35
41
  def add_offenses
36
42
  toplevel_stanzas.select(&:url?).each do |url|
37
- if url_match_homepage?(url)
38
- next unless comment?(url) && comment_matches_url?(url)
39
- add_offense_unnecessary_comment(url)
40
- elsif !comment?(url)
41
- add_offense_missing_comment(url)
42
- elsif !comment_matches_url?(url)
43
- add_offense_no_match(url)
44
- end
43
+ next if add_offense_unnecessary_comment(url)
44
+ next if add_offense_missing_comment(url)
45
+ next if add_offense_no_match(url)
46
+ next if add_offense_wrong_format(url)
45
47
  end
46
48
  end
47
49
 
50
+ def add_offense_unnecessary_comment(stanza)
51
+ return unless comment?(stanza)
52
+ return unless url_match_homepage?(stanza)
53
+ return unless comment_matches_url?(stanza)
54
+
55
+ comment = comment(stanza).loc.expression
56
+ add_offense(comment,
57
+ comment,
58
+ format(MSG_UNNECESSARY, domain(stanza), homepage))
59
+ end
60
+
48
61
  def add_offense_missing_comment(stanza)
62
+ return if url_match_homepage?(stanza)
63
+ return if !url_match_homepage?(stanza) && comment?(stanza)
64
+
49
65
  range = stanza.source_range
50
66
  url_domain = domain(stanza)
51
67
  add_offense(range, range, format(MSG_MISSING, url_domain, homepage, url_domain))
52
68
  end
53
69
 
54
- def add_offense_unnecessary_comment(stanza)
70
+ def add_offense_no_match(stanza)
71
+ return if url_match_homepage?(stanza)
72
+ return unless comment?(stanza)
73
+ return if !url_match_homepage?(stanza) && comment_matches_url?(stanza)
74
+
55
75
  comment = comment(stanza).loc.expression
56
76
  add_offense(comment,
57
77
  comment,
58
- format(MSG_UNNECESSARY, domain(stanza), homepage))
78
+ format(MSG_NO_MATCH, url_from_comment(stanza), full_url(stanza)))
59
79
  end
60
80
 
61
- def add_offense_no_match(stanza)
81
+ def add_offense_wrong_format(stanza)
82
+ return if url_match_homepage?(stanza)
83
+ return unless comment?(stanza)
84
+ return if comment_matches_format?(stanza)
85
+
62
86
  comment = comment(stanza).loc.expression
63
87
  add_offense(comment,
64
88
  comment,
65
- format(MSG_NO_MATCH, url_from_comment(stanza), full_url(stanza)))
89
+ format(MSG_WRONG_FORMAT, comment(stanza).text))
66
90
  end
67
91
 
68
92
  def comment?(stanza)
@@ -73,9 +97,13 @@ module RuboCop
73
97
  stanza.comments.last
74
98
  end
75
99
 
100
+ def comment_matches_format?(stanza)
101
+ comment(stanza).text =~ COMMENT_FORMAT
102
+ end
103
+
76
104
  def url_from_comment(stanza)
77
105
  comment(stanza).text
78
- .sub(/.*# ([^ ]*) was verified as official when first introduced to the cask$/, '\1')
106
+ .sub(/[^ ]*# ([^ ]+) .*/, '\1')
79
107
  end
80
108
 
81
109
  def comment_matches_url?(stanza)
@@ -93,6 +93,31 @@ describe RuboCop::Cop::Cask::HomepageMatchesUrl do
93
93
  context 'when the url does not match the homepage' do
94
94
  context 'and there is a comment' do
95
95
  context 'which matches the url' do
96
+ context 'but does not match the expected format' do
97
+ let(:source) do
98
+ <<-CASK.undent
99
+ cask 'foo' do
100
+ # example.com was verified as official
101
+ url 'https://example.com/foo.zip'
102
+ homepage 'https://foo.example.org'
103
+ end
104
+ CASK
105
+ end
106
+ let(:expected_offenses) do
107
+ [{
108
+ message: '`# example.com was verified as official` does not ' \
109
+ 'match the expected comment format. For details, see ' \
110
+ 'https://github.com/caskroom/homebrew-cask/blob/master/doc/cask_language_reference/stanzas/url.md#when-url-and-homepage-hostnames-differ-add-a-comment',
111
+ severity: :convention,
112
+ line: 2,
113
+ column: 2,
114
+ source: '# example.com was verified as official'
115
+ }]
116
+ end
117
+
118
+ include_examples 'reports offenses'
119
+ end
120
+
96
121
  context 'and does not have slashes' do
97
122
  let(:source) do
98
123
  <<-CASK.undent
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-cask
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Hagins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-28 00:00:00.000000000 Z
11
+ date: 2016-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: public_suffix
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.43.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.43.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.3'
55
55
  description: |2
@@ -63,7 +63,10 @@ extra_rdoc_files:
63
63
  - MIT-LICENSE.md
64
64
  - README.md
65
65
  files:
66
+ - MIT-LICENSE.md
67
+ - README.md
66
68
  - config/default.yml
69
+ - lib/rubocop-cask.rb
67
70
  - lib/rubocop/cask/ast/cask_block.rb
68
71
  - lib/rubocop/cask/ast/cask_header.rb
69
72
  - lib/rubocop/cask/ast/stanza.rb
@@ -77,9 +80,6 @@ files:
77
80
  - lib/rubocop/cop/cask/no_dsl_version.rb
78
81
  - lib/rubocop/cop/cask/stanza_grouping.rb
79
82
  - lib/rubocop/cop/cask/stanza_order.rb
80
- - lib/rubocop-cask.rb
81
- - MIT-LICENSE.md
82
- - README.md
83
83
  - spec/project_spec.rb
84
84
  - spec/rubocop/cop/cask/homepage_matches_url_spec.rb
85
85
  - spec/rubocop/cop/cask/no_dsl_version_spec.rb
@@ -97,17 +97,17 @@ require_paths:
97
97
  - lib
98
98
  required_ruby_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - '>='
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: 1.9.3
103
103
  required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - '>='
105
+ - - ">="
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.0.14.1
110
+ rubygems_version: 2.6.6
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Code style checking for Homebrew-Cask files