hana 1.3.3 → 1.3.4

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
- SHA1:
3
- metadata.gz: 54a300a1f4f135540a4c590cf3e7e1b8ad617b4a
4
- data.tar.gz: 499cba6697fe8fca1bd5a4788042cb5492ed01d4
2
+ SHA256:
3
+ metadata.gz: 556063c84c12bf3c25887a6021dbe2231ab3f4a63ef142ad9497031c7fdb6f14
4
+ data.tar.gz: 41a7f89c78c4cec3c97c5e8a1f9e409e3a7f6b7edc84ac8f21c7b794fce665f5
5
5
  SHA512:
6
- metadata.gz: 50c03edacec8defe7b7e82289a87bfe3c52e77255d019dc96abdc1407be82c9ceb027ebae98bfb2dfb7c2a987d42a73e4ea08e639f5217282de93cabbc856384
7
- data.tar.gz: fb38bcb65aedbffa1e1cdf3d109776abcf1a7bf6cba5ca91dd32f41df67983f10438027dffc0f3df632c819ddb3b20e4d6da1af8f1aadf8d486250075df5cb4f
6
+ metadata.gz: 6922f6fccc85b67181b4d262df950bbb76df8ace31be13acd1ad943aae40b3ab2f936a41af2e18cf546345409d51236c8a74a8a7be6bc05ec6a14c5456e9442b
7
+ data.tar.gz: 15c8575ff781dfe4dbb01bc77f80383d4a216a69d8e0282c64175837da52e29d5b92d88bb8ad0a891159ce33c2b9185d895337410400a8038650e623f0931c49
@@ -1,11 +1,12 @@
1
- .autotest
2
- CHANGELOG.rdoc
3
1
  Manifest.txt
4
2
  README.md
5
3
  Rakefile
6
4
  lib/hana.rb
7
5
  test/helper.rb
6
+ test/json-patch-tests/.editorconfig
7
+ test/json-patch-tests/.npmignore
8
8
  test/json-patch-tests/README.md
9
+ test/json-patch-tests/package.json
9
10
  test/json-patch-tests/spec_tests.json
10
11
  test/json-patch-tests/tests.json
11
12
  test/mine.json
data/Rakefile CHANGED
@@ -12,7 +12,6 @@ Hoe.spec 'hana' do
12
12
  developer('Aaron Patterson', 'aaron@tenderlovemaking.com')
13
13
  license 'MIT'
14
14
  self.readme_file = 'README.md'
15
- self.history_file = 'CHANGELOG.rdoc'
16
15
  self.extra_rdoc_files = FileList['*.rdoc']
17
16
  extra_dev_deps << ["minitest", "~> 5.0"]
18
17
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hana
4
- VERSION = '1.3.3'
4
+ VERSION = '1.3.4'
5
5
 
6
6
  class Pointer
7
7
  include Enumerable
@@ -100,7 +100,11 @@ module Hana
100
100
  if key
101
101
  add_op dest, key, obj
102
102
  else
103
- dest.replace obj
103
+ if doc.equal? dest
104
+ doc = obj
105
+ else
106
+ dest.replace obj
107
+ end
104
108
  end
105
109
  doc
106
110
  end
@@ -157,6 +161,7 @@ module Hana
157
161
  raise Patch::IndexError unless key =~ /\A\d+\Z/
158
162
  obj[key.to_i] = ins.fetch VALUE
159
163
  else
164
+ raise Patch::MissingTargetException unless obj
160
165
  obj[key] = ins.fetch VALUE
161
166
  end
162
167
  doc
@@ -0,0 +1,10 @@
1
+ # EditorConfig is awesome: http://EditorConfig.org
2
+
3
+ root = true
4
+
5
+ [*]
6
+ end_of_line = lf
7
+ insert_final_newline = true
8
+ charset = utf-8
9
+ trim_trailing_whitespace = true
10
+ indent_style = space
@@ -0,0 +1,2 @@
1
+ .editorconfig
2
+ .gitignore
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "json-patch-test-suite",
3
+ "version": "1.1.0",
4
+ "description": "JSON Patch RFC 6902 test suite",
5
+ "repository": "github:json-patch/json-patch-tests",
6
+ "homepage": "https://github.com/json-patch/json-patch-tests",
7
+ "bugs": "https://github.com/json-patch/json-patch-tests/issues",
8
+ "keywords": [
9
+ "JSON",
10
+ "Patch",
11
+ "test",
12
+ "suite"
13
+ ],
14
+ "license": "Apache-2.0"
15
+ }
@@ -55,6 +55,21 @@
55
55
  "expected": "bar",
56
56
  "disabled": true },
57
57
 
58
+ { "comment": "replace object document with array document?",
59
+ "doc": {},
60
+ "patch": [{"op": "add", "path": "", "value": []}],
61
+ "expected": [] },
62
+
63
+ { "comment": "replace array document with object document?",
64
+ "doc": [],
65
+ "patch": [{"op": "add", "path": "", "value": {}}],
66
+ "expected": {} },
67
+
68
+ { "comment": "append to root array document?",
69
+ "doc": [],
70
+ "patch": [{"op": "add", "path": "/-", "value": "hi"}],
71
+ "expected": ["hi"] },
72
+
58
73
  { "comment": "Add, / target",
59
74
  "doc": {},
60
75
  "patch": [ {"op": "add", "path": "/", "value":1 } ],
@@ -187,6 +202,11 @@
187
202
  "patch": [{"op": "replace", "path": "", "value": {"baz": "qux"}}],
188
203
  "expected": {"baz": "qux"} },
189
204
 
205
+ { "comment": "test replace with missing parent key should fail",
206
+ "doc": {"bar": "baz"},
207
+ "patch": [{"op": "replace", "path": "/foo/bar", "value": false}],
208
+ "error": "replace op should fail with missing parent key" },
209
+
190
210
  { "comment": "spurious patch properties",
191
211
  "doc": {"foo": 1},
192
212
  "patch": [{"op": "test", "path": "/foo", "value": 1, "spurious": 1}],
@@ -394,7 +414,7 @@
394
414
  "doc": ["foo", "bar"],
395
415
  "patch": [{"op": "test", "path": "/01", "value": "bar"}],
396
416
  "error": "test op should reject the array value, it has leading zeros" },
397
-
417
+
398
418
  { "comment": "Removing nonexistent field",
399
419
  "doc": {"foo" : "bar"},
400
420
  "patch": [{"op": "remove", "path": "/baz"}],
@@ -403,6 +423,12 @@
403
423
  { "comment": "Removing nonexistent index",
404
424
  "doc": ["foo", "bar"],
405
425
  "patch": [{"op": "remove", "path": "/2"}],
406
- "error": "removing a nonexistent index should fail" }
426
+ "error": "removing a nonexistent index should fail" },
427
+
428
+ { "comment": "Patch with different capitalisation than doc",
429
+ "doc": {"foo":"bar"},
430
+ "patch": [{"op": "add", "path": "/FOO", "value": "BAR"}],
431
+ "expected": {"foo": "bar", "FOO": "BAR"}
432
+ }
407
433
 
408
434
  ]
@@ -69,4 +69,43 @@ class TestHana < Hana::TestCase
69
69
  pointer = Hana::Pointer.new '/foo/bar/baz'
70
70
  assert_nil pointer.eval('foo' => nil)
71
71
  end
72
+
73
+ def test_remove_missing_object_key
74
+ patch = Hana::Patch.new [
75
+ { 'op' => 'remove', 'path' => '/missing_key' }
76
+ ]
77
+ assert_raises(Hana::Patch::IndexError) do
78
+ patch.apply('foo' => 'bar')
79
+ end
80
+ end
81
+
82
+ def test_remove_missing_array_index
83
+ patch = Hana::Patch.new [
84
+ { 'op' => 'remove', 'path' => '/1' }
85
+ ]
86
+ assert_raises(Hana::Patch::OutOfBoundsException) do
87
+ patch.apply([0])
88
+ end
89
+ end
90
+
91
+ def test_remove_missing_object_key_in_array
92
+ patch = Hana::Patch.new [
93
+ { 'op' => 'remove', 'path' => '/1/baz' }
94
+ ]
95
+ assert_raises(Hana::Patch::IndexError) do
96
+ patch.apply([
97
+ { 'foo' => 'bar' },
98
+ { 'foo' => 'bar' }
99
+ ])
100
+ end
101
+ end
102
+
103
+ def test_replace_missing_key
104
+ patch = Hana::Patch.new [
105
+ { 'op' => 'replace', 'path' => '/missing_key/field', 'value' => 'asdf' }
106
+ ]
107
+ assert_raises(Hana::Patch::MissingTargetException) do
108
+ patch.apply('foo' => 'bar')
109
+ end
110
+ end
72
111
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hana
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-14 00:00:00.000000000 Z
11
+ date: 2018-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.10'
19
+ version: '5.11'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5.10'
26
+ version: '5.11'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,18 +58,18 @@ email:
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files:
61
- - CHANGELOG.rdoc
62
61
  - Manifest.txt
63
62
  - README.md
64
63
  files:
65
- - ".autotest"
66
- - CHANGELOG.rdoc
67
64
  - Manifest.txt
68
65
  - README.md
69
66
  - Rakefile
70
67
  - lib/hana.rb
71
68
  - test/helper.rb
69
+ - test/json-patch-tests/.editorconfig
70
+ - test/json-patch-tests/.npmignore
72
71
  - test/json-patch-tests/README.md
72
+ - test/json-patch-tests/package.json
73
73
  - test/json-patch-tests/spec_tests.json
74
74
  - test/json-patch-tests/tests.json
75
75
  - test/mine.json
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  requirements: []
99
99
  rubyforge_project:
100
- rubygems_version: 2.6.10
100
+ rubygems_version: 2.7.6
101
101
  signing_key:
102
102
  specification_version: 4
103
103
  summary: Implementation of [JSON Patch][1] and [JSON Pointer][2] RFC.
data/.autotest DELETED
@@ -1,8 +0,0 @@
1
- # -*- ruby -*-
2
-
3
- require 'autotest/restart'
4
-
5
- Autotest.add_hook :initialize do |at|
6
- at.testlib = 'minitest/autorun'
7
- at.find_directories = ARGV unless ARGV.empty?
8
- end
@@ -1,12 +0,0 @@
1
- Wed May 22 19:28:10 2013 Aaron Patterson <aaron@tenderlovemaking.com>
2
-
3
- * All IETF compliant
4
-
5
- Fri Sep 7 18:54:17 2012 Aaron Patterson <aaron@tenderlovemaking.com>
6
-
7
- * Bumping the version.
8
-
9
- Fri Sep 7 18:53:16 2012 Aaron Patterson <aaron@tenderlovemaking.com>
10
-
11
- * validate commands an raise an exception Just In Case
12
-