summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjkeiser <jkeiser@opscode.com>2013-01-11 20:00:09 -0800
committerjkeiser <jkeiser@opscode.com>2013-01-11 20:00:09 -0800
commit79de8bb9f100bbbeacbf04d6328a627a0fbaac12 (patch)
treedd2b813b40b399a81ac821d5be856ff2393f484c
parent970e3902ae9ed4ae747d74f89a2f73e059bdabaa (diff)
downloadchef-zero-79de8bb9f100bbbeacbf04d6328a627a0fbaac12.tar.gz
Don't modify the data structures passed into load_data;
it screws up serial rspec tests.
-rw-r--r--lib/chef_zero/server.rb16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/chef_zero/server.rb b/lib/chef_zero/server.rb
index 219238e..3a98e9b 100644
--- a/lib/chef_zero/server.rb
+++ b/lib/chef_zero/server.rb
@@ -151,15 +151,15 @@ module ChefZero
def load_data(contents)
%w(clients environments nodes roles users).each do |data_type|
if contents[data_type]
- dejsonize_children!(contents[data_type])
- data[data_type].merge!(contents[data_type])
+ data[data_type].merge!(dejsonize_children(contents[data_type]))
end
end
if contents['data']
- contents['data'].values.each do |data_bag|
- dejsonize_children!(data_bag)
+ new_data = {}
+ contents['data'].each_pair do |key, data_bag|
+ new_data[key] = dejsonize_children(data_bag)
end
- data['data'].merge!(contents['data'])
+ data['data'].merge!(new_data)
end
if contents['cookbooks']
contents['cookbooks'].each_pair do |name_version, cookbook|
@@ -243,10 +243,12 @@ module ChefZero
router
end
- def dejsonize_children!(hash)
+ def dejsonize_children(hash)
+ result = {}
hash.each_pair do |key, value|
- hash[key] = JSON.pretty_generate(value) if value.is_a?(Hash)
+ result[key] = value.is_a?(Hash) ? JSON.pretty_generate(value) : value
end
+ result
end
def get_file(directory, path)