hiera 3.3.0 → 3.3.1

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NjYwZjFmOWEyMDM2ZGUwOGUzYTU3ODUwODBhNzQ4NDQyMWVjYzhiZg==
5
- data.tar.gz: !binary |-
6
- ZDNkNGRjODE5NjE5N2FlZDc4MWQ0MWMxMDBhYjA5ODNhYjg2ODZiOA==
2
+ SHA1:
3
+ metadata.gz: 7c13650072ce82f7b941ac80e14c8a04c78e4b8e
4
+ data.tar.gz: 374ab47d4d1cb6462246d61dc1c4e6235a29a4f0
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- M2M2ZWIzNTI1NDQ1ZDc4NzAxZTIwZGQzYTNmODliNWY1ODAzNWVjNGVmYTRl
10
- OTM4MTMzOWZkNDU2MWJhZjZmZDU4YjU0Y2ZiNmU0ZGVlODcwYzg5ZGYwODNi
11
- OGMwYjlhODRmYmE4MjZmNmNhNzg3ZjU1NzM3ZTA1MDhhMDBmZTY=
12
- data.tar.gz: !binary |-
13
- MmY2NTZmOTZhODEyOGNhMDMxM2Q0MzI0NDVmNzlhYzc2NDVlMzk1MjBkMmQz
14
- NWI4ZWJkZDhiNjIzNzczYTIzNjI4MTU3YTU4MWM2ZjJlOWFmNzNhNzdlOWYy
15
- ZGIyNWRiNDBkNGIxNDQ2ZWM2ZDllN2Y1ZWY3OWJhZWY3ZjRkNzg=
6
+ metadata.gz: 0710bac409a578923260a095d31aa1bf355ee77e3ce4696973bd463a567a82551f5600bf92d2b081a32f2af10e2b505c4a26b7e187e82bc296774dd49268cd0d
7
+ data.tar.gz: c0e7e3b8c6a8adbd8d30e850a29a8523d2b61f48f03af50768bf76d53445e442098e81b6256b87b3bbf7091200e9e271ef8ccbbd44f7a1628a57446f0884df62
data/lib/hiera/config.rb CHANGED
@@ -26,7 +26,13 @@ class Hiera::Config
26
26
  raise detail
27
27
  end
28
28
  end
29
- @config.merge! config if config
29
+ if config
30
+ version = config['version'] || config[:version] || 3
31
+ if version >= 4
32
+ raise "v4 hiera.yaml is only to be used inside an environment or a module and cannot be given to the global hiera"
33
+ end
34
+ @config.merge! config
35
+ end
30
36
  else
31
37
  raise "Config file #{source} not found"
32
38
  end
@@ -49,7 +49,7 @@ class Hiera
49
49
  # in processing will be propagated to the caller
50
50
  def read_file(path, expected_type = Object)
51
51
  if stale?(path)
52
- data = File.read(path)
52
+ data = File.read(path, :encoding => 'BOM|UTF-8')
53
53
  @cache[path][:data] = block_given? ? yield(data) : data
54
54
 
55
55
  if !@cache[path][:data].is_a?(expected_type)
data/lib/hiera/version.rb CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
 
9
9
  class Hiera
10
- VERSION = "3.3.0"
10
+ VERSION = "3.3.1"
11
11
 
12
12
  ##
13
13
  # version is a public API method intended to always provide a fast and
@@ -12,6 +12,10 @@ class Hiera
12
12
  }
13
13
  end
14
14
 
15
+ it 'should raise an error if the configuration version is greater than 3' do
16
+ expect { Hiera.new(:config => File.join(HieraSpec::FIXTURE_DIR, 'badconfig', 'config', 'hiera.yaml')) }.to raise_error(/v4 hiera\.yaml is only to be used inside an environment or a module/)
17
+ end
18
+
15
19
  it "should raise an error for missing config files" do
16
20
  File.expects(:exist?).with("/nonexisting").returns(false)
17
21
  YAML.expects(:load_file).with("/nonexisting").never
@@ -84,6 +84,36 @@ class Hiera
84
84
  end
85
85
  end
86
86
 
87
+ it "sets the encoding to UTF-8 when reading a file" do
88
+ begin
89
+ original_encoding = Encoding.default_external
90
+ Encoding.default_external = Encoding::ISO_8859_1
91
+
92
+ Dir.mktmpdir do |dir|
93
+ file = File.join(dir, "testing")
94
+ write_file(file, "my data")
95
+ expect(@cache.read_file(file).encoding).to eq(Encoding::UTF_8)
96
+ end
97
+ ensure
98
+ Encoding.default_external = original_encoding
99
+ end
100
+ end
101
+
102
+ it "reads a file with unicode characters" do
103
+ begin
104
+ original_encoding = Encoding.default_external
105
+ Encoding.default_external = Encoding::ISO_8859_1
106
+
107
+ Dir.mktmpdir do |dir|
108
+ file = File.join(dir, "testing")
109
+ write_file(file, "\u2603")
110
+ expect(@cache.read_file(file)).to eq("\u2603")
111
+ end
112
+ ensure
113
+ Encoding.default_external = original_encoding
114
+ end
115
+ end
116
+
87
117
  it "rereads data when the file changes" do
88
118
  Dir.mktmpdir do |dir|
89
119
  file = File.join(dir, "testing")
@@ -0,0 +1,6 @@
1
+ ---
2
+ :version: 4
3
+ :hierarchy:
4
+ - :name: "common"
5
+ :backend: yaml
6
+ :datadir: "data"
@@ -0,0 +1,2 @@
1
+ foo: '%{hiera("bar")}'
2
+ bar: 'common'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiera
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-31 00:00:00.000000000 Z
11
+ date: 2017-03-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A pluggable data store for hierarcical data
14
14
  email: info@puppetlabs.com
@@ -17,11 +17,7 @@ executables:
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - COPYING
21
- - LICENSE
22
- - README.md
23
20
  - bin/hiera
24
- - lib/hiera.rb
25
21
  - lib/hiera/backend.rb
26
22
  - lib/hiera/backend/json_backend.rb
27
23
  - lib/hiera/backend/yaml_backend.rb
@@ -36,6 +32,10 @@ files:
36
32
  - lib/hiera/recursive_guard.rb
37
33
  - lib/hiera/util.rb
38
34
  - lib/hiera/version.rb
35
+ - lib/hiera.rb
36
+ - COPYING
37
+ - README.md
38
+ - LICENSE
39
39
  - spec/spec_helper.rb
40
40
  - spec/unit/backend/json_backend_spec.rb
41
41
  - spec/unit/backend/yaml_backend_spec.rb
@@ -44,6 +44,8 @@ files:
44
44
  - spec/unit/console_logger_spec.rb
45
45
  - spec/unit/fallback_logger_spec.rb
46
46
  - spec/unit/filecache_spec.rb
47
+ - spec/unit/fixtures/badconfig/config/hiera.yaml
48
+ - spec/unit/fixtures/badconfig/data/common.yaml
47
49
  - spec/unit/fixtures/interpolate/config/hiera.yaml
48
50
  - spec/unit/fixtures/interpolate/config/hiera_iplm_hiera.yaml
49
51
  - spec/unit/fixtures/interpolate/config/hiera_iplm_hiera_bad.yaml
@@ -73,46 +75,48 @@ require_paths:
73
75
  - lib
74
76
  required_ruby_version: !ruby/object:Gem::Requirement
75
77
  requirements:
76
- - - ! '>='
78
+ - - '>='
77
79
  - !ruby/object:Gem::Version
78
80
  version: '0'
79
81
  required_rubygems_version: !ruby/object:Gem::Requirement
80
82
  requirements:
81
- - - ! '>='
83
+ - - '>='
82
84
  - !ruby/object:Gem::Version
83
85
  version: '0'
84
86
  requirements: []
85
87
  rubyforge_project:
86
- rubygems_version: 2.4.3
88
+ rubygems_version: 2.0.14
87
89
  signing_key:
88
90
  specification_version: 4
89
91
  summary: Light weight hierarchical data store
90
92
  test_files:
91
- - spec/unit/interpolate_spec.rb
92
- - spec/unit/fixtures/override/config/hiera.yaml
93
- - spec/unit/fixtures/override/data/alternate.yaml
94
- - spec/unit/fixtures/override/data/common.yaml
93
+ - spec/spec_helper.rb
94
+ - spec/unit/backend/json_backend_spec.rb
95
+ - spec/unit/backend/yaml_backend_spec.rb
96
+ - spec/unit/backend_spec.rb
97
+ - spec/unit/config_spec.rb
98
+ - spec/unit/console_logger_spec.rb
99
+ - spec/unit/fallback_logger_spec.rb
100
+ - spec/unit/filecache_spec.rb
101
+ - spec/unit/fixtures/badconfig/config/hiera.yaml
102
+ - spec/unit/fixtures/badconfig/data/common.yaml
103
+ - spec/unit/fixtures/interpolate/config/hiera.yaml
95
104
  - spec/unit/fixtures/interpolate/config/hiera_iplm_hiera.yaml
96
105
  - spec/unit/fixtures/interpolate/config/hiera_iplm_hiera_bad.yaml
97
- - spec/unit/fixtures/interpolate/config/hiera.yaml
98
- - spec/unit/fixtures/interpolate/data/niltest.yaml
99
- - spec/unit/fixtures/interpolate/data/complex.yaml
100
- - spec/unit/fixtures/interpolate/data/frontend.json
101
- - spec/unit/fixtures/interpolate/data/role.json
102
106
  - spec/unit/fixtures/interpolate/data/bad_interpolation.yaml
107
+ - spec/unit/fixtures/interpolate/data/complex.yaml
103
108
  - spec/unit/fixtures/interpolate/data/dotted_keys.yaml
104
- - spec/unit/fixtures/interpolate/data/weird_keys.yaml
105
109
  - spec/unit/fixtures/interpolate/data/empty_interpolation.yaml
110
+ - spec/unit/fixtures/interpolate/data/frontend.json
111
+ - spec/unit/fixtures/interpolate/data/niltest.yaml
106
112
  - spec/unit/fixtures/interpolate/data/recursive.yaml
107
- - spec/unit/backend_spec.rb
108
- - spec/unit/filecache_spec.rb
109
- - spec/unit/config_spec.rb
110
- - spec/unit/backend/yaml_backend_spec.rb
111
- - spec/unit/backend/json_backend_spec.rb
113
+ - spec/unit/fixtures/interpolate/data/role.json
114
+ - spec/unit/fixtures/interpolate/data/weird_keys.yaml
115
+ - spec/unit/fixtures/override/config/hiera.yaml
116
+ - spec/unit/fixtures/override/data/alternate.yaml
117
+ - spec/unit/fixtures/override/data/common.yaml
118
+ - spec/unit/hiera_spec.rb
119
+ - spec/unit/interpolate_spec.rb
112
120
  - spec/unit/puppet_logger_spec.rb
113
- - spec/unit/console_logger_spec.rb
114
- - spec/unit/version_spec.rb
115
- - spec/unit/fallback_logger_spec.rb
116
121
  - spec/unit/util_spec.rb
117
- - spec/unit/hiera_spec.rb
118
- - spec/spec_helper.rb
122
+ - spec/unit/version_spec.rb