1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#! /usr/bin/env ruby
require 'spec_helper'
require 'puppet/face'
module PuppetFaceSpecs
describe Puppet::Face[:config, '0.0.1'] do
FS = Puppet::FileSystem
it "prints a single setting without the name" do
Puppet[:trace] = true
expect { subject.print("trace") }.to have_printed('true')
end
it "prints multiple settings with the names" do
Puppet[:trace] = true
Puppet[:syslogfacility] = "file"
expect { subject.print("trace", "syslogfacility") }.to have_printed(<<-OUTPUT)
trace = true
syslogfacility = file
OUTPUT
end
it "prints the setting from the selected section" do
Puppet.settings.parse_config(<<-CONF)
[other]
syslogfacility = file
CONF
expect { subject.print("syslogfacility", :section => "other") }.to have_printed('file')
end
it "defaults to all when no arguments are given" do
subject.expects(:puts).times(Puppet.settings.to_a.length)
subject.print
end
it "prints out all of the settings when asked for 'all'" do
subject.expects(:puts).times(Puppet.settings.to_a.length)
subject.print('all')
end
shared_examples_for :config_printing_a_section do |section|
def add_section_option(args, section)
args << { :section => section } if section
args
end
it "prints directory env settings for an env that exists" do
FS.overlay(
FS::MemoryFile.a_directory(File.expand_path("/dev/null/environments"), [
FS::MemoryFile.a_directory("production", [
FS::MemoryFile.a_missing_file("environment.conf"),
]),
])
) do
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
expect { subject.print(*add_section_option(args, section)) }.to have_printed(<<-OUTPUT)
environmentpath = #{File.expand_path("/dev/null/environments")}
manifest = #{File.expand_path("/dev/null/environments/production/manifests")}
modulepath = #{File.expand_path("/dev/null/environments/production/modules")}#{File::PATH_SEPARATOR}#{File.expand_path("/some/base")}
environment = production
basemodulepath = #{File.expand_path("/some/base")}
OUTPUT
end
end
it "interpolates settings in environment.conf" do
FS.overlay(
FS::MemoryFile.a_directory(File.expand_path("/dev/null/environments"), [
FS::MemoryFile.a_directory("production", [
FS::MemoryFile.a_regular_file_containing("environment.conf", <<-CONTENT),
modulepath=/custom/modules#{File::PATH_SEPARATOR}$basemodulepath
CONTENT
]),
])
) do
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
expect { subject.print(*add_section_option(args, section)) }.to have_printed(<<-OUTPUT)
environmentpath = #{File.expand_path("/dev/null/environments")}
manifest = #{File.expand_path("/dev/null/environments/production/manifests")}
modulepath = #{File.expand_path("/custom/modules")}#{File::PATH_SEPARATOR}#{File.expand_path("/some/base")}
environment = production
basemodulepath = #{File.expand_path("/some/base")}
OUTPUT
end
end
it "prints the default configured env settings for an env that does not exist" do
pending "This case no longer exists because Application will through an error before we even get here because of the non-existent environment"
Puppet[:environment] = 'doesnotexist'
FS.overlay(
FS::MemoryFile.a_directory(File.expand_path("/dev/null/environments"), [
FS::MemoryFile.a_missing_file("doesnotexist")
])
) do
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
expect { subject.print(*add_section_option(args, section)) }.to have_printed(<<-OUTPUT)
environmentpath = #{File.expand_path("/dev/null/environments")}
manifest = no_manifest
modulepath =
environment = doesnotexist
basemodulepath = #{File.expand_path("/some/base")}
OUTPUT
end
end
end
context "when printing environment settings" do
before(:each) do
Puppet.settings.stubs(:global_defaults_initialized?).returns(:true)
end
context "from main section" do
before(:each) do
Puppet.settings.parse_config(<<-CONF)
[main]
environmentpath=$confdir/environments
basemodulepath=/some/base
CONF
end
it_behaves_like :config_printing_a_section, nil
end
context "from master section" do
before(:each) do
Puppet.settings.parse_config(<<-CONF)
[master]
environmentpath=$confdir/environments
basemodulepath=/some/base
CONF
Puppet.settings.stubs(:global_defaults_initialized?).returns(:true)
end
it_behaves_like :config_printing_a_section, :master
end
end
end
end
|