swagger-diff 1.1.0 → 1.1.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: 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.