Skip to content

Commit

Permalink
Merge pull request #155 from pd/fix-metaschema-access
Browse files Browse the repository at this point in the history
Fix metaschema access
  • Loading branch information
hoxworth committed Oct 28, 2014
2 parents d00198c + 99278f1 commit e781e39
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 6 deletions.
9 changes: 7 additions & 2 deletions lib/json-schema/schema/validator.rb
@@ -1,7 +1,7 @@
module JSON
class Schema
class Validator
attr_accessor :attributes, :formats, :uri, :names, :metaschema
attr_accessor :attributes, :formats, :uri, :names
attr_reader :default_formats

def initialize()
Expand All @@ -10,7 +10,7 @@ def initialize()
@default_formats = {}
@uri = nil
@names = []
@metaschema = ''
@metaschema_name = ''
end

def extend_schema_definition(schema_uri)
Expand All @@ -26,6 +26,11 @@ def validate(current_schema, data, fragments, processor, options = {})
end
data
end

def metaschema
resources = File.expand_path('../../../../resources', __FILE__)
File.join(resources, @metaschema_name)
end
end
end
end
2 changes: 1 addition & 1 deletion lib/json-schema/validators/draft1.rb
Expand Up @@ -35,7 +35,7 @@ def initialize
@formats = @default_formats.clone
@uri = URI.parse("http://json-schema.org/draft-01/schema#")
@names = ["draft1"]
@metaschema = File.join("resources", "draft-01.json")
@metaschema_name = "draft-01.json"
end

JSON::Validator.register_validator(self.new)
Expand Down
2 changes: 1 addition & 1 deletion lib/json-schema/validators/draft2.rb
Expand Up @@ -36,7 +36,7 @@ def initialize
@formats = @default_formats.clone
@uri = URI.parse("http://json-schema.org/draft-02/schema#")
@names = ["draft2"]
@metaschema = File.join("resources", "draft-02.json")
@metaschema_name = "draft-02.json"
end

JSON::Validator.register_validator(self.new)
Expand Down
2 changes: 1 addition & 1 deletion lib/json-schema/validators/draft3.rb
Expand Up @@ -40,7 +40,7 @@ def initialize
@formats = @default_formats.clone
@uri = URI.parse("http://json-schema.org/draft-03/schema#")
@names = ["draft3", "http://json-schema.org/draft-03/schema#"]
@metaschema = File.join("resources", "draft-03.json")
@metaschema_name = "draft-03.json"
end

JSON::Validator.register_validator(self.new)
Expand Down
2 changes: 1 addition & 1 deletion lib/json-schema/validators/draft4.rb
Expand Up @@ -45,7 +45,7 @@ def initialize
@formats = @default_formats.clone
@uri = URI.parse("http://json-schema.org/draft-04/schema#")
@names = ["draft4", "http://json-schema.org/draft-04/schema#"]
@metaschema = File.join("resources", "draft-04.json")
@metaschema_name = "draft-04.json"
end

JSON::Validator.register_validator(self.new)
Expand Down
11 changes: 11 additions & 0 deletions test/test_schema_validation.rb
@@ -1,4 +1,5 @@
require 'test/unit'
require 'tmpdir'
require File.dirname(__FILE__) + '/../lib/json-schema'

class JSONSchemaValidation < Test::Unit::TestCase
Expand Down Expand Up @@ -82,4 +83,14 @@ def test_validate_schema_3_without_version_option
assert(JSON::Validator.validate(valid_schema_v3,data,:validate_schema => true))
assert(!JSON::Validator.validate(invalid_schema_v3,data,:validate_schema => true))
end

def test_schema_validation_from_different_directory
Dir.mktmpdir do |tmpdir|
Dir.chdir(tmpdir) do
data = {"b" => {"a" => 5}}
assert(JSON::Validator.validate(valid_schema_v4,data,:validate_schema => true, :version => :draft4))
assert(!JSON::Validator.validate(invalid_schema_v4,data,:validate_schema => true, :version => :draft4))
end
end
end
end

0 comments on commit e781e39

Please sign in to comment.