swagger-diff 1.1.0 → 1.1.1

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
  SHA1:
3
- metadata.gz: 7025ab8a26aa9eb452cbb399bf2fbde273f46299
4
- data.tar.gz: 2a57c963078b714a2e1fa042ce12b2c3fbfa37a3
3
+ metadata.gz: ddac5fb36158431f343142208ecd61a858bd66cf
4
+ data.tar.gz: 74fab6bd47f4cf4c52865451bb25dc0fa082591b
5
5
  SHA512:
6
- metadata.gz: 5963d3d5faf6c84097ffa29ab5cbe45a91b9b7dfa945571aa418ea6a1cb48c9c907a125f47df06c31f5f8b6bb4bdb0c0043a339d15fdb0ccebb6c4545e79b575
7
- data.tar.gz: 5f3579dd89962e0ebb2e88440f8b195886a00002fc147b94e0369f81be4ec2a686dc008918e4a5b129374e089691ebbc3ecfdb57c60bc8359857d00b6da76127
6
+ metadata.gz: b23daecdda524a3181d6c321a73ddabcd6a1431320caccebd1fee8a17ff33c4cd5bc74385e1a97b268f7d2c02faecc87573ed1d8c60310076b707722b9db466b
7
+ data.tar.gz: 2213e486e794349ea51a0dc38fcd4d3f03748285a40050b0e1c4a070b75e22ffc65ad842742c44b1ce31576d2e3a558399dfe05238108167ec05e2887fc4aae4
@@ -1,8 +1,19 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.4
3
+
4
+ Layout/IndentHeredoc:
5
+ Enabled: false
6
+
1
7
  Metrics/AbcSize:
2
8
  Max: 30
3
9
 
10
+ Metrics/BlockLength:
11
+ Exclude:
12
+ - 'swagger-diff.gemspec'
13
+ - 'spec/**/*.rb'
14
+
4
15
  Metrics/ClassLength:
5
- Max: 240
16
+ Max: 250
6
17
 
7
18
  Metrics/LineLength:
8
19
  Max: 120
@@ -13,8 +24,15 @@ Metrics/MethodLength:
13
24
  Metrics/PerceivedComplexity:
14
25
  Max: 10
15
26
 
27
+ # YAML.safe_load is not present in Ruby 2.0.
28
+ Security/YAMLLoad:
29
+ Enabled: false
30
+
16
31
  Style/Documentation:
17
32
  Enabled: false
18
33
 
19
34
  Style/FileName:
20
35
  Enabled: false
36
+
37
+ Style/FrozenStringLiteralComment:
38
+ Enabled: false
@@ -1 +1 @@
1
- 2.3.1
1
+ 2.4.1
@@ -2,9 +2,10 @@ language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
4
  - 2.0
5
- - 2.1.9
6
- - 2.2.5
7
- - 2.3.1
5
+ - 2.1.10
6
+ - 2.2.7
7
+ - 2.3.4
8
+ - 2.4.1
8
9
  before_install:
9
10
  - gem update --system
10
11
  - rvm @global do gem install bundler
@@ -5,6 +5,25 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.1.1] - 2017-08-23
9
+
10
+ ### Added
11
+
12
+ * Added 2.4 to the Travis matrix
13
+
14
+ ### Changed
15
+
16
+ * Bumped the Ruby version for development to 2.4.1
17
+ * Bumped the RuboCop version for development to 0.49
18
+ * Bumped the WebMock version for development to 3
19
+ * Bumped the Travis matrix to 2.1.10, 2.2.7, and 2.3.4
20
+ * RuboCop fixes
21
+
22
+ ### Fixed
23
+
24
+ * [#51](https://github.com/civisanalytics/swagger-diff/pull/51)
25
+ parse nested inline objects
26
+
8
27
  ## [1.1.0] - 2016-05-20
9
28
 
10
29
  ### Added
@@ -78,7 +97,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
78
97
 
79
98
  * Initial Release
80
99
 
81
- [Unreleased]: https://github.com/civisanalytics/swagger-diff/compare/v1.1.0...HEAD
100
+ [Unreleased]: https://github.com/civisanalytics/swagger-diff/compare/v1.1.1...HEAD
101
+ [1.1.1]: https://github.com/civisanalytics/swagger-diff/compare/v1.1.0...v1.1.1
82
102
  [1.1.0]: https://github.com/civisanalytics/swagger-diff/compare/v1.0.5...v1.1.0
83
103
  [1.0.5]: https://github.com/civisanalytics/swagger-diff/compare/v1.0.4...v1.0.5
84
104
  [1.0.4]: https://github.com/civisanalytics/swagger-diff/compare/v1.0.3...v1.0.4
data/README.md CHANGED
@@ -51,11 +51,11 @@ Or install it yourself as:
51
51
 
52
52
  ## Usage
53
53
 
54
- Swagger specifications can be any valid Swagger file format, raw or parsed:
54
+ OAI specifications can be any valid OAI file format, raw or parsed:
55
55
 
56
56
  - the path to a file containing an OAI specification.
57
- This may be local (*e.g.*, `/path/to/swagger.json`) or remote (*e.g.*,
58
- `http://host.domain/swagger.yml`)
57
+ This may be local (*e.g.*, `/path/to/specification.json`) or remote (*e.g.*,
58
+ `http://host.domain/specification.yml`)
59
59
  - a Hash containing a parsed OAI specification (*e.g.*, the output of
60
60
  `JSON.parse`)
61
61
  - a string of JSON containing an OAI specification
data/Rakefile CHANGED
@@ -6,4 +6,4 @@ RSpec::Core::RakeTask.new
6
6
  require 'rubocop/rake_task'
7
7
  RuboCop::RakeTask.new
8
8
 
9
- task default: [:rubocop, :spec]
9
+ task default: %i[rubocop spec]
@@ -124,8 +124,8 @@ module Swagger
124
124
  enumerator = changed_request_params_enumerator(
125
125
  @new_specification,
126
126
  @old_specification,
127
- '%{req} is no longer required',
128
- 'new request param: %{req}'
127
+ '%<req>s is no longer required',
128
+ 'new request param: %<req>s'
129
129
  )
130
130
  change_hash(enumerator)
131
131
  end
@@ -134,7 +134,7 @@ module Swagger
134
134
  idx = req.rindex('/')
135
135
  return false unless idx
136
136
  key = req[0..idx]
137
- !old.any? { |param| param.start_with?(key) }
137
+ old.none? { |param| param.start_with?(key) }
138
138
  end
139
139
 
140
140
  def changed_request_params_enumerator(from, to, req_msg, missing_msg)
@@ -144,10 +144,10 @@ module Swagger
144
144
  next if new_params.nil?
145
145
  (new_params[:required] - old_params[:required]).each do |req|
146
146
  next if new_child?(req, old_params[:all])
147
- yielder << [key, req_msg % { req: req }]
147
+ yielder << [key, format(req_msg, req: req)]
148
148
  end
149
149
  (old_params[:all] - new_params[:all]).each do |req|
150
- yielder << [key, missing_msg % { req: req }]
150
+ yielder << [key, format(missing_msg, req: req)]
151
151
  end
152
152
  end
153
153
  end.lazy
@@ -157,8 +157,8 @@ module Swagger
157
157
  changed_request_params_enumerator(
158
158
  @old_specification,
159
159
  @new_specification,
160
- 'new required request param: %{req}',
161
- 'missing request param: %{req}'
160
+ 'new required request param: %<req>s',
161
+ 'missing request param: %<req>s'
162
162
  )
163
163
  end
164
164
 
@@ -170,8 +170,8 @@ module Swagger
170
170
  enumerator = changed_response_attributes_enumerator(
171
171
  @new_specification,
172
172
  @old_specification,
173
- 'new attribute for %{code} response: %{resp}',
174
- 'new %{code} response'
173
+ 'new attribute for %<code>s response: %<resp>s',
174
+ 'new %<code>s response'
175
175
  )
176
176
  change_hash(enumerator)
177
177
  end
@@ -184,10 +184,10 @@ module Swagger
184
184
  old_attributes.keys.each do |code|
185
185
  if new_attributes.key?(code)
186
186
  (old_attributes[code] - new_attributes[code]).each do |resp|
187
- yielder << [key, attr_msg % { code: code, resp: resp }]
187
+ yielder << [key, format(attr_msg, code: code, resp: resp)]
188
188
  end
189
189
  else
190
- yielder << [key, code_msg % { code: code }]
190
+ yielder << [key, format(code_msg, code: code)]
191
191
  end
192
192
  end
193
193
  end
@@ -198,8 +198,8 @@ module Swagger
198
198
  changed_response_attributes_enumerator(
199
199
  @old_specification,
200
200
  @new_specification,
201
- 'missing attribute from %{code} response: %{resp}',
202
- 'missing %{code} response'
201
+ 'missing attribute from %<code>s response: %<resp>s',
202
+ 'missing %<code>s response'
203
203
  )
204
204
  end
205
205
 
@@ -211,6 +211,7 @@ module Swagger
211
211
  "#{key} (in: body, type: Hash[string, #{type}])"
212
212
  end
213
213
 
214
+ # rubocop:disable Metrics/CyclomaticComplexity
214
215
  def properties(properties, required, prefix = '')
215
216
  ret = { required: Set.new, all: Set.new }
216
217
  properties.each do |name, schema|
@@ -219,6 +220,8 @@ module Swagger
219
220
  elsif schema['type'] == 'object'
220
221
  if schema['allOf']
221
222
  # TODO: handle nested allOfs.
223
+ elsif schema['type'] && schema['type'] == 'object' && schema['properties']
224
+ merge_refs!(ret, properties(schema['properties'], required, "#{prefix}#{name}/"))
222
225
  else
223
226
  ret[:all].add(hash_property(schema, prefix, name))
224
227
  end
@@ -228,6 +231,7 @@ module Swagger
228
231
  end
229
232
  ret
230
233
  end
234
+ # rubocop:enable Metrics/CyclomaticComplexity
231
235
 
232
236
  def request_params_inner(params)
233
237
  ret = { required: Set.new, all: Set.new }
@@ -275,14 +279,13 @@ module Swagger
275
279
  end
276
280
  JSON::Validator.add_schema(json_schema)
277
281
  errors = JSON::Validator.fully_validate(schema_for('oai'), JSON.dump(@parsed))
278
- unless errors.empty?
279
- spec = if @spec.to_s.length > 80
280
- "#{@spec.to_s[0..74]} ..."
281
- else
282
- @spec
283
- end
284
- warn "#{spec} is not a valid Swagger specification:\n\n#{errors.join("\n")}"
285
- end
282
+ return if errors.empty?
283
+ spec = if @spec.to_s.length > 80
284
+ "#{@spec.to_s[0..74]} ..."
285
+ else
286
+ @spec
287
+ end
288
+ warn "#{spec} is not a valid Swagger specification:\n\n#{errors.join("\n")}"
286
289
  end
287
290
  end
288
291
  end
@@ -1,5 +1,5 @@
1
1
  module Swagger
2
2
  module Diff
3
- VERSION = '1.1.0'.freeze
3
+ VERSION = '1.1.1'.freeze
4
4
  end
5
5
  end
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'swagger/diff/version'
@@ -34,7 +35,7 @@ Gem::Specification.new do |spec|
34
35
  spec.add_development_dependency 'rake', '~> 11.1'
35
36
  spec.add_development_dependency 'rspec', '~> 3.3'
36
37
  spec.add_development_dependency 'pry', '~> 0.10.1'
37
- spec.add_development_dependency 'rubocop', '~> 0.40.0'
38
+ spec.add_development_dependency 'rubocop', '~> 0.49.0'
38
39
  spec.add_development_dependency 'vcr', '~> 3.0'
39
- spec.add_development_dependency 'webmock', '~> 2.0'
40
+ spec.add_development_dependency 'webmock', '~> 3.0'
40
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swagger-diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Cousens
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-20 00:00:00.000000000 Z
11
+ date: 2017-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.40.0
103
+ version: 0.49.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.40.0
110
+ version: 0.49.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: vcr
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '2.0'
131
+ version: '3.0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '2.0'
138
+ version: '3.0'
139
139
  description: Swagger::Diff is a utility for comparing two different Open API Initiative
140
140
  (OAI) specifications (fka Swagger specifications). It is intended to determine whether
141
141
  a newer API specification is backwards-compatible with an older API specification.
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  version: '0'
194
194
  requirements: []
195
195
  rubyforge_project:
196
- rubygems_version: 2.6.4
196
+ rubygems_version: 2.6.11
197
197
  signing_key:
198
198
  specification_version: 4
199
199
  summary: Utility for comparing two OAI (fka Swagger) specifications.