treet 0.17.1 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0cbacd421d190cd2d749327de0ee03aaf373d524
4
- data.tar.gz: e41405f31af293569faab6ef0ecc8242a01a645f
3
+ metadata.gz: 6d862a70ed8be944197ac40fa3dcc0db5d0ca8e2
4
+ data.tar.gz: f0e34807b7927f12ff73b9b573b13d4f5e65ba44
5
5
  SHA512:
6
- metadata.gz: f049a44fb96e3b38c7c8c977941bf626715f2029e5499381b946c0414d469ee6457979a95171fe7fd80713333dc8fe9e293ec24d37c97c0412b1c6880599b5ea
7
- data.tar.gz: d3a42775c21ee9a641d1b112d94e23056d121957eef76a24889faff5006afac6d98f5b4e216f471e8cebf00ff89b942c3c6fc5895fe0a1a3d68c77f8d3da4289
6
+ metadata.gz: e1a2a25ec6a3c8ca0fe11ea3ca390b77ebdb5405ed55586b1f7f841605c11a78cd3957d24d132c9eb9479117b84563ba9d4ccf7fb02832c848b197d10d94ec3d
7
+ data.tar.gz: 6362ff5a21d7814368e2df7496755e64fb34ae3cb12edcd0bff92efef4162005110834bacdcccf9d4bb94f352588f65c8fe2116553721b7d11cccd21ae0735f7
@@ -97,13 +97,16 @@ class Treet::Repo
97
97
  # remove something
98
98
  if fieldname
99
99
  # this is a key in a subhash
100
- data = JSON.load(File.open(filepath))
101
- data.delete(fieldname)
102
- if data.empty?
103
- # all keys have been removed, clean up the file
104
- File.delete(filename)
105
- else
106
- File.open(filepath, "w") {|f| f << JSON.pretty_generate(data)}
100
+ if File.exists?(filepath)
101
+ # if the subhash is missing, there's nothing to remove, so do nothing (for idempotence)
102
+ data = JSON.load(File.open(filepath))
103
+ data.delete(fieldname)
104
+ if data.empty?
105
+ # all keys have been removed, clean up the file
106
+ File.delete(filename)
107
+ else
108
+ File.open(filepath, "w") {|f| f << JSON.pretty_generate(data)}
109
+ end
107
110
  end
108
111
  elsif dirname == "."
109
112
  # this is a top-level string
@@ -1,3 +1,3 @@
1
1
  module Treet
2
- VERSION = "0.17.1"
2
+ VERSION = "0.18.0"
3
3
  end
@@ -198,4 +198,20 @@ describe "Repo" do
198
198
  newhash.to_hash['datalist'].should be_include('seven')
199
199
  end
200
200
  end
201
+
202
+ it "should not crash on patch that deletes missing subtree elements" do
203
+ hash = Treet::Hash.new("#{File.dirname(__FILE__)}/../json/one.json")
204
+ Dir.mktmpdir do |dir|
205
+ repo = hash.to_repo(dir)
206
+ repo.patch([
207
+ [
208
+ "-",
209
+ "missing.thing",
210
+ "does not exist"
211
+ ]
212
+ ])
213
+ newhash = repo.to_hash
214
+ newhash['missing'].should be_nil
215
+ end
216
+ end
201
217
  end
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
7
7
  gem.description = %q{Transform between trees of files and JSON blobs}
8
8
  gem.summary = %q{Transform between trees of files and JSON blobs}
9
9
  gem.homepage = ""
10
+ gem.license = "LGPL-3"
10
11
 
11
12
  gem.files = `git ls-files`.split($\)
12
13
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: treet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason May
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-24 00:00:00.000000000 Z
11
+ date: 2013-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: map
@@ -190,7 +190,8 @@ files:
190
190
  - spec/test_helper.rb
191
191
  - treet.gemspec
192
192
  homepage: ''
193
- licenses: []
193
+ licenses:
194
+ - LGPL-3
194
195
  metadata: {}
195
196
  post_install_message:
196
197
  rdoc_options: []