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
|
#! /usr/bin/env ruby
require 'spec_helper'
describe Puppet::Util::RunMode do
before do
@run_mode = Puppet::Util::RunMode.new('fake')
end
it "has rundir depend on vardir" do
@run_mode.run_dir.should == '$vardir/run'
end
describe Puppet::Util::UnixRunMode, :unless => Puppet.features.microsoft_windows? do
before do
@run_mode = Puppet::Util::UnixRunMode.new('fake')
end
describe "#conf_dir" do
it "has confdir /etc/puppet when run as root" do
as_root { @run_mode.conf_dir.should == File.expand_path('/etc/puppet') }
end
it "has confdir ~/.puppet when run as non-root" do
as_non_root { @run_mode.conf_dir.should == File.expand_path('~/.puppet') }
end
context "master run mode" do
before do
@run_mode = Puppet::Util::UnixRunMode.new('master')
end
it "has confdir ~/.puppet when run as non-root and master run mode (#16337)" do
as_non_root { @run_mode.conf_dir.should == File.expand_path('~/.puppet') }
end
end
it "fails when asking for the conf_dir as non-root and there is no $HOME" do
as_non_root do
without_home do
expect { @run_mode.conf_dir }.to raise_error ArgumentError, /couldn't find HOME/
end
end
end
end
describe "#var_dir" do
it "has vardir /var/lib/puppet when run as root" do
as_root { @run_mode.var_dir.should == File.expand_path('/var/lib/puppet') }
end
it "has vardir ~/.puppet/var when run as non-root" do
as_non_root { @run_mode.var_dir.should == File.expand_path('~/.puppet/var') }
end
it "fails when asking for the var_dir as non-root and there is no $HOME" do
as_non_root do
without_home do
expect { @run_mode.var_dir }.to raise_error ArgumentError, /couldn't find HOME/
end
end
end
end
end
describe Puppet::Util::WindowsRunMode, :if => Puppet.features.microsoft_windows? do
before do
if not Dir.const_defined? :COMMON_APPDATA
Dir.const_set :COMMON_APPDATA, "/CommonFakeBase"
@remove_const = true
end
@run_mode = Puppet::Util::WindowsRunMode.new('fake')
end
after do
if @remove_const
Dir.send :remove_const, :COMMON_APPDATA
end
end
describe "#conf_dir" do
it "has confdir /etc/puppet when run as root" do
as_root { @run_mode.conf_dir.should == File.expand_path(File.join(Dir::COMMON_APPDATA, "PuppetLabs", "puppet", "etc")) }
end
it "has confdir in ~/.puppet when run as non-root" do
as_non_root { @run_mode.conf_dir.should == File.expand_path("~/.puppet") }
end
it "fails when asking for the conf_dir as non-root and there is no %HOME%, %HOMEDRIVE%, and %USERPROFILE%" do
as_non_root do
without_env('HOME') do
without_env('HOMEDRIVE') do
without_env('USERPROFILE') do
expect { @run_mode.conf_dir }.to raise_error ArgumentError, /couldn't find HOME/
end
end
end
end
end
end
describe "#var_dir" do
it "has vardir /var/lib/puppet when run as root" do
as_root { @run_mode.var_dir.should == File.expand_path(File.join(Dir::COMMON_APPDATA, "PuppetLabs", "puppet", "var")) }
end
it "has vardir in ~/.puppet/var when run as non-root" do
as_non_root { @run_mode.var_dir.should == File.expand_path("~/.puppet/var") }
end
it "fails when asking for the conf_dir as non-root and there is no %HOME%, %HOMEDRIVE%, and %USERPROFILE%" do
as_non_root do
without_env('HOME') do
without_env('HOMEDRIVE') do
without_env('USERPROFILE') do
expect { @run_mode.var_dir }.to raise_error ArgumentError, /couldn't find HOME/
end
end
end
end
end
end
end
def as_root
Puppet.features.stubs(:root?).returns(true)
yield
end
def as_non_root
Puppet.features.stubs(:root?).returns(false)
yield
end
def without_env(name, &block)
saved = ENV[name]
ENV.delete name
yield
ensure
ENV[name] = saved
end
def without_home(&block)
without_env('HOME', &block)
end
end
|