hieracles 0.1.7 → 0.2.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: b1b98d278d79f3de929cb583ab33e77f895f4676
4
- data.tar.gz: 888be4768415d47ecef87847114b290e0a813d07
3
+ metadata.gz: 6f625244beacbc27c040813044b27538be1cc238
4
+ data.tar.gz: 43ee5e5416918b571def1e2ff14283c51f0b5d3f
5
5
  SHA512:
6
- metadata.gz: 842f1c0ed05b9c4b11663b04bdab2c09f34a9713a732a6e76fcf75e171cbf12fed644e72f9d8aca820466d6afe7b4b35ede87df59e4d5b8a79759723a0360b49
7
- data.tar.gz: c0fa911cc8b01be9eaa6f1d1fb419ebf020721abb865210c4f7a0ac79061a43a03b1a45035ec061b6cb6e2412b0d1756cc2dcd86227385347f6a20e7515d3184
6
+ metadata.gz: 52464e962c93a456f3911e9800991293a5250d3e8a9c39570d26792e46ca7def773f6eac6f486d6fb0a2b27cc947cfcc914bd1ebf8734c9d5287dd7f650e978c
7
+ data.tar.gz: 0502cf9ed9ee1c641a521990d94b5af61fa775307621b659679b663629c6c4e5b4dbed6c50418cd65717f7bd38ac03fea9a24363fdd9cc348272d641b8694acd
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Hieracles Changelog
2
2
  =======================
3
3
 
4
+ ### 0.2.0 - 2015-11-24
5
+ - fix merging for unsorted arrays
6
+ - translate all paths to absolute paths,
7
+ so that hc can be executed out of puppet dir
8
+
4
9
  ### 0.1.7 - 2015-11-23
5
10
  - various fixes on deep_merge behavior
6
11
 
data/README.md CHANGED
@@ -46,16 +46,25 @@ At first launch it will create a configuration file in `~/.config/hieracles/conf
46
46
 
47
47
  Configuration variables are:
48
48
 
49
- - classpath
50
- - modulepath
51
- - basepath
52
- - encpath
53
- - hierafile
54
- - format
55
- - defaultscope
49
+ - basepath (alias localpath)
50
+ This is where your puppet repo is cloned
51
+ - classpath
52
+ where to find classes defined in the ENC
53
+ - modulepath
54
+ where to find modules called in the classes
55
+ - encpath
56
+ where to read information about each nodes
57
+ - hierafile
58
+ where to find a hierafile customised for your local puppet installation
59
+ - format
60
+ can be plain, console, csv, yaml, rawyaml, json
61
+ - defaultscope
62
+ a hash defining scope variables that will be used if not defined by a facts file or by params passed as arguments
56
63
 
57
64
  For an example setup you can check in `spec/files`.
58
65
 
66
+ If you don't specify the basepath, your current location will be used as a base path.
67
+
59
68
  Usage
60
69
  -------------
61
70
 
@@ -17,11 +17,11 @@ module Hieracles
17
17
  @extraparams = extract_params(options[:params])
18
18
  values = get_config(@optionfile)
19
19
  @server = values['server']
20
- @classpath = values['classpath']
21
- @modulepath = values['modulepath'] || 'modules'
22
- @encpath = options[:encpath] || values['encpath'] || 'enc'
23
- @basepath = File.expand_path(options[:basepath] || values['basepath'] || '.')
24
- @hierafile = options[:hierafile] || values['hierafile'] || 'hiera.yaml'
20
+ @basepath = File.expand_path(options[:basepath] || values['basepath'] || values['localpath'] || '.')
21
+ @classpath = build_path(values['classpath'])
22
+ @modulepath = resolve_path(values['modulepath'] || 'modules')
23
+ @encpath = resolve_path(options[:encpath] || values['encpath'] || 'enc')
24
+ @hierafile = resolve_path(options[:hierafile] || values['hierafile'] || 'hiera.yaml')
25
25
  @format = (options[:format] || values['format'] || 'console').capitalize
26
26
  facts_file = options[:yaml_facts] || options[:json_facts]
27
27
  facts_format = options[:json_facts] ? :json : :yaml
@@ -61,7 +61,7 @@ module Hieracles
61
61
  end
62
62
 
63
63
  def path(what)
64
- File.join(@basepath, send(what.to_sym))
64
+ send(what.to_sym)
65
65
  end
66
66
 
67
67
  def load_facts(file, format)
@@ -72,5 +72,19 @@ module Hieracles
72
72
  end
73
73
  end
74
74
 
75
+ def resolve_path(path)
76
+ if File.exists?(File.expand_path(path))
77
+ File.expand_path(path)
78
+ elsif File.exists?(File.expand_path(File.join(@basepath, path)))
79
+ File.expand_path(File.join(@basepath, path))
80
+ else
81
+ raise IOError, "File #{path} not found."
82
+ end
83
+ end
84
+
85
+ def build_path(path)
86
+ File.expand_path(File.join(@basepath, path))
87
+ end
88
+
75
89
  end
76
90
  end
@@ -54,5 +54,14 @@ module Hieracles
54
54
  def build_modules_line(key, value)
55
55
  "#{__callee__} not implemented, please inherit from the Hieracles::Format class to implement a format.\n"
56
56
  end
57
+
58
+ def is_merged?(v)
59
+ v[:value].is_a?(Array) && (v[:value] | v[:merged]) != v[:value]
60
+ end
61
+
62
+ def sanitize(v)
63
+ v.to_s.gsub('%', '%%')
64
+ end
65
+
57
66
  end
58
67
  end
@@ -55,30 +55,16 @@ module Hieracles
55
55
  first = value.pop
56
56
  filecolor_index = @colors[first[:file]]
57
57
  filecolor = COLORS[filecolor_index]
58
- if first[:merged] != first[:value]
59
- output << format("%s #{COLORS[5]} %s\n",
60
- "[-]",
61
- key,
62
- first[:merged].to_s.gsub('%', '%%')
63
- )
64
- output << format(" #{COLORS[8]} #{COLORS[8]} #{COLORS[8]}\n",
65
- "[#{filecolor_index}]",
66
- key,
67
- first[:value].to_s.gsub('%', '%%')
68
- )
58
+ if is_merged? first
59
+ output << format("%s #{COLORS[5]} %s\n", "[-]", key, sanitize(first[:merged]) )
60
+ output << format(" #{COLORS[8]}\n", "[#{filecolor_index}] #{key} #{sanitize(first[:value])}" )
69
61
  else
70
- output << format("#{filecolor} #{COLORS[5]} %s\n",
71
- "[#{filecolor_index}]",
72
- key,
73
- first[:value].to_s.gsub('%', '%%')
74
- )
62
+ output << format("#{filecolor} #{COLORS[5]} %s\n", "[#{filecolor_index}]", key, sanitize(first[:value]) )
75
63
  end
76
64
  while value.count > 0
77
65
  overriden = value.pop
78
66
  filecolor_index = @colors[overriden[:file]]
79
- output << format(" #{COLORS[8]}\n",
80
- "[#{filecolor_index}] #{key} #{overriden[:value]}"
81
- )
67
+ output << format(" #{COLORS[8]}\n", "[#{filecolor_index}] #{key} #{overriden[:value]}")
82
68
  end
83
69
  end
84
70
  output
@@ -29,14 +29,14 @@ module Hieracles
29
29
  output = ''
30
30
  if !filter || Regexp.new(filter).match(key)
31
31
  first = value.pop
32
- if first[:value] == first[:merged]
33
- output << make_csv(in_what_file(first[:file]) +
34
- [key, first[:value].to_s, '0'])
35
- else
32
+ if is_merged? first
36
33
  output << make_csv(in_what_file('-') +
37
34
  [key, first[:merged].to_s, '0'])
38
35
  output << make_csv(in_what_file(first[:file]) +
39
36
  [key, first[:value].to_s, '1'])
37
+ else
38
+ output << make_csv(in_what_file(first[:file]) +
39
+ [key, first[:value].to_s, '0'])
40
40
  end
41
41
  while value.count > 0
42
42
  overriden = value.pop
@@ -41,7 +41,7 @@ module Hieracles
41
41
  if !filter || Regexp.new(filter).match(key)
42
42
  first = value.pop
43
43
  filecolor_index = @index[first[:file]]
44
- if first[:merged] != first[:value]
44
+ if is_merged? first
45
45
  output << "[-] #{key} #{first[:merged]}\n"
46
46
  output << " [#{filecolor_index}] #{key} #{first[:value]}\n"
47
47
  else
@@ -2,8 +2,8 @@ module Hieracles
2
2
  class Hiera
3
3
 
4
4
  def initialize
5
- raise IOError, "Hierafile #{Config.hierafile} not found." unless File.exist? Config.path('hierafile')
6
- @hierafile = Config.path('hierafile')
5
+ raise IOError, "Hierafile #{Config.hierafile} not found." unless File.exist? Config.hierafile
6
+ @hierafile = Config.hierafile
7
7
  @loaded = YAML.load_file(@hierafile)
8
8
  end
9
9
 
@@ -23,22 +23,10 @@ module Hieracles
23
23
  end
24
24
 
25
25
  # makes possible to set input and output
26
- def setio(input, output)
26
+ def setio(input=STDIN, output=STDOUT)
27
27
  @@input = input
28
28
  @@output = output
29
29
  end
30
30
 
31
- private
32
-
33
- # defaults to STDIN
34
- def input
35
- @@input ||= STDIN
36
- end
37
-
38
- # defaults to STDOUT
39
- def output
40
- @@output ||= STDOUT
41
- end
42
-
43
31
  end
44
32
  end
@@ -98,7 +98,7 @@ module Hieracles
98
98
  end
99
99
 
100
100
  def modulepath(path)
101
- File.join(Config.path('modulepath'), path)
101
+ File.join(Config.modulepath, path)
102
102
  end
103
103
 
104
104
  def add_modules(line, modules)
@@ -4,17 +4,17 @@ module Hieracles
4
4
  extend self
5
5
 
6
6
  def farms(config)
7
- @_farms ||= Dir.glob(File.join(config.basepath, format(config.classpath, '*'))).sort
7
+ @_farms ||= Dir.glob(format(config.classpath, '*')).sort
8
8
  end
9
9
 
10
10
  def nodes(config)
11
- @_nodes ||= Dir.glob(File.join(config.basepath, config.encpath, '*.yaml')).sort.map do |f|
11
+ @_nodes ||= Dir.glob(File.join(config.encpath, '*.yaml')).sort.map do |f|
12
12
  File.basename(f, '.yaml')
13
13
  end
14
14
  end
15
15
 
16
16
  def modules(config)
17
- @_modules ||= Dir.glob(File.join(config.basepath, config.modulepath, '*')).sort.map do |f|
17
+ @_modules ||= Dir.glob(File.join(config.modulepath, '*')).sort.map do |f|
18
18
  File.basename(f)
19
19
  end
20
20
  end
@@ -4,14 +4,24 @@ describe Hieracles::Config do
4
4
  describe '.load' do
5
5
  context 'with an existing file' do
6
6
  let(:options) do
7
- { config: 'spec/files/config.yml', basepath: 'spec/files' }
7
+ {
8
+ config: 'spec/files/config.yml',
9
+ basepath: 'spec/files'
10
+ }
11
+ end
12
+ let(:expected) do
13
+ {
14
+ classpath: File.expand_path('spec/files/farm_modules/%s.pp'),
15
+ modulepath: File.expand_path('spec/files/modules'),
16
+ hierafile: File.expand_path('spec/files/hiera.yaml')
17
+ }
8
18
  end
9
19
  before { Hieracles::Config.load options }
10
20
 
11
21
  it 'initialize config values' do
12
- expect(Hieracles::Config.classpath).to eq 'farm_modules/%s.pp'
13
- expect(Hieracles::Config.modulepath).to eq 'modules'
14
- expect(Hieracles::Config.hierafile).to eq 'hiera.yaml'
22
+ expect(Hieracles::Config.classpath).to eq expected[:classpath]
23
+ expect(Hieracles::Config.modulepath).to eq expected[:modulepath]
24
+ expect(Hieracles::Config.hierafile).to eq expected[:hierafile]
15
25
  expect(Hieracles::Config.format).to eq 'Console'
16
26
  end
17
27
  end
@@ -19,21 +29,35 @@ describe Hieracles::Config do
19
29
  context 'with additional parameters' do
20
30
  let(:hierapath) { 'hiera.yaml' }
21
31
  let(:options) do
22
- { config: 'spec/files/config.yml', basepath: 'spec/files', hierafile: hierapath }
32
+ {
33
+ config: 'spec/files/config.yml',
34
+ basepath: 'spec/files',
35
+ hierafile: hierapath
36
+ }
37
+ end
38
+ let(:expected) do
39
+ {
40
+ classpath: File.expand_path('spec/files/farm_modules/%s.pp'),
41
+ modulepath: File.expand_path('spec/files/modules'),
42
+ hierafile: File.expand_path('spec/files/hiera.yaml')
43
+ }
23
44
  end
24
45
  before { Hieracles::Config.load options }
25
46
 
26
47
  it 'initialize config values' do
27
- expect(Hieracles::Config.classpath).to eq 'farm_modules/%s.pp'
28
- expect(Hieracles::Config.modulepath).to eq 'modules'
29
- expect(Hieracles::Config.hierafile).to eq hierapath
48
+ expect(Hieracles::Config.classpath).to eq expected[:classpath]
49
+ expect(Hieracles::Config.modulepath).to eq expected[:modulepath]
50
+ expect(Hieracles::Config.hierafile).to eq expected[:hierafile]
30
51
  expect(Hieracles::Config.format).to eq 'Console'
31
52
  end
32
53
  end
33
54
 
34
55
  context 'without an existing config file' do
35
56
  let(:options) do
36
- { config: 'spec/files/config_no.yml' }
57
+ {
58
+ basepath: 'spec/files',
59
+ config: 'spec/files/config_no.yml'
60
+ }
37
61
  end
38
62
  before do
39
63
  FileUtils.rm(options[:config]) if File.exist? options[:config]
@@ -46,7 +70,7 @@ describe Hieracles::Config do
46
70
  end
47
71
 
48
72
  it 'initialize config values' do
49
- expect(Hieracles::Config.classpath).to eq 'manifests/classes/%s.pp'
73
+ expect(Hieracles::Config.classpath).to eq File.expand_path('spec/files/manifests/classes/%s.pp')
50
74
  end
51
75
  end
52
76
  end
@@ -53,26 +53,52 @@ describe Hieracles::Formats::Console do
53
53
  end
54
54
 
55
55
  describe ".build_params_line" do
56
- let(:expected) {
57
- "\e[32m[1]\e[0m \e[36mparams.this.var\e[0m value2\n"+
58
- " \e[97m[0] params.this.var value1\e[0m\n"
59
- }
60
- let(:params) {
61
- [
62
- { file: 'path1', value: 'value1', merged: 'value1'},
63
- { file: 'path2', value: 'value2', merged: 'value2'},
64
- ]
65
- }
66
- before {
67
- console_format.instance_variable_set(:@colors,
68
- {'path1' => 0, 'path2' => 1}
69
- )
70
- }
71
- it "outputs proper text" do
72
- expect(console_format.send :build_params_line,
73
- "params.this.var",
74
- params,
75
- nil).to eq expected
56
+ context "when not merged" do
57
+ let(:expected) {
58
+ "\e[32m[1]\e[0m \e[36mparams.this.var\e[0m value2\n"+
59
+ " \e[97m[0] params.this.var value1\e[0m\n"
60
+ }
61
+ let(:params) {
62
+ [
63
+ { file: 'path1', value: 'value1', merged: 'value1'},
64
+ { file: 'path2', value: 'value2', merged: 'value2'},
65
+ ]
66
+ }
67
+ before {
68
+ console_format.instance_variable_set(:@colors,
69
+ {'path1' => 0, 'path2' => 1}
70
+ )
71
+ }
72
+ it "outputs proper text" do
73
+ expect(console_format.send :build_params_line,
74
+ "params.this.var",
75
+ params,
76
+ nil).to eq expected
77
+ end
78
+ end
79
+ context "when merged" do
80
+ let(:expected) {
81
+ "[-] \e[36mparams.this.var\e[0m [\"value1\", \"value2\"]\n"+
82
+ " \e[97m[1] params.this.var [\"value2\"]\e[0m\n"+
83
+ " \e[97m[0] params.this.var [\"value1\"]\e[0m\n"
84
+ }
85
+ let(:params) {
86
+ [
87
+ { file: 'path1', value: ['value1'], merged: ['value1'] },
88
+ { file: 'path2', value: ['value2'], merged: ['value1','value2'] }
89
+ ]
90
+ }
91
+ before {
92
+ console_format.instance_variable_set(:@colors,
93
+ {'path1' => 0, 'path2' => 1}
94
+ )
95
+ }
96
+ it "outputs proper text" do
97
+ expect(console_format.send :build_params_line,
98
+ "params.this.var",
99
+ params,
100
+ nil).to eq expected
101
+ end
76
102
  end
77
103
  end
78
104
 
@@ -104,4 +130,11 @@ describe Hieracles::Formats::Console do
104
130
  end
105
131
  end
106
132
  end
133
+
134
+ describe ".sanitize" do
135
+ let(:value) { "something with % inside" }
136
+ let(:expected) { "something with %% inside" }
137
+ it { expect(console_format.send :sanitize, value).to eq expected }
138
+ end
139
+
107
140
  end
@@ -51,25 +51,48 @@ describe Hieracles::Formats::Csv do
51
51
 
52
52
  describe ".build_params_line" do
53
53
  context "with array values" do
54
- let(:expected) {
55
- "0;0;params.this.var;[\"value1\", \"value2\"];0\n"+
56
- "0;1;params.this.var;[\"value2\"];1\n"+
57
- "1;0;params.this.var;[\"value1\"];1\n"
58
- }
59
- let(:params) {
60
- [
61
- { file: 'path1', value: ['value1'], merged: ['value1'] },
62
- { file: 'path2', value: ['value2'], merged: ['value1','value2'] },
63
- ]
64
- }
65
- before {
66
- allow(node).to receive(:files).and_return(['path1', 'path2'])
67
- }
68
- it "outputs proper text" do
69
- expect(csv_format.send :build_params_line,
70
- "params.this.var",
71
- params,
72
- nil).to eq expected
54
+ context "when not merged" do
55
+ let(:expected) {
56
+ "0;1;params.this.var;[\"value1\"];0\n"+
57
+ "1;0;params.this.var;[\"value1\"];1\n"
58
+ }
59
+ let(:params) {
60
+ [
61
+ { file: 'path1', value: ['value1'], merged: ['value1'] },
62
+ { file: 'path2', value: ['value1'], merged: ['value1'] },
63
+ ]
64
+ }
65
+ before {
66
+ allow(node).to receive(:files).and_return(['path1', 'path2'])
67
+ }
68
+ it "outputs proper text" do
69
+ expect(csv_format.send :build_params_line,
70
+ "params.this.var",
71
+ params,
72
+ nil).to eq expected
73
+ end
74
+ end
75
+ context "when merged" do
76
+ let(:expected) {
77
+ "0;0;params.this.var;[\"value1\", \"value2\"];0\n"+
78
+ "0;1;params.this.var;[\"value2\"];1\n"+
79
+ "1;0;params.this.var;[\"value1\"];1\n"
80
+ }
81
+ let(:params) {
82
+ [
83
+ { file: 'path1', value: ['value1'], merged: ['value1'] },
84
+ { file: 'path2', value: ['value2'], merged: ['value1','value2'] },
85
+ ]
86
+ }
87
+ before {
88
+ allow(node).to receive(:files).and_return(['path1', 'path2'])
89
+ }
90
+ it "outputs proper text" do
91
+ expect(csv_format.send :build_params_line,
92
+ "params.this.var",
93
+ params,
94
+ nil).to eq expected
95
+ end
73
96
  end
74
97
  end
75
98
  context "with non-array values" do
@@ -53,26 +53,52 @@ describe Hieracles::Formats::Plain do
53
53
  end
54
54
 
55
55
  describe ".build_params_line" do
56
- let(:expected) {
57
- "[1] params.this.var value2\n"+
58
- " [0] params.this.var value1\n"
59
- }
60
- let(:params) {
61
- [
62
- { file: 'path1', value: 'value1', merged: 'value1'},
63
- { file: 'path2', value: 'value2', merged: 'value2'},
64
- ]
65
- }
66
- before {
67
- plain_format.instance_variable_set(:@index,
68
- {'path1' => 0, 'path2' => 1}
69
- )
70
- }
71
- it "outputs proper text" do
72
- expect(plain_format.send :build_params_line,
73
- "params.this.var",
74
- params,
75
- nil).to eq expected
56
+ context "when not merged" do
57
+ let(:expected) {
58
+ "[1] params.this.var value2\n"+
59
+ " [0] params.this.var value1\n"
60
+ }
61
+ let(:params) {
62
+ [
63
+ { file: 'path1', value: 'value1', merged: 'value1'},
64
+ { file: 'path2', value: 'value2', merged: 'value2'},
65
+ ]
66
+ }
67
+ before {
68
+ plain_format.instance_variable_set(:@index,
69
+ {'path1' => 0, 'path2' => 1}
70
+ )
71
+ }
72
+ it "outputs proper text" do
73
+ expect(plain_format.send :build_params_line,
74
+ "params.this.var",
75
+ params,
76
+ nil).to eq expected
77
+ end
78
+ end
79
+ context "when merged" do
80
+ let(:expected) {
81
+ "[-] params.this.var [\"value1\", \"value2\"]\n"+
82
+ " [1] params.this.var [\"value2\"]\n"+
83
+ " [0] params.this.var [\"value1\"]\n"
84
+ }
85
+ let(:params) {
86
+ [
87
+ { file: 'path1', value: ['value1'], merged: ['value1'] },
88
+ { file: 'path2', value: ['value2'], merged: ['value1','value2'] },
89
+ ]
90
+ }
91
+ before {
92
+ plain_format.instance_variable_set(:@index,
93
+ {'path1' => 0, 'path2' => 1}
94
+ )
95
+ }
96
+ it "outputs proper text" do
97
+ expect(plain_format.send :build_params_line,
98
+ "params.this.var",
99
+ params,
100
+ nil).to eq expected
101
+ end
76
102
  end
77
103
  end
78
104
 
@@ -1,18 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Hieracles::Hiera do
4
- before { Hieracles::Config.load(options) }
5
4
 
6
5
  describe '.new' do
7
6
 
8
7
  context 'hiera file not found' do
9
- let(:options) { {
8
+ let(:options) { {
9
+ basepath: 'spec/files',
10
10
  config: 'spec/files/config.yml',
11
11
  basepath: 'spec/files',
12
12
  hierafile: 'hiera_no.yaml'
13
13
  } }
14
14
  it 'raises an error' do
15
- expect { Hieracles::Hiera.new }.to raise_error(IOError)
15
+ expect { Hieracles::Config.load(options) }.to raise_error(IOError)
16
16
  end
17
17
  end
18
18
 
@@ -26,6 +26,7 @@ describe Hieracles::Hiera do
26
26
  File.expand_path(File.join(options[:basepath], options[:hierafile]))
27
27
  }
28
28
  let(:hiera) { Hieracles::Hiera.new }
29
+ before { Hieracles::Config.load(options) }
29
30
  it 'load the file' do
30
31
  expect(hiera.instance_variable_get :@loaded).to be_a Hash
31
32
  expect(hiera.instance_variable_get :@hierafile).to eq expected
@@ -35,6 +36,7 @@ describe Hieracles::Hiera do
35
36
  end
36
37
 
37
38
  describe '.datapath' do
39
+ before { Hieracles::Config.load(options) }
38
40
  context 'hiera file do not have a yaml backend' do
39
41
  let(:options) { {
40
42
  config: 'spec/files/config.yml',
@@ -74,6 +76,7 @@ describe Hieracles::Hiera do
74
76
  end
75
77
 
76
78
  describe '.datadir' do
79
+ before { Hieracles::Config.load(options) }
77
80
  let(:options) {
78
81
  {
79
82
  config: 'spec/files/config.yml',
@@ -86,6 +89,7 @@ describe Hieracles::Hiera do
86
89
  end
87
90
 
88
91
  context "with proper params" do
92
+ before { Hieracles::Config.load(options) }
89
93
  let(:options) {
90
94
  {
91
95
  config: 'spec/files/config.yml',
@@ -155,9 +155,9 @@ describe Hieracles::Node do
155
155
  context "no unfound modules" do
156
156
  let(:expected) {
157
157
  {
158
- "fake_module" => "modules/fake_module",
159
- "fake_module2" => "modules/fake_module2",
160
- "fake_module3" => "modules/fake_module3"
158
+ "fake_module" => File.expand_path("spec/files/modules/fake_module"),
159
+ "fake_module2" => File.expand_path("spec/files/modules/fake_module2"),
160
+ "fake_module3" => File.expand_path("spec/files/modules/fake_module3")
161
161
  }
162
162
  }
163
163
  it { expect(node.modules).to eq expected }
@@ -166,8 +166,8 @@ describe Hieracles::Node do
166
166
  let(:node) { Hieracles::Node.new 'server2.example.com', options }
167
167
  let(:expected) {
168
168
  {
169
- "fake_module" => "modules/fake_module",
170
- "fake_module2" => "modules/fake_module2",
169
+ "fake_module" => File.expand_path("spec/files/modules/fake_module"),
170
+ "fake_module2" => File.expand_path("spec/files/modules/fake_module2"),
171
171
  "fake_module4" => nil
172
172
  }
173
173
  }
@@ -181,11 +181,11 @@ describe Hieracles::Node do
181
181
  let(:node) { Hieracles::Node.new 'server4.example.com', options }
182
182
  let(:expected) {
183
183
  {
184
- "fake_module" => "modules/fake_module",
185
- "fake_module2" => "modules/fake_module2",
184
+ "fake_module" => File.expand_path("spec/files/modules/fake_module"),
185
+ "fake_module2" => File.expand_path("spec/files/modules/fake_module2"),
186
186
  "fake_module4" => nil,
187
- "faux_module1" => "modules/faux_module1",
188
- "faux_module2" => "modules/faux_module2"
187
+ "faux_module1" => File.expand_path("spec/files/modules/faux_module1"),
188
+ "faux_module2" => File.expand_path("spec/files/modules/faux_module2")
189
189
  }
190
190
  }
191
191
  it { expect(node.modules).to eq expected }
@@ -5,12 +5,15 @@ describe Hieracles::Registry do
5
5
 
6
6
  describe '.farms' do
7
7
  let(:options) do
8
- { config: 'spec/files/config.yml', basepath: 'spec/files' }
8
+ {
9
+ config: 'spec/files/config.yml',
10
+ basepath: 'spec/files'
11
+ }
9
12
  end
10
13
  let(:expected) { [
11
- File.join(base, options[:basepath], 'farm_modules', 'dev.pp'),
12
- File.join(base, options[:basepath], 'farm_modules', 'dev2.pp'),
13
- File.join(base, options[:basepath], 'farm_modules', 'dev4.pp')
14
+ File.join(Hieracles::Config.basepath, 'farm_modules', 'dev.pp'),
15
+ File.join(Hieracles::Config.basepath, 'farm_modules', 'dev2.pp'),
16
+ File.join(Hieracles::Config.basepath, 'farm_modules', 'dev4.pp')
14
17
  ] }
15
18
  before { Hieracles::Config.load options}
16
19
  it { expect(Hieracles::Registry.farms Hieracles::Config).to eq expected }
@@ -18,7 +21,10 @@ describe Hieracles::Registry do
18
21
 
19
22
  describe '.nodes' do
20
23
  let(:options) do
21
- { config: 'spec/files/config.yml', basepath: 'spec/files' }
24
+ {
25
+ config: 'spec/files/config.yml',
26
+ basepath: 'spec/files'
27
+ }
22
28
  end
23
29
  let(:expected) { [
24
30
  'server.example.com',
@@ -32,7 +38,10 @@ describe Hieracles::Registry do
32
38
 
33
39
  describe '.modules' do
34
40
  let(:options) do
35
- { config: 'spec/files/config.yml', basepath: 'spec/files' }
41
+ {
42
+ config: 'spec/files/config.yml',
43
+ basepath: 'spec/files'
44
+ }
36
45
  end
37
46
  let(:expected) { [
38
47
  'fake_module',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hieracles
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mose
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-23 00:00:00.000000000 Z
11
+ date: 2015-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deep_merge