json_schema 0.14.1 → 0.14.3

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: 23a2151b76d4fb55e79b7b2c38d1738cb6d891cc
4
- data.tar.gz: fac096a0e499f17e6a64c732284278d7f4e4c764
3
+ metadata.gz: b1d59f23d58a9aeed30273ccdcec6a106dbede93
4
+ data.tar.gz: d25d184e8fc7bc6345e67ebb89b9c8d21b601ad9
5
5
  SHA512:
6
- metadata.gz: f5fa881adb1b78efeafcaade0d20b5caba675d998591cea60a2ed0d56ef1c7b77377bde23bc9ddfb61a6da6d462225666fbdaa3f01b24559f652c31b68ff3b7d
7
- data.tar.gz: 0327c85a93f4f51e8e4092458168b3822d45c0eabe00c51b82a0273ef93c04191e5fd457229dd774a5cac6a368bc6160aa3eeb3e3a1d17f1983eb218102921f1
6
+ metadata.gz: f33b776903af3753baa223758920ecbb77e1d48dec0973c8cf85fea4bf92c19115f78a5dc8202912ab3d4b6faf861cdf24bf34595f1a882030721364fd56c099
7
+ data.tar.gz: c0e594eb23d5faf03c6b8d14b54e24af9db99be45ae786ccb3ec33af383470b131a5b20b1fa94a2236eb8bb1391cbc2e64a7fca3b1e08fbd0cf14cd621a0e102
data/bin/validate-schema CHANGED
@@ -10,7 +10,7 @@ end
10
10
 
11
11
  command = Commands::ValidateSchema.new
12
12
 
13
- OptionParser.new { |opts|
13
+ parser = OptionParser.new { |opts|
14
14
  opts.on("-d", "--detect", "Detect schema from $schema") do
15
15
  command.detect = true
16
16
 
@@ -21,16 +21,19 @@ OptionParser.new { |opts|
21
21
  opts.on("-s", "--schema SCHEMA", "Additional schema to use for references") do |s|
22
22
  command.extra_schemas << s
23
23
  end
24
- }.parse!
24
+ }
25
25
 
26
- success = command.run(ARGV.dup)
26
+ if $0 == __FILE__
27
+ parser.parse!
28
+ success = command.run(ARGV.dup)
27
29
 
28
- if success
29
- command.messages.each { |m| $stdout.puts(m) }
30
- elsif !command.errors.empty?
31
- command.errors.each { |e| $stderr.puts(e) }
32
- exit(1)
33
- else
34
- print_usage!
35
- exit(1)
30
+ if success
31
+ command.messages.each { |m| $stdout.puts(m) }
32
+ elsif !command.errors.empty?
33
+ command.errors.each { |e| $stderr.puts(e) }
34
+ exit(1)
35
+ else
36
+ print_usage!
37
+ exit(1)
38
+ end
36
39
  end
@@ -0,0 +1,108 @@
1
+ module JsonSchema
2
+ # Attributes mixes in some useful attribute-related methods for use in
3
+ # defining schema classes in a spirit similar to Ruby's attr_accessor and
4
+ # friends.
5
+ module Attributes
6
+ # Provides class-level methods for the Attributes module.
7
+ module ClassMethods
8
+ # Attributes that should be copied between classes when invoking
9
+ # Attributes#copy_from.
10
+ #
11
+ # Hash contains instance variable names mapped to a default value for the
12
+ # field.
13
+ attr_reader :copyable_attrs
14
+
15
+ # Attributes that are part of the JSON schema and hyper-schema
16
+ # specifications. These are allowed to be accessed with the [] operator.
17
+ #
18
+ # Hash contains the access key mapped to the name of the method that should
19
+ # be invoked to retrieve a value. For example, `type` maps to `type` and
20
+ # `additionalItems` maps to `additional_items`.
21
+ attr_reader :schema_attrs
22
+
23
+ # identical to attr_accessible, but allows us to copy in values from a
24
+ # target schema to help preserve our hierarchy during reference expansion
25
+ def attr_copyable(attr, options = {})
26
+ attr_accessor(attr)
27
+
28
+ # Usually the default being assigned here is nil.
29
+ self.copyable_attrs["@#{attr}".to_sym] = options[:default]
30
+
31
+ if default = options[:default]
32
+ # remove the reader already created by attr_accessor
33
+ remove_method(attr)
34
+
35
+ define_method(attr) do
36
+ val = instance_variable_get(:"@#{attr}")
37
+ if !val.nil?
38
+ val
39
+ else
40
+ if [Array, Hash, Set].include?(default.class)
41
+ default.dup
42
+ else
43
+ default
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ def attr_schema(attr, options = {})
51
+ attr_copyable(attr, :default => options[:default])
52
+ self.schema_attrs[options[:schema_name] || attr] = attr
53
+ end
54
+
55
+ # Directive indicating that attributes should be inherited from a parent
56
+ # class.
57
+ #
58
+ # Must appear as first statement in class that mixes in (or whose parent
59
+ # mixes in) the Attributes module.
60
+ def inherit_attrs
61
+ @copyable_attrs = self.superclass.instance_variable_get(:@copyable_attrs).dup
62
+ @schema_attrs = self.superclass.instance_variable_get(:@schema_attrs).dup
63
+ end
64
+
65
+ # Initializes some class instance variables required to make other
66
+ # methods in the Attributes module work. Run automatically when the
67
+ # module is mixed into another class.
68
+ def initialize_attrs
69
+ @copyable_attrs = {}
70
+ @schema_attrs = {}
71
+ end
72
+ end
73
+
74
+ def self.included(klass)
75
+ klass.extend(ClassMethods)
76
+ klass.send(:initialize_attrs)
77
+ end
78
+
79
+ # Allows the values of schema attributes to be accessed with a symbol or a
80
+ # string. So for example, the value of `schema.additional_items` could be
81
+ # procured with `schema[:additionalItems]`. This only works for attributes
82
+ # that are part of the JSON schema specification; other methods on the
83
+ # class are not available (e.g. `expanded`.)
84
+ #
85
+ # This is implemented so that `JsonPointer::Evaluator` can evaluate a
86
+ # reference on an sintance of this class (as well as plain JSON data).
87
+ def [](name)
88
+ name = name.to_sym
89
+ if self.class.schema_attrs.key?(name)
90
+ send(self.class.schema_attrs[name])
91
+ else
92
+ raise NoMethodError, "Schema does not respond to ##{name}"
93
+ end
94
+ end
95
+
96
+ def copy_from(schema)
97
+ self.class.copyable_attrs.each do |copyable, _|
98
+ instance_variable_set(copyable, schema.instance_variable_get(copyable))
99
+ end
100
+ end
101
+
102
+ def initialize_attrs
103
+ self.class.copyable_attrs.each do |attr, _|
104
+ instance_variable_set(attr, nil)
105
+ end
106
+ end
107
+ end
108
+ end
@@ -186,6 +186,13 @@ module JsonSchema
186
186
  link = Schema::Link.new
187
187
  link.parent = schema
188
188
 
189
+ link.data = l
190
+
191
+ # any parsed schema is automatically expanded
192
+ link.expanded = true
193
+
194
+ link.uri = nil
195
+
189
196
  link.description = l["description"]
190
197
  link.enc_type = l["encType"]
191
198
  link.href = l["href"]
@@ -254,10 +254,12 @@ module JsonSchema
254
254
  each { |s| yielder << s }
255
255
 
256
256
  # schemas contained inside hyper-schema links objects
257
- schema.links.map { |l| [l.schema, l.target_schema] }.
258
- flatten.
259
- compact.
260
- each { |s| yielder << s }
257
+ if schema.links
258
+ schema.links.map { |l| [l.schema, l.target_schema] }.
259
+ flatten.
260
+ compact.
261
+ each { |s| yielder << s }
262
+ end
261
263
  end
262
264
  end
263
265
 
@@ -2,45 +2,18 @@ require "json"
2
2
 
3
3
  module JsonSchema
4
4
  class Schema
5
- @@copyable_attrs = []
6
-
7
- # Attributes that are part of the JSON schema and hyper-schema
8
- # specifications. These are allowed to be accessed with the [] operator.
9
- #
10
- # Hash contains the access key mapped to the name of the method that should
11
- # be invoked to retrieve a value. For example, `type` maps to `type` and
12
- # `additionalItems` maps to `additional_items`.
13
- @@schema_attrs = {}
14
-
15
- # identical to attr_accessible, but allows us to copy in values from a
16
- # target schema to help preserve our hierarchy during reference expansion
17
- def self.attr_copyable(attr)
18
- attr_accessor(attr)
19
- @@copyable_attrs << "@#{attr}".to_sym
20
- end
21
-
22
- def self.attr_schema(attr, options = {})
23
- attr_copyable(attr)
24
- @@schema_attrs[options[:schema_name] || attr] = attr
25
- end
26
-
27
- def self.attr_reader_default(attr, default)
28
- # remove the reader already created by attr_accessor
29
- remove_method(attr)
30
-
31
- class_eval("def #{attr} ; !@#{attr}.nil? ? @#{attr} : #{default} ; end")
32
- end
5
+ include Attributes
33
6
 
34
7
  def initialize
8
+ # nil out all our fields so that it's possible to instantiate a schema
9
+ # instance without going through the parser and validate against it
10
+ # without Ruby throwing warnings about uninitialized instance variables.
11
+ initialize_attrs
12
+
13
+ # Don't put this in as an attribute default. We require that this precise
14
+ # pointer gets copied between all clones of any given schema so that they
15
+ # all share exactly the same set.
35
16
  @clones = Set.new
36
-
37
- # nil out all our schema fields so that it's possible to instantiate a
38
- # schema instance without going through the parser and validate against
39
- # it without Ruby throwing warnings about uninitialized instance
40
- # variables.
41
- @@schema_attrs.each do |_, a|
42
- send(:"#{a}=", nil)
43
- end
44
17
  end
45
18
 
46
19
  # Fragment of a JSON Pointer that can help us build a pointer back to this
@@ -73,6 +46,9 @@ module JsonSchema
73
46
  # initialized after the original. Used for JSON Reference expansion. The
74
47
  # only copy not present in this set is the original Schema object.
75
48
  #
49
+ # Note that this doesn't have a default option because we rely on the fact
50
+ # that the set is the *same object* between all clones of any given schema.
51
+ #
76
52
  # Type: Set[Schema]
77
53
  attr_copyable :clones
78
54
 
@@ -94,12 +70,13 @@ module JsonSchema
94
70
  # Type: String
95
71
  attr_schema :id
96
72
 
97
- # Short title of the schema.
73
+ # Short title of the schema (or the hyper-schema link if this is one).
98
74
  #
99
75
  # Type: String
100
76
  attr_schema :title
101
77
 
102
- # More detailed description of the schema.
78
+ # More detailed description of the schema (or the hyper-schema link if this
79
+ # is one).
103
80
  #
104
81
  # Type: String
105
82
  attr_schema :description
@@ -117,19 +94,19 @@ module JsonSchema
117
94
  # set of to be valid.
118
95
  #
119
96
  # Type: Array[Schema]
120
- attr_schema :all_of, :schema_name => :allOf
97
+ attr_schema :all_of, :default => [], :schema_name => :allOf
121
98
 
122
99
  # A collection of subschemas of which data must validate against any schema
123
100
  # in the set to be be valid.
124
101
  #
125
102
  # Type: Array[Schema]
126
- attr_schema :any_of, :schema_name => :anyOf
103
+ attr_schema :any_of, :default => [], :schema_name => :anyOf
127
104
 
128
105
  # A collection of inlined subschemas. Standard convention is to subschemas
129
106
  # here and reference them from elsewhere.
130
107
  #
131
108
  # Type: Hash[String => Schema]
132
- attr_schema :definitions
109
+ attr_schema :definitions, :default => {}
133
110
 
134
111
  # A collection of objects that must include the data for it to be valid.
135
112
  #
@@ -140,7 +117,7 @@ module JsonSchema
140
117
  # one of to be valid.
141
118
  #
142
119
  # Type: Array[Schema]
143
- attr_schema :one_of, :schema_name => :oneOf
120
+ attr_schema :one_of, :default => [], :schema_name => :oneOf
144
121
 
145
122
  # A subschema which data must not validate against to be valid.
146
123
  #
@@ -152,10 +129,10 @@ module JsonSchema
152
129
  # of strings.
153
130
  #
154
131
  # Type: Array[String]
155
- attr_schema :type
132
+ attr_schema :type, :default => []
156
133
 
157
134
  # validation: array
158
- attr_schema :additional_items, :schema_name => :additionalItems
135
+ attr_schema :additional_items, :default => true, :schema_name => :additionalItems
159
136
  attr_schema :items
160
137
  attr_schema :max_items, :schema_name => :maxItems
161
138
  attr_schema :min_items, :schema_name => :minItems
@@ -163,21 +140,21 @@ module JsonSchema
163
140
 
164
141
  # validation: number/integer
165
142
  attr_schema :max
166
- attr_schema :max_exclusive, :schema_name => :maxExclusive
143
+ attr_schema :max_exclusive, :default => false, :schema_name => :maxExclusive
167
144
  attr_schema :min
168
- attr_schema :min_exclusive, :schema_name => :minExclusive
145
+ attr_schema :min_exclusive, :default => false, :schema_name => :minExclusive
169
146
  attr_schema :multiple_of, :schema_name => :multipleOf
170
147
 
171
148
  # validation: object
172
- attr_schema :additional_properties, :schema_name => :additionalProperties
173
- attr_schema :dependencies
149
+ attr_schema :additional_properties, :default => true, :schema_name => :additionalProperties
150
+ attr_schema :dependencies, :default => {}
174
151
  attr_schema :max_properties, :schema_name => :maxProperties
175
152
  attr_schema :min_properties, :schema_name => :minProperties
176
- attr_schema :pattern_properties, :schema_name => :patternProperties
177
- attr_schema :properties
153
+ attr_schema :pattern_properties, :default => {}, :schema_name => :patternProperties
154
+ attr_schema :properties, :default => {}
178
155
  attr_schema :required
179
156
  # warning: strictProperties is technically V5 spec (but I needed it now)
180
- attr_schema :strict_properties, :schema_name => :strictProperties
157
+ attr_schema :strict_properties, :default => false, :schema_name => :strictProperties
181
158
 
182
159
  # validation: string
183
160
  attr_schema :format
@@ -186,29 +163,19 @@ module JsonSchema
186
163
  attr_schema :pattern
187
164
 
188
165
  # hyperschema
189
- attr_schema :links
166
+ attr_schema :links, :default => []
190
167
  attr_schema :media
191
168
  attr_schema :path_start, :schema_name => :pathStart
192
169
  attr_schema :read_only, :schema_name => :readOnly
193
170
 
194
- # Give these properties reader defaults for particular behavior so that we
195
- # can preserve the `nil` nature of their instance variables. Knowing that
196
- # these were `nil` when we read them allows us to properly reflect the
197
- # parsed schema back to JSON.
198
- attr_reader_default :additional_items, true
199
- attr_reader_default :additional_properties, true
200
- attr_reader_default :all_of, []
201
- attr_reader_default :any_of, []
202
- attr_reader_default :definitions, {}
203
- attr_reader_default :dependencies, {}
204
- attr_reader_default :links, []
205
- attr_reader_default :one_of, []
206
- attr_reader_default :max_exclusive, false
207
- attr_reader_default :min_exclusive, false
208
- attr_reader_default :pattern_properties, {}
209
- attr_reader_default :properties, {}
210
- attr_reader_default :strict_properties, false
211
- attr_reader_default :type, []
171
+ # hyperschema link attributes
172
+ attr_schema :enc_type, :default => "application/json"
173
+ attr_schema :href
174
+ attr_schema :media_type, :default => "application/json"
175
+ attr_schema :method
176
+ attr_schema :rel
177
+ attr_schema :schema
178
+ attr_schema :target_schema
212
179
 
213
180
  # allow booleans to be access with question mark
214
181
  alias :additional_items? :additional_items
@@ -218,29 +185,6 @@ module JsonSchema
218
185
  alias :read_only? :read_only
219
186
  alias :unique_items? :unique_items
220
187
 
221
- # Allows the values of schema attributes to be accessed with a symbol or a
222
- # string. So for example, the value of `schema.additional_items` could be
223
- # procured with `schema[:additionalItems]`. This only works for attributes
224
- # that are part of the JSON schema specification; other methods on the
225
- # class are not available (e.g. `expanded`.)
226
- #
227
- # This is implemented so that `JsonPointer::Evaluator` can evaluate a
228
- # reference on an sintance of this class (as well as plain JSON data).
229
- def [](name)
230
- name = name.to_sym
231
- if @@schema_attrs.key?(name)
232
- send(@@schema_attrs[name])
233
- else
234
- raise NoMethodError, "Schema does not respond to ##{name}"
235
- end
236
- end
237
-
238
- def copy_from(schema)
239
- @@copyable_attrs.each do |copyable|
240
- instance_variable_set(copyable, schema.instance_variable_get(copyable))
241
- end
242
- end
243
-
244
188
  def expand_references(options = {})
245
189
  expander = ReferenceExpander.new
246
190
  if expander.expand(self, options)
@@ -267,7 +211,7 @@ module JsonSchema
267
211
  str
268
212
  else
269
213
  hash = {}
270
- @@copyable_attrs.each do |copyable|
214
+ self.class.copyable_attrs.each do |copyable, _|
271
215
  next if [:@clones, :@data, :@parent, :@uri].include?(copyable)
272
216
  if value = instance_variable_get(copyable)
273
217
  if value.is_a?(Array)
@@ -319,27 +263,8 @@ module JsonSchema
319
263
  end
320
264
 
321
265
  # Link subobject for a hyperschema.
322
- class Link
323
- attr_accessor :parent
324
-
325
- # schema attributes
326
- attr_accessor :description
327
- attr_writer :enc_type
328
- attr_accessor :href
329
- attr_writer :media_type
330
- attr_accessor :method
331
- attr_accessor :rel
332
- attr_accessor :schema
333
- attr_accessor :target_schema
334
- attr_accessor :title
335
-
336
- def enc_type
337
- @enc_type || "application/json"
338
- end
339
-
340
- def media_type
341
- @media_type || "application/json"
342
- end
266
+ class Link < Schema
267
+ inherit_attrs
343
268
  end
344
269
 
345
270
  # Media type subobject for a hyperschema.
@@ -409,8 +409,9 @@ module JsonSchema
409
409
 
410
410
  num_valid = schema.one_of.count do |subschema|
411
411
  current_sub_errors = []
412
+ valid = validate_data(subschema, data, current_sub_errors, path)
412
413
  sub_errors << current_sub_errors
413
- validate_data(subschema, data, current_sub_errors, path)
414
+ valid
414
415
  end
415
416
 
416
417
  return true if num_valid == 1
@@ -498,7 +499,7 @@ module JsonSchema
498
499
  end
499
500
 
500
501
  def validate_type(schema, data, errors, path)
501
- return true if schema.type.empty?
502
+ return true if !schema.type || schema.type.empty?
502
503
  valid_types = schema.type.map { |t| TYPE_MAP[t] }.flatten.compact
503
504
  if valid_types.any? { |t| data.is_a?(t) }
504
505
  true
data/lib/json_schema.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require_relative "json_schema/attributes"
1
2
  require_relative "json_schema/configuration"
2
3
  require_relative "json_schema/document_store"
3
4
  require_relative "json_schema/error"
data/test/bin_test.rb ADDED
@@ -0,0 +1,20 @@
1
+ require "test_helper"
2
+
3
+ #
4
+ # The purpose of this sets of tests is just to include our Ruby executables
5
+ # where possible so that we can get very basic sanity checks on their syntax
6
+ # (which is something that of course Ruby can't do by default).
7
+ #
8
+ # We can do this without actually executing them because they're gated by `if
9
+ # $0 == __FILE__` statements.
10
+ #
11
+
12
+ describe "executables in bin/" do
13
+ before do
14
+ @bin_dir = File.expand_path("../../bin", __FILE__)
15
+ end
16
+
17
+ it "has roughly valid Ruby structure for validate-schema" do
18
+ load File.join(@bin_dir, "validate-schema")
19
+ end
20
+ end
@@ -1,6 +1,7 @@
1
1
  require "test_helper"
2
2
 
3
3
  require "json_pointer"
4
+ require "json_schema"
4
5
 
5
6
  describe JsonPointer::Evaluator do
6
7
  before do
@@ -0,0 +1,98 @@
1
+ require "test_helper"
2
+
3
+ require "json_schema"
4
+
5
+ describe JsonSchema::Attributes do
6
+ it "defines copyable attributes" do
7
+ obj = TestAttributes.new
8
+ obj.copyable = "foo"
9
+ assert_equal "foo", obj.copyable
10
+ assert_includes obj.class.copyable_attrs, :@copyable
11
+ end
12
+
13
+ it "defines schema attributes" do
14
+ obj = TestAttributes.new
15
+ obj.schema = "foo"
16
+ assert_equal "foo", obj.schema
17
+ assert_equal({:schema => :schema, :named => :schema_named},
18
+ obj.class.schema_attrs)
19
+ end
20
+
21
+ it "defines attributes with default readers" do
22
+ obj = TestAttributes.new
23
+ assert_equal [], obj.copyable_default
24
+
25
+ assert_equal "application/json", obj.copyable_default_with_string
26
+
27
+ hash = obj.copyable_default_with_object
28
+ assert_equal({}, hash)
29
+ hash[:x] = 123
30
+
31
+ # This is a check to make sure that the new object is not the same object
32
+ # as the one that we just mutated above. When assigning defaults the module
33
+ # should dup any common data strcutures that it puts in here.
34
+ obj = TestAttributes.new
35
+ hash = obj.copyable_default_with_object
36
+ assert_equal({}, hash)
37
+ end
38
+
39
+ it "inherits attributes when so instructed" do
40
+ obj = TestAttributesDescendant.new
41
+ assert_includes obj.class.copyable_attrs, :@copyable
42
+ end
43
+
44
+ it "allows schema attributes to be indexed but not others" do
45
+ obj = TestAttributes.new
46
+
47
+ obj.copyable = "non-schema"
48
+ obj.schema = "schema"
49
+
50
+ assert_raises NoMethodError do
51
+ assert_equal nil, obj[:copyable]
52
+ end
53
+
54
+ assert_equal "schema", obj[:schema]
55
+ end
56
+
57
+ it "copies attributes with #copy_from" do
58
+ obj = TestAttributes.new
59
+
60
+ obj.copyable = "copyable"
61
+ obj.schema = "schema"
62
+
63
+ obj2 = TestAttributes.new
64
+ obj2.copy_from(obj)
65
+
66
+ assert_equal "copyable", obj2.copyable
67
+ assert_equal "schema", obj2.schema
68
+ end
69
+
70
+ it "initializes attributes with #initialize_attrs" do
71
+ obj = TestAttributes.new
72
+
73
+ # should produce a nil value *without* a Ruby warning
74
+ assert_equal nil, obj.copyable
75
+ assert_equal nil, obj.schema
76
+ end
77
+
78
+ class TestAttributes
79
+ include JsonSchema::Attributes
80
+
81
+ def initialize
82
+ initialize_attrs
83
+ end
84
+
85
+ attr_copyable :copyable
86
+
87
+ attr_schema :schema
88
+ attr_schema :schema_named, :schema_name => :named
89
+
90
+ attr_copyable :copyable_default, :default => []
91
+ attr_copyable :copyable_default_with_string, :default => "application/json"
92
+ attr_copyable :copyable_default_with_object, :default => {}
93
+ end
94
+
95
+ class TestAttributesDescendant < TestAttributes
96
+ inherit_attrs
97
+ end
98
+ end
@@ -265,6 +265,18 @@ describe JsonSchema::ReferenceExpander do
265
265
  assert schema.expanded?
266
266
  end
267
267
 
268
+ it "expands a reference to a link" do
269
+ pointer("#/properties").merge!(
270
+ "link" => { "$ref" => "#/links/0" }
271
+ )
272
+ assert expand
273
+
274
+ referenced = @schema.links[0]
275
+ reference = @schema.properties["link"]
276
+
277
+ assert_equal reference.href, referenced.href
278
+ end
279
+
268
280
  def error_messages
269
281
  @expander.errors.map { |e| e.message }
270
282
  end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,16 @@
1
+ if RUBY_VERSION >= '2.0.0'
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ # We do our utmost to test our executables by modularizing them into
5
+ # testable pieces, but testing them to completion is nearly impossible as
6
+ # far as I can tell, so include them in our tests but don't calculate
7
+ # coverage.
8
+ add_filter "/bin/"
9
+
10
+ add_filter "/test/"
11
+ end
12
+ end
13
+
1
14
  require "minitest"
2
15
  require "minitest/autorun"
3
16
  #require "pry-rescue/minitest"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 0.14.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandur
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-07 00:00:00.000000000 Z
11
+ date: 2016-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ecma-re-validator
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description:
98
112
  email:
99
113
  - brandur@mutelight.org
@@ -110,6 +124,7 @@ files:
110
124
  - lib/json_pointer/evaluator.rb
111
125
  - lib/json_reference.rb
112
126
  - lib/json_schema.rb
127
+ - lib/json_schema/attributes.rb
113
128
  - lib/json_schema/configuration.rb
114
129
  - lib/json_schema/document_store.rb
115
130
  - lib/json_schema/error.rb
@@ -120,10 +135,12 @@ files:
120
135
  - schemas/hyper-schema.json
121
136
  - schemas/open-api-schema.json
122
137
  - schemas/schema.json
138
+ - test/bin_test.rb
123
139
  - test/commands/validate_schema_test.rb
124
140
  - test/data_scaffold.rb
125
141
  - test/json_pointer/evaluator_test.rb
126
142
  - test/json_reference/reference_test.rb
143
+ - test/json_schema/attribute_test.rb
127
144
  - test/json_schema/document_store_test.rb
128
145
  - test/json_schema/error_test.rb
129
146
  - test/json_schema/parser_test.rb