hiera 1.3.2.rc1 → 1.3.2.rc2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of hiera might be problematic. Click here for more details.

data/lib/hiera/backend.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'hiera/util'
2
- require 'hiera/recursive_guard'
3
2
  require 'hiera/interpolate'
4
3
 
5
4
  begin
@@ -90,7 +89,7 @@ class Hiera
90
89
  #
91
90
  # @api public
92
91
  def parse_string(data, scope, extra_data={})
93
- Hiera::Interpolate.interpolate(data, Hiera::RecursiveGuard.new, scope, extra_data)
92
+ Hiera::Interpolate.interpolate(data, scope, extra_data)
94
93
  end
95
94
 
96
95
  # Parses a answer received from data files
@@ -1,22 +1,36 @@
1
1
  require 'hiera/backend'
2
+ require 'hiera/recursive_guard'
2
3
 
3
4
  class Hiera::Interpolate
4
5
  class << self
5
6
  INTERPOLATION = /%\{([^\}]*)\}/
6
7
  METHOD_INTERPOLATION = /%\{(scope|hiera)\(['"]([^"']*)["']\)\}/
7
8
 
8
- def interpolate(data, recurse_guard, scope, extra_data)
9
+ def interpolate(data, scope, extra_data)
10
+ if data.is_a?(String)
11
+ # Wrapping do_interpolation in a gsub block ensures we process
12
+ # each interpolation site in isolation using separate recursion guards.
13
+ data.gsub(INTERPOLATION) do |match|
14
+ do_interpolation(match, Hiera::RecursiveGuard.new, scope, extra_data)
15
+ end
16
+ else
17
+ data
18
+ end
19
+ end
20
+
21
+ def do_interpolation(data, recurse_guard, scope, extra_data)
9
22
  if data.is_a?(String) && (match = data.match(INTERPOLATION))
10
23
  interpolation_variable = match[1]
11
24
  recurse_guard.check(interpolation_variable) do
12
25
  interpolate_method, key = get_interpolation_method_and_key(data)
13
26
  interpolated_data = send(interpolate_method, data, key, scope, extra_data)
14
- interpolate(interpolated_data, recurse_guard, scope, extra_data)
27
+ do_interpolation(interpolated_data, recurse_guard, scope, extra_data)
15
28
  end
16
29
  else
17
30
  data
18
31
  end
19
32
  end
33
+ private :do_interpolation
20
34
 
21
35
  def get_interpolation_method_and_key(data)
22
36
  if (match = data.match(METHOD_INTERPOLATION))
@@ -35,13 +49,13 @@ class Hiera::Interpolate
35
49
  if value.nil? || value == :undefined
36
50
  value = extra_data[key]
37
51
  end
38
- data.sub(INTERPOLATION, value.to_s)
52
+
53
+ value
39
54
  end
40
55
  private :scope_interpolate
41
56
 
42
57
  def hiera_interpolate(data, key, scope, extra_data)
43
- value = Hiera::Backend.lookup(key, nil, scope, nil, :priority)
44
- data.sub(METHOD_INTERPOLATION, value)
58
+ Hiera::Backend.lookup(key, nil, scope, nil, :priority)
45
59
  end
46
60
  private :hiera_interpolate
47
61
  end
data/lib/hiera/version.rb CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
 
9
9
  class Hiera
10
- VERSION = "1.3.2-rc1"
10
+ VERSION = "1.3.2-rc2"
11
11
 
12
12
  ##
13
13
  # version is a public API method intended to always provide a fast and
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,17 @@ require 'tmpdir'
8
8
 
9
9
  RSpec.configure do |config|
10
10
  config.mock_with :mocha
11
+
12
+ config.after :suite do
13
+ # Log the spec order to a file, but only if the LOG_SPEC_ORDER environment variable is
14
+ # set. This should be enabled on Jenkins runs, as it can be used with Nick L.'s bisect
15
+ # script to help identify and debug order-dependent spec failures.
16
+ if ENV['LOG_SPEC_ORDER']
17
+ File.open("./spec_order.txt", "w") do |logfile|
18
+ config.instance_variable_get(:@files_to_run).each { |f| logfile.puts f }
19
+ end
20
+ end
21
+ end
11
22
  end
12
23
 
13
24
  # In ruby 1.8.5 Dir does not have mktmpdir defined, so this monkey patches
@@ -253,6 +253,12 @@ class Hiera
253
253
  end.to raise_error Hiera::InterpolationLoop, "Detected in [first, second]"
254
254
  end
255
255
 
256
+ it "replaces repeated occurances of the same lookup" do
257
+ scope = {"rspec" => "value"}
258
+ input = "it replaces %{rspec} and %{rspec}"
259
+ Backend.parse_string(input, scope).should == "it replaces value and value"
260
+ end
261
+
256
262
  it "replaces hiera interpolations with data looked up in hiera" do
257
263
  input = "%{hiera('key1')}"
258
264
  scope = {}
metadata CHANGED
@@ -1,27 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiera
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2.rc1
4
+ version: 1.3.2.rc2
5
+ prerelease: 6
5
6
  platform: ruby
6
7
  authors:
7
8
  - Puppet Labs
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-02-10 00:00:00.000000000 Z
12
+ date: 2014-02-19 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: json_pure
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
30
  description: A pluggable data store for hierarcical data
@@ -32,69 +35,70 @@ extensions: []
32
35
  extra_rdoc_files: []
33
36
  files:
34
37
  - bin/hiera
35
- - lib/hiera/backend.rb
36
- - lib/hiera/backend/json_backend.rb
37
- - lib/hiera/backend/yaml_backend.rb
38
- - lib/hiera/config.rb
38
+ - lib/hiera.rb
39
39
  - lib/hiera/console_logger.rb
40
- - lib/hiera/error.rb
40
+ - lib/hiera/noop_logger.rb
41
+ - lib/hiera/backend/yaml_backend.rb
42
+ - lib/hiera/backend/json_backend.rb
41
43
  - lib/hiera/fallback_logger.rb
42
44
  - lib/hiera/filecache.rb
45
+ - lib/hiera/version.rb
46
+ - lib/hiera/config.rb
43
47
  - lib/hiera/interpolate.rb
44
- - lib/hiera/noop_logger.rb
45
- - lib/hiera/puppet_logger.rb
46
48
  - lib/hiera/recursive_guard.rb
47
49
  - lib/hiera/util.rb
48
- - lib/hiera/version.rb
49
- - lib/hiera.rb
50
+ - lib/hiera/backend.rb
51
+ - lib/hiera/puppet_logger.rb
52
+ - lib/hiera/error.rb
50
53
  - COPYING
51
54
  - README.md
52
55
  - LICENSE
53
- - spec/spec_helper.rb
54
- - spec/unit/backend/json_backend_spec.rb
56
+ - spec/unit/hiera_spec.rb
57
+ - spec/unit/filecache_spec.rb
55
58
  - spec/unit/backend/yaml_backend_spec.rb
59
+ - spec/unit/backend/json_backend_spec.rb
60
+ - spec/unit/console_logger_spec.rb
56
61
  - spec/unit/backend_spec.rb
62
+ - spec/unit/version_spec.rb
63
+ - spec/unit/puppet_logger_spec.rb
57
64
  - spec/unit/config_spec.rb
58
- - spec/unit/console_logger_spec.rb
59
65
  - spec/unit/fallback_logger_spec.rb
60
- - spec/unit/filecache_spec.rb
61
- - spec/unit/hiera_spec.rb
62
- - spec/unit/puppet_logger_spec.rb
63
66
  - spec/unit/util_spec.rb
64
- - spec/unit/version_spec.rb
67
+ - spec/spec_helper.rb
65
68
  homepage: https://github.com/puppetlabs/hiera
66
69
  licenses: []
67
- metadata: {}
68
70
  post_install_message:
69
71
  rdoc_options: []
70
72
  require_paths:
71
73
  - lib
72
74
  required_ruby_version: !ruby/object:Gem::Requirement
75
+ none: false
73
76
  requirements:
74
- - - '>='
77
+ - - ! '>='
75
78
  - !ruby/object:Gem::Version
76
79
  version: '0'
77
80
  required_rubygems_version: !ruby/object:Gem::Requirement
81
+ none: false
78
82
  requirements:
79
- - - '>'
83
+ - - ! '>'
80
84
  - !ruby/object:Gem::Version
81
85
  version: 1.3.1
82
86
  requirements: []
83
87
  rubyforge_project:
84
- rubygems_version: 2.0.3
88
+ rubygems_version: 1.8.23
85
89
  signing_key:
86
- specification_version: 4
90
+ specification_version: 3
87
91
  summary: Light weight hierarchical data store
88
92
  test_files:
89
- - spec/spec_helper.rb
90
- - spec/unit/backend/json_backend_spec.rb
93
+ - spec/unit/hiera_spec.rb
94
+ - spec/unit/filecache_spec.rb
91
95
  - spec/unit/backend/yaml_backend_spec.rb
96
+ - spec/unit/backend/json_backend_spec.rb
97
+ - spec/unit/console_logger_spec.rb
92
98
  - spec/unit/backend_spec.rb
99
+ - spec/unit/version_spec.rb
100
+ - spec/unit/puppet_logger_spec.rb
93
101
  - spec/unit/config_spec.rb
94
- - spec/unit/console_logger_spec.rb
95
102
  - spec/unit/fallback_logger_spec.rb
96
- - spec/unit/filecache_spec.rb
97
- - spec/unit/hiera_spec.rb
98
- - spec/unit/puppet_logger_spec.rb
99
103
  - spec/unit/util_spec.rb
100
- - spec/unit/version_spec.rb
104
+ - spec/spec_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: d09536712a42df9adc396179e989930ecad02f68
4
- data.tar.gz: a9f6f071ebcd6d4b2f3b51b5356ebdc5539965c8
5
- SHA512:
6
- metadata.gz: 75b92dd7914f57c1181531b1b6f9fb107b3d4f60ceeabea05c845b8cea478dff95169e0d2b3338293a0f4de4239e99c8cd82f4008d1cf1296d0250b83deca5a9
7
- data.tar.gz: 1b33ca1476383bcb4946995b463f98d58f127c34a4f7146d75b4f1995328708487e45e008fc4357bd7dab1c8e69c7bd1ec7f315e8d18cf28393b5c6f5e12961e