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 +4 -4
- data/.rubocop.yml +19 -1
- data/.ruby-version +1 -1
- data/.travis.yml +4 -3
- data/CHANGELOG.md +21 -1
- data/README.md +3 -3
- data/Rakefile +1 -1
- data/lib/swagger/diff/diff.rb +13 -13
- data/lib/swagger/diff/specification.rb +11 -8
- data/lib/swagger/diff/version.rb +1 -1
- data/swagger-diff.gemspec +3 -2
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddac5fb36158431f343142208ecd61a858bd66cf
|
4
|
+
data.tar.gz: 74fab6bd47f4cf4c52865451bb25dc0fa082591b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b23daecdda524a3181d6c321a73ddabcd6a1431320caccebd1fee8a17ff33c4cd5bc74385e1a97b268f7d2c02faecc87573ed1d8c60310076b707722b9db466b
|
7
|
+
data.tar.gz: 2213e486e794349ea51a0dc38fcd4d3f03748285a40050b0e1c4a070b75e22ffc65ad842742c44b1ce31576d2e3a558399dfe05238108167ec05e2887fc4aae4
|
data/.rubocop.yml
CHANGED
@@ -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:
|
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
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4.1
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -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.
|
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
|
-
|
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/
|
58
|
-
`http://host.domain/
|
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
data/lib/swagger/diff/diff.rb
CHANGED
@@ -124,8 +124,8 @@ module Swagger
|
|
124
124
|
enumerator = changed_request_params_enumerator(
|
125
125
|
@new_specification,
|
126
126
|
@old_specification,
|
127
|
-
'
|
128
|
-
'new request param:
|
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
|
-
|
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
|
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
|
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:
|
161
|
-
'missing request param:
|
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
|
174
|
-
'new
|
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
|
187
|
+
yielder << [key, format(attr_msg, code: code, resp: resp)]
|
188
188
|
end
|
189
189
|
else
|
190
|
-
yielder << [key, code_msg
|
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
|
202
|
-
'missing
|
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
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
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
|
data/lib/swagger/diff/version.rb
CHANGED
data/swagger-diff.gemspec
CHANGED
@@ -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.
|
38
|
+
spec.add_development_dependency 'rubocop', '~> 0.49.0'
|
38
39
|
spec.add_development_dependency 'vcr', '~> 3.0'
|
39
|
-
spec.add_development_dependency 'webmock', '~>
|
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.
|
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:
|
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.
|
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.
|
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: '
|
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: '
|
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.
|
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.
|