graphql-schema_comparator 0.1.0 → 0.2.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 +4 -4
- data/.travis.yml +10 -0
- data/CHANGELOG.md +12 -0
- data/README.md +3 -0
- data/graphql-schema_comparator.gemspec +2 -2
- data/lib/graphql/schema_comparator/changes.rb +8 -6
- data/lib/graphql/schema_comparator/result.rb +4 -7
- data/lib/graphql/schema_comparator/version.rb +1 -1
- metadata +13 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 510c4140ffe9cca7a012282eabc3570cae2bf084
|
4
|
+
data.tar.gz: 2b1236ab94f83ed213f73afc9dcb941a5ac7e097
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2734f4d3159c8b0e0851aacd92e94f016d8aeebdffa4ec33a8473436bb8347dfcf72e8b4c0d821243426f267092efcf2bf1571d83f7f04a3ac598e377da65801
|
7
|
+
data.tar.gz: b00933509012e0c900b6ced4e40c48a09c4ff06278ba9cd5a6a3109d70f6f5d879737f448171da4c9ce0e4c23e2383c7f6b94bd4bc06a0f7d077c166dc931582
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.2.0 (Aug 18 2017)
|
4
|
+
|
5
|
+
### New features
|
6
|
+
|
7
|
+
- Add `#non_breaking_changes` to get a list of non breaking changes from a comparison result. (#4)
|
8
|
+
- CLI now Prints results sorted and grouped by breaking / non-breaking (#3)
|
9
|
+
|
10
|
+
### Bug fixes
|
11
|
+
|
12
|
+
- Fix message for `EnumValueRemoved` (#5)
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# GraphQL::SchemaComparator
|
2
2
|
|
3
|
+
[](https://travis-ci.org/xuorig/graphql-schema_comparator)
|
4
|
+
|
3
5
|
`GraphQL::SchemaComparator` is a GraphQL Schema comparator. What does that mean? `GraphQL::SchemaComparator` takes
|
4
6
|
two GraphQL schemas and outputs a list of changes that happened between the two versions. This is useful for many things:
|
5
7
|
|
@@ -58,6 +60,7 @@ access information on the changes between the two schemas.
|
|
58
60
|
- `result.breaking?` returns true if any breaking changes were found between the two schemas
|
59
61
|
- `result.identical?` returns true if the two schemas were identical
|
60
62
|
- `result.breaking_changes` returns the list of breaking changes found between schemas.
|
63
|
+
- `result.non_breaking_changes` returns the list of non-breaking changes found between schemas.
|
61
64
|
- `result.changes` returns the full list of change objects.
|
62
65
|
|
63
66
|
### Change Objects
|
@@ -26,6 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_development_dependency "bundler", "~> 1.14"
|
28
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
29
|
-
spec.add_development_dependency "minitest"
|
30
|
-
spec.add_development_dependency "pry-byebug"
|
29
|
+
spec.add_development_dependency "minitest", "~> 5.10"
|
30
|
+
spec.add_development_dependency "pry-byebug", "~> 3.4"
|
31
31
|
end
|
@@ -46,14 +46,14 @@ module GraphQL
|
|
46
46
|
class EnumValueRemoved
|
47
47
|
attr_reader :enum_value, :enum_type, :breaking
|
48
48
|
|
49
|
-
def initialize(
|
49
|
+
def initialize(enum_type, enum_value)
|
50
50
|
@enum_value = enum_value
|
51
51
|
@enum_type = enum_type
|
52
52
|
@breaking = true
|
53
53
|
end
|
54
54
|
|
55
55
|
def message
|
56
|
-
"Enum
|
56
|
+
"Enum value `#{enum_value.name}` was removed from enum `#{enum_type.name}`"
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -197,7 +197,7 @@ module GraphQL
|
|
197
197
|
end
|
198
198
|
|
199
199
|
def message
|
200
|
-
"Enum value
|
200
|
+
"Enum value `#{enum_value.name}` was added to enum `#{enum_type.name}`"
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
@@ -499,6 +499,7 @@ module GraphQL
|
|
499
499
|
def initialize(input_object_type, field)
|
500
500
|
@input_object_type = input_object_type
|
501
501
|
@field = field
|
502
|
+
@breaking = field.type.kind.non_null? ? true : false
|
502
503
|
end
|
503
504
|
|
504
505
|
def message
|
@@ -513,7 +514,8 @@ module GraphQL
|
|
513
514
|
@type = type
|
514
515
|
@field = field
|
515
516
|
@argument = argument
|
516
|
-
|
517
|
+
# TODO: should at least have a warning that it may still be breaking
|
518
|
+
@breaking = argument.type.kind.non_null? ? true : false
|
517
519
|
end
|
518
520
|
|
519
521
|
def message
|
@@ -584,7 +586,7 @@ module GraphQL
|
|
584
586
|
def initialize(old_schema, new_schema)
|
585
587
|
@old_schema = old_schema
|
586
588
|
@new_schema = new_schema
|
587
|
-
@breaking =
|
589
|
+
@breaking = true
|
588
590
|
end
|
589
591
|
|
590
592
|
def message
|
@@ -596,7 +598,7 @@ module GraphQL
|
|
596
598
|
def initialize(old_schema, new_schema)
|
597
599
|
@old_schema = old_schema
|
598
600
|
@new_schema = new_schema
|
599
|
-
@breaking =
|
601
|
+
@breaking = true
|
600
602
|
end
|
601
603
|
|
602
604
|
def message
|
@@ -1,22 +1,19 @@
|
|
1
1
|
module GraphQL
|
2
2
|
module SchemaComparator
|
3
3
|
class Result
|
4
|
-
attr_reader :changes
|
4
|
+
attr_reader :changes, :breaking_changes, :non_breaking_changes
|
5
5
|
|
6
6
|
def initialize(changes)
|
7
|
-
@changes = changes
|
7
|
+
@changes = changes.sort_by { |c| [c.breaking ? 1 : 2, c.message] }
|
8
|
+
@breaking_changes, @non_breaking_changes = @changes.partition(&:breaking)
|
8
9
|
end
|
9
10
|
|
10
11
|
def identical?
|
11
12
|
@changes.empty?
|
12
13
|
end
|
13
14
|
|
14
|
-
def breaking_changes
|
15
|
-
@changes.select { |c| c.breaking }
|
16
|
-
end
|
17
|
-
|
18
15
|
def breaking?
|
19
|
-
|
16
|
+
breaking_changes.any?
|
20
17
|
end
|
21
18
|
end
|
22
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-schema_comparator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc-Andre Giroux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|
@@ -70,30 +70,30 @@ dependencies:
|
|
70
70
|
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '5.10'
|
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: '
|
82
|
+
version: '5.10'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry-byebug
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '3.4'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '3.4'
|
97
97
|
description: GraphQL::SchemaComparator compares two GraphQL schemas given their IDL
|
98
98
|
and returns a list of changes.
|
99
99
|
email:
|
@@ -104,6 +104,8 @@ extensions: []
|
|
104
104
|
extra_rdoc_files: []
|
105
105
|
files:
|
106
106
|
- ".gitignore"
|
107
|
+
- ".travis.yml"
|
108
|
+
- CHANGELOG.md
|
107
109
|
- CODE_OF_CONDUCT.md
|
108
110
|
- Gemfile
|
109
111
|
- LICENSE.txt
|
@@ -147,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
149
|
version: '0'
|
148
150
|
requirements: []
|
149
151
|
rubyforge_project:
|
150
|
-
rubygems_version: 2.
|
152
|
+
rubygems_version: 2.6.10
|
151
153
|
signing_key:
|
152
154
|
specification_version: 4
|
153
155
|
summary: Compare GraphQL schemas and get the changes that happened.
|