metadata-json-lint 2.0.2 → 2.1.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
- SHA1:
3
- metadata.gz: a7b70935754237914b80d9ba45e9d45172e5e34d
4
- data.tar.gz: 6f293e3f6f818c64b8407238f0687f400dfa97ca
2
+ SHA256:
3
+ metadata.gz: fb2c947e575640401cda92a61f4b092a3670a0eac2c2bb94de66ce03b6d13d9f
4
+ data.tar.gz: 39c477f21af81c03b70e6e019fe38871d010dd8367561842b67c450d737f9679
5
5
  SHA512:
6
- metadata.gz: a5677fe621a72e4a80cf85a76c2c11a4be29f98d27bdb0fa79aec331a68173f38ff8d5e48b4392d62a328bd990ad670ee30fd1390245811ef799440fdaaeafef
7
- data.tar.gz: 3e2776da0adc039b30c4c4df51f7ffb60b5b233e71faa2cd5b766bdd75387665dc1c65341d1245045a3f288aea54bafc1e131ca1ffc05d772e3621c76ca1420a
6
+ metadata.gz: 6248827093dbcbde3a6e49beed51c61f40ed8b28b443155f04b062ee24f52790004dcb30567f6eb1f750250e0c9df34c0965de264f0589e851ff9706e72b6f39
7
+ data.tar.gz: f66771e15322868d43eb8e140f734e710c84a9035f4f47870c095a1af5d06aca12e4b49be94828bce7ea21773989028d7aea8db912782a9cca6212b489de1824
@@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/).
7
7
 
8
+ ## 2.1.0
9
+
10
+ ### Changes
11
+ * Improve rendering of post\_install message by trimming unnecessary leading
12
+ spaces [#89](https://github.com/voxpupuli/metadata-json-lint/pull/89)
13
+ * Fail when checking version requirements if the version range is empty
14
+ [#91](https://github.com/voxpupuli/metadata-json-lint/pull/91)
15
+ * Pin `public_suffix` gem to < 3 for Ruby <= 2.0
16
+ [#93](https://github.com/voxpupuli/metadata-json-lint/pull/93)
17
+
18
+ ### Fixed
19
+ * Prevent metadata-json-lint from crashing when the `requirements` field does
20
+ not contain an array
21
+ [#94](https://github.com/voxpupuli/metadata-json-lint/pull/94)
22
+ * Fix loading of `semantic_puppet` so that it supports using version vendored
23
+ in Puppet (if available)
24
+ [#96](https://github.com/voxpupuli/metadata-json-lint/pull/96)
25
+
8
26
  ## 2.0.2
9
27
 
10
28
  ### Changes
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ gem 'public_suffix', '< 3' if RUBY_VERSION < '2.1'
@@ -0,0 +1,47 @@
1
+ module MetadataJsonLint
2
+ # Attempts the various methods of loading SemanticPuppet.
3
+ module SemanticPuppetLoader
4
+ def try_load
5
+ try_load_puppet
6
+ return if defined?(SemanticPuppet)
7
+
8
+ try_load_semantic
9
+ return if defined?(SemanticPuppet)
10
+
11
+ try_load_semantic_puppet
12
+ return if defined?(SemanticPuppet)
13
+
14
+ warn 'Could not find semantic_puppet gem, falling back to internal functionality. Version checks may be less robust.'
15
+ end
16
+ module_function :try_load
17
+
18
+ # Most modern Puppet versions have SemanticPuppet vendored in the proper
19
+ # namespace and automatically load it at require time.
20
+ def try_load_puppet
21
+ require 'puppet'
22
+ rescue LoadError
23
+ nil
24
+ end
25
+ module_function :try_load_puppet
26
+
27
+ # Older Puppet 4.x versions have SemanticPuppet vendored but under the
28
+ # Semantic namespace and require it on demand, so we need to load it
29
+ # ourselves and then alias it to SemanticPuppet for convenience.
30
+ def try_load_semantic
31
+ require 'semantic'
32
+ Kernel.const_set('SemanticPuppet', Semantic)
33
+ rescue LoadError
34
+ nil
35
+ end
36
+ module_function :try_load_semantic
37
+
38
+ # If Puppet is not available or is a version that does not have
39
+ # SemanticPuppet vendored, try to load the external gem.
40
+ def try_load_semantic_puppet
41
+ require 'semantic_puppet'
42
+ rescue LoadError
43
+ nil
44
+ end
45
+ module_function :try_load_semantic_puppet
46
+ end
47
+ end
@@ -7,6 +7,7 @@ module MetadataJsonLint
7
7
 
8
8
  if defined?(SemanticPuppet::VersionRange)
9
9
  @range = SemanticPuppet::VersionRange.parse(requirement)
10
+ raise ArgumentError, "Range matches no versions: \"#{requirement}\"" if @range == SemanticPuppet::VersionRange::EMPTY_RANGE
10
11
  elsif requirement.match(/\A[a-z0-9*.\-^~><=|\t ]*\Z/i).nil?
11
12
  raise ArgumentError, "Unparsable version range: \"#{requirement}\""
12
13
  end
@@ -2,11 +2,8 @@ require 'json'
2
2
  require 'spdx-licenses'
3
3
  require 'optparse'
4
4
 
5
- begin
6
- require 'semantic_puppet'
7
- rescue LoadError
8
- $stderr.puts('Could not find semantic_puppet gem, falling back to internal functionality. Version checks may be less robust.')
9
- end
5
+ require 'metadata-json-lint/semantic_puppet_loader'
6
+ MetadataJsonLint::SemanticPuppetLoader.try_load
10
7
 
11
8
  require 'metadata-json-lint/schema'
12
9
  require 'metadata-json-lint/version_requirement'
@@ -133,6 +130,8 @@ module MetadataJsonLint
133
130
  module_function :parse
134
131
 
135
132
  def validate_requirements!(requirements)
133
+ return unless requirements.is_a?(Array)
134
+
136
135
  requirements.each do |requirement|
137
136
  if requirement['name'] == 'pe'
138
137
  warn :requirements, "The 'pe' requirement is no longer supported by the Forge."
@@ -154,6 +153,8 @@ module MetadataJsonLint
154
153
  rescue ArgumentError => e
155
154
  # Raised when the version_requirement provided could not be parsed
156
155
  error :dependencies, "Invalid 'version_requirement' field in metadata.json: #{e}"
156
+ # Skip to the next dependency
157
+ next
157
158
  end
158
159
  validate_version_requirement!(dep, requirement)
159
160
 
@@ -2,7 +2,7 @@ require 'date'
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'metadata-json-lint'
5
- s.version = '2.0.2'
5
+ s.version = '2.1.0'
6
6
  s.date = Date.today.to_s
7
7
  s.summary = 'metadata-json-lint /path/to/metadata.json'
8
8
  s.description = 'Utility to verify Puppet metadata.json files'
@@ -21,12 +21,12 @@ Gem::Specification.new do |s|
21
21
  s.add_runtime_dependency 'json-schema', '~> 2.8'
22
22
  s.add_development_dependency 'rake'
23
23
  s.add_development_dependency 'rspec'
24
- s.add_development_dependency 'rubocop'
24
+ s.add_development_dependency 'rubocop', '~> 0.50.0'
25
25
  s.post_install_message = '
26
26
  ----------------------------------------------------------
27
27
  For the most accurate results, the semantic_puppet
28
28
  gem should be included within your Gemfile if you
29
29
  use Puppet <= 4.8.x
30
30
  ----------------------------------------------------------
31
- '
31
+ '.gsub(/^ /, '')
32
32
  end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift(File.expand_path('../../../lib', __FILE__))
2
+ require 'metadata-json-lint/rake_task'
@@ -0,0 +1 @@
1
+ (ERROR) requirements: The property 'requirements' of type string did not match the following type: array
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "puppetlabs-postgresql",
3
+ "version": "3.4.1",
4
+ "author": "Inkling/Puppet Labs",
5
+ "summary": "PostgreSQL defined resource types",
6
+ "license": "Apache-2.0",
7
+ "source": "git://github.com/puppetlabs/puppet-postgresql.git",
8
+ "project_page": "https://github.com/puppetlabs/puppet-postgresql",
9
+ "issues_url": "https://github.com/puppetlabs/puppet-postgresql/issues",
10
+ "operatingsystem_support": [
11
+ {
12
+ "operatingsystem": "RedHat",
13
+ "operatingsystemrelease": [
14
+ "5",
15
+ "6",
16
+ "7"
17
+ ]
18
+ },
19
+ {
20
+ "operatingsystem": "CentOS",
21
+ "operatingsystemrelease": [
22
+ "5",
23
+ "6",
24
+ "7"
25
+ ]
26
+ },
27
+ {
28
+ "operatingsystem": "OracleLinux",
29
+ "operatingsystemrelease": [
30
+ "5",
31
+ "6",
32
+ "7"
33
+ ]
34
+ },
35
+ {
36
+ "operatingsystem": "Scientific",
37
+ "operatingsystemrelease": [
38
+ "5",
39
+ "6",
40
+ "7"
41
+ ]
42
+ },
43
+ {
44
+ "operatingsystem": "Debian",
45
+ "operatingsystemrelease": [
46
+ "6",
47
+ "7"
48
+ ]
49
+ },
50
+ {
51
+ "operatingsystem": "Ubuntu",
52
+ "operatingsystemrelease": [
53
+ "10.04",
54
+ "12.04",
55
+ "14.04"
56
+ ]
57
+ }
58
+ ],
59
+ "requirements": "aoeu",
60
+ "dependencies": []
61
+ }
@@ -141,6 +141,9 @@ test "tags_no_array" $FAILURE
141
141
  # Run with json output format
142
142
  test "json_format" $FAILURE --format json
143
143
 
144
+ # Run against a metadata.json with a string for the requirements
145
+ test "non_array_requirements" $FAILURE
146
+
144
147
  # Test running without specifying file to parse
145
148
  cd perfect
146
149
  bundle exec metadata-json-lint
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata-json-lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vox Pupuli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-01 00:00:00.000000000 Z
11
+ date: 2018-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spdx-licenses
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 0.50.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 0.50.0
83
83
  description: Utility to verify Puppet metadata.json files
84
84
  email: voxpupuli@groups.io
85
85
  executables:
@@ -100,6 +100,7 @@ files:
100
100
  - bin/metadata-json-lint
101
101
  - lib/metadata-json-lint/rake_task.rb
102
102
  - lib/metadata-json-lint/schema.rb
103
+ - lib/metadata-json-lint/semantic_puppet_loader.rb
103
104
  - lib/metadata-json-lint/version_requirement.rb
104
105
  - lib/metadata_json_lint.rb
105
106
  - metadata-json-lint.gemspec
@@ -138,6 +139,9 @@ files:
138
139
  - tests/no_pe/metadata.json
139
140
  - tests/no_version_range/Rakefile
140
141
  - tests/no_version_range/metadata.json
142
+ - tests/non_array_requirements/Rakefile
143
+ - tests/non_array_requirements/expected
144
+ - tests/non_array_requirements/metadata.json
141
145
  - tests/noname/Rakefile
142
146
  - tests/noname/expected
143
147
  - tests/noname/metadata.json
@@ -169,10 +173,13 @@ homepage: http://github.com/voxpupuli/metadata-json-lint
169
173
  licenses:
170
174
  - Apache-2.0
171
175
  metadata: {}
172
- post_install_message: "\n ----------------------------------------------------------\n
173
- \ For the most accurate results, the semantic_puppet\n gem should be included
174
- within your Gemfile if you\n use Puppet <= 4.8.x\n ----------------------------------------------------------\n
175
- \ "
176
+ post_install_message: |2
177
+
178
+ ----------------------------------------------------------
179
+ For the most accurate results, the semantic_puppet
180
+ gem should be included within your Gemfile if you
181
+ use Puppet <= 4.8.x
182
+ ----------------------------------------------------------
176
183
  rdoc_options: []
177
184
  require_paths:
178
185
  - lib
@@ -188,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
195
  version: '0'
189
196
  requirements: []
190
197
  rubyforge_project:
191
- rubygems_version: 2.4.5
198
+ rubygems_version: 2.7.5
192
199
  signing_key:
193
200
  specification_version: 4
194
201
  summary: metadata-json-lint /path/to/metadata.json
@@ -228,6 +235,9 @@ test_files:
228
235
  - tests/no_pe/metadata.json
229
236
  - tests/no_version_range/Rakefile
230
237
  - tests/no_version_range/metadata.json
238
+ - tests/non_array_requirements/Rakefile
239
+ - tests/non_array_requirements/expected
240
+ - tests/non_array_requirements/metadata.json
231
241
  - tests/noname/Rakefile
232
242
  - tests/noname/expected
233
243
  - tests/noname/metadata.json