puppet 0.9.2

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

Potentially problematic release.


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

Files changed (182) hide show
  1. data/CHANGELOG +0 -0
  2. data/COPYING +340 -0
  3. data/LICENSE +17 -0
  4. data/README +24 -0
  5. data/Rakefile +294 -0
  6. data/TODO +4 -0
  7. data/bin/cf2puppet +186 -0
  8. data/bin/puppet +176 -0
  9. data/bin/puppetca +213 -0
  10. data/bin/puppetd +246 -0
  11. data/bin/puppetdoc +184 -0
  12. data/bin/puppetmasterd +258 -0
  13. data/examples/code/allatonce +13 -0
  14. data/examples/code/assignments +11 -0
  15. data/examples/code/classing +35 -0
  16. data/examples/code/components +73 -0
  17. data/examples/code/execs +16 -0
  18. data/examples/code/failers/badclassnoparam +10 -0
  19. data/examples/code/failers/badclassparam +10 -0
  20. data/examples/code/failers/badcompnoparam +9 -0
  21. data/examples/code/failers/badcompparam +9 -0
  22. data/examples/code/failers/badtypeparam +3 -0
  23. data/examples/code/file.bl +11 -0
  24. data/examples/code/filedefaults +10 -0
  25. data/examples/code/fileparsing +116 -0
  26. data/examples/code/filerecursion +15 -0
  27. data/examples/code/functions +3 -0
  28. data/examples/code/groups +7 -0
  29. data/examples/code/head +30 -0
  30. data/examples/code/importing +8 -0
  31. data/examples/code/nodes +20 -0
  32. data/examples/code/one +8 -0
  33. data/examples/code/relationships +34 -0
  34. data/examples/code/selectors +28 -0
  35. data/examples/code/simpletests +11 -0
  36. data/examples/code/snippets/argumentdefaults +14 -0
  37. data/examples/code/snippets/casestatement +39 -0
  38. data/examples/code/snippets/classheirarchy.pp +15 -0
  39. data/examples/code/snippets/classincludes.pp +17 -0
  40. data/examples/code/snippets/classpathtest +11 -0
  41. data/examples/code/snippets/dirchmod +19 -0
  42. data/examples/code/snippets/failmissingexecpath.pp +13 -0
  43. data/examples/code/snippets/falsevalues.pp +3 -0
  44. data/examples/code/snippets/filecreate +11 -0
  45. data/examples/code/snippets/implicititeration +15 -0
  46. data/examples/code/snippets/multipleinstances +7 -0
  47. data/examples/code/snippets/namevartest +9 -0
  48. data/examples/code/snippets/scopetest +13 -0
  49. data/examples/code/snippets/selectorvalues.pp +22 -0
  50. data/examples/code/snippets/simpledefaults +5 -0
  51. data/examples/code/snippets/simpleselector +38 -0
  52. data/examples/code/svncommit +13 -0
  53. data/examples/root/bin/sleeper +69 -0
  54. data/examples/root/etc/configfile +0 -0
  55. data/examples/root/etc/debian-passwd +29 -0
  56. data/examples/root/etc/debian-syslog.conf +71 -0
  57. data/examples/root/etc/init.d/sleeper +65 -0
  58. data/examples/root/etc/otherfile +0 -0
  59. data/examples/root/etc/puppet/fileserver.conf +3 -0
  60. data/examples/root/etc/puppet/puppetmasterd.conf +10 -0
  61. data/ext/module:puppet +195 -0
  62. data/install.rb +270 -0
  63. data/lib/puppet.rb +249 -0
  64. data/lib/puppet/base64.rb +19 -0
  65. data/lib/puppet/client.rb +519 -0
  66. data/lib/puppet/config.rb +49 -0
  67. data/lib/puppet/daemon.rb +208 -0
  68. data/lib/puppet/element.rb +71 -0
  69. data/lib/puppet/event.rb +259 -0
  70. data/lib/puppet/log.rb +321 -0
  71. data/lib/puppet/metric.rb +250 -0
  72. data/lib/puppet/parsedfile.rb +38 -0
  73. data/lib/puppet/parser/ast.rb +1560 -0
  74. data/lib/puppet/parser/interpreter.rb +150 -0
  75. data/lib/puppet/parser/lexer.rb +226 -0
  76. data/lib/puppet/parser/parser.rb +1354 -0
  77. data/lib/puppet/parser/scope.rb +755 -0
  78. data/lib/puppet/server.rb +170 -0
  79. data/lib/puppet/server/authstore.rb +227 -0
  80. data/lib/puppet/server/ca.rb +140 -0
  81. data/lib/puppet/server/filebucket.rb +147 -0
  82. data/lib/puppet/server/fileserver.rb +477 -0
  83. data/lib/puppet/server/logger.rb +43 -0
  84. data/lib/puppet/server/master.rb +103 -0
  85. data/lib/puppet/server/servlet.rb +247 -0
  86. data/lib/puppet/sslcertificates.rb +737 -0
  87. data/lib/puppet/statechange.rb +150 -0
  88. data/lib/puppet/storage.rb +95 -0
  89. data/lib/puppet/transaction.rb +179 -0
  90. data/lib/puppet/transportable.rb +151 -0
  91. data/lib/puppet/type.rb +1354 -0
  92. data/lib/puppet/type/component.rb +141 -0
  93. data/lib/puppet/type/cron.rb +543 -0
  94. data/lib/puppet/type/exec.rb +316 -0
  95. data/lib/puppet/type/group.rb +152 -0
  96. data/lib/puppet/type/nameservice.rb +3 -0
  97. data/lib/puppet/type/nameservice/netinfo.rb +173 -0
  98. data/lib/puppet/type/nameservice/objectadd.rb +146 -0
  99. data/lib/puppet/type/nameservice/posix.rb +200 -0
  100. data/lib/puppet/type/package.rb +420 -0
  101. data/lib/puppet/type/package/apt.rb +70 -0
  102. data/lib/puppet/type/package/dpkg.rb +108 -0
  103. data/lib/puppet/type/package/rpm.rb +81 -0
  104. data/lib/puppet/type/package/sun.rb +117 -0
  105. data/lib/puppet/type/package/yum.rb +58 -0
  106. data/lib/puppet/type/pfile.rb +569 -0
  107. data/lib/puppet/type/pfile/checksum.rb +219 -0
  108. data/lib/puppet/type/pfile/create.rb +108 -0
  109. data/lib/puppet/type/pfile/group.rb +129 -0
  110. data/lib/puppet/type/pfile/mode.rb +131 -0
  111. data/lib/puppet/type/pfile/source.rb +264 -0
  112. data/lib/puppet/type/pfile/type.rb +31 -0
  113. data/lib/puppet/type/pfile/uid.rb +166 -0
  114. data/lib/puppet/type/pfilebucket.rb +80 -0
  115. data/lib/puppet/type/pprocess.rb +97 -0
  116. data/lib/puppet/type/service.rb +347 -0
  117. data/lib/puppet/type/service/base.rb +17 -0
  118. data/lib/puppet/type/service/debian.rb +50 -0
  119. data/lib/puppet/type/service/init.rb +145 -0
  120. data/lib/puppet/type/service/smf.rb +29 -0
  121. data/lib/puppet/type/state.rb +182 -0
  122. data/lib/puppet/type/symlink.rb +183 -0
  123. data/lib/puppet/type/tidy.rb +183 -0
  124. data/lib/puppet/type/typegen.rb +149 -0
  125. data/lib/puppet/type/typegen/filerecord.rb +243 -0
  126. data/lib/puppet/type/typegen/filetype.rb +316 -0
  127. data/lib/puppet/type/user.rb +290 -0
  128. data/lib/puppet/util.rb +138 -0
  129. data/test/certmgr/certmgr.rb +265 -0
  130. data/test/client/client.rb +203 -0
  131. data/test/executables/puppetbin.rb +53 -0
  132. data/test/executables/puppetca.rb +79 -0
  133. data/test/executables/puppetd.rb +71 -0
  134. data/test/executables/puppetmasterd.rb +153 -0
  135. data/test/executables/puppetmodule.rb +60 -0
  136. data/test/language/ast.rb +412 -0
  137. data/test/language/interpreter.rb +71 -0
  138. data/test/language/scope.rb +412 -0
  139. data/test/language/snippets.rb +445 -0
  140. data/test/other/events.rb +111 -0
  141. data/test/other/log.rb +195 -0
  142. data/test/other/metrics.rb +92 -0
  143. data/test/other/overrides.rb +115 -0
  144. data/test/other/parsedfile.rb +31 -0
  145. data/test/other/relationships.rb +113 -0
  146. data/test/other/state.rb +106 -0
  147. data/test/other/storage.rb +39 -0
  148. data/test/other/transactions.rb +235 -0
  149. data/test/parser/lexer.rb +120 -0
  150. data/test/parser/parser.rb +180 -0
  151. data/test/puppet/conffiles.rb +104 -0
  152. data/test/puppet/defaults.rb +100 -0
  153. data/test/puppet/error.rb +23 -0
  154. data/test/puppet/utiltest.rb +120 -0
  155. data/test/puppettest.rb +774 -0
  156. data/test/server/authstore.rb +209 -0
  157. data/test/server/bucket.rb +227 -0
  158. data/test/server/ca.rb +201 -0
  159. data/test/server/fileserver.rb +710 -0
  160. data/test/server/logger.rb +175 -0
  161. data/test/server/master.rb +150 -0
  162. data/test/server/server.rb +130 -0
  163. data/test/tagging/tagging.rb +80 -0
  164. data/test/test +51 -0
  165. data/test/types/basic.rb +119 -0
  166. data/test/types/component.rb +272 -0
  167. data/test/types/cron.rb +261 -0
  168. data/test/types/exec.rb +273 -0
  169. data/test/types/file.rb +616 -0
  170. data/test/types/filebucket.rb +167 -0
  171. data/test/types/fileignoresource.rb +287 -0
  172. data/test/types/filesources.rb +587 -0
  173. data/test/types/filetype.rb +162 -0
  174. data/test/types/group.rb +271 -0
  175. data/test/types/package.rb +205 -0
  176. data/test/types/query.rb +101 -0
  177. data/test/types/service.rb +100 -0
  178. data/test/types/symlink.rb +93 -0
  179. data/test/types/tidy.rb +124 -0
  180. data/test/types/type.rb +135 -0
  181. data/test/types/user.rb +371 -0
  182. metadata +243 -0
@@ -0,0 +1,180 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '../../lib'
3
+ $:.unshift '..'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppet/parser/parser'
9
+ require 'test/unit'
10
+ require 'puppettest'
11
+
12
+ class TestParser < Test::Unit::TestCase
13
+ include TestPuppet
14
+ def setup
15
+ super
16
+ Puppet[:parseonly] = true
17
+ #@lexer = Puppet::Parser::Lexer.new()
18
+ @parser = Puppet::Parser::Parser.new()
19
+ end
20
+
21
+ def test_each_file
22
+ textfiles { |file|
23
+ Puppet.debug("parsing %s" % file) if __FILE__ == $0
24
+ assert_nothing_raised() {
25
+ @parser.file = file
26
+ @parser.parse
27
+ }
28
+
29
+ Puppet::Type.eachtype { |type|
30
+ type.each { |obj|
31
+ assert(obj.file)
32
+ assert(obj.name)
33
+ assert(obj.line)
34
+ }
35
+ }
36
+ Puppet::Type.allclear
37
+ }
38
+ end
39
+
40
+ def test_failers
41
+ failers { |file|
42
+ Puppet.debug("parsing failer %s" % file) if __FILE__ == $0
43
+ assert_raise(Puppet::ParseError) {
44
+ @parser.file = file
45
+ @parser.parse
46
+ }
47
+ Puppet::Type.allclear
48
+ }
49
+ end
50
+
51
+ def test_arrayrvalues
52
+ parser = Puppet::Parser::Parser.new()
53
+ ret = nil
54
+ assert_nothing_raised {
55
+ parser.string = 'file { "/tmp/testing": mode => [755, 640] }'
56
+ }
57
+
58
+ assert_nothing_raised {
59
+ ret = parser.parse
60
+ }
61
+ end
62
+
63
+ def mkmanifest(file)
64
+ name = File.join(tmpdir, "file%s" % rand(100))
65
+ @@tmpfiles << name
66
+
67
+ File.open(file, "w") { |f|
68
+ f.puts "file { \"%s\": create => true, mode => 755 }\n" %
69
+ name
70
+ }
71
+ end
72
+
73
+ def test_importglobbing
74
+ basedir = File.join(tmpdir(), "importesting")
75
+ @@tmpfiles << basedir
76
+ Dir.mkdir(basedir)
77
+
78
+ subdir = "subdir"
79
+ Dir.mkdir(File.join(basedir, subdir))
80
+ manifest = File.join(basedir, "manifest")
81
+ File.open(manifest, "w") { |f|
82
+ f.puts "import \"%s/*\"" % subdir
83
+ }
84
+
85
+ 4.times { |i|
86
+ path = File.join(basedir, subdir, "subfile%s" % i)
87
+ mkmanifest(path)
88
+ }
89
+
90
+ assert_nothing_raised("Could not parse multiple files") {
91
+ parser = Puppet::Parser::Parser.new()
92
+ parser.file = manifest
93
+ parser.parse
94
+ }
95
+ end
96
+
97
+ def test_zdefaults
98
+ basedir = File.join(tmpdir(), "defaulttesting")
99
+ @@tmpfiles << basedir
100
+ Dir.mkdir(basedir)
101
+
102
+ defs1 = {
103
+ "testing" => "value"
104
+ }
105
+
106
+ defs2 = {
107
+ "one" => "two",
108
+ "three" => "four",
109
+ "five" => false,
110
+ "seven" => "eight",
111
+ "nine" => true,
112
+ "eleven" => "twelve"
113
+ }
114
+
115
+ mkdef = proc { |hash|
116
+ hash.collect { |arg, value|
117
+ "%s = %s" % [arg, value]
118
+ }.join(", ")
119
+ }
120
+ manifest = File.join(basedir, "manifest")
121
+ File.open(manifest, "w") { |f|
122
+ f.puts "
123
+ define method(#{mkdef.call(defs1)}, other) {
124
+ $variable = $testing
125
+ }
126
+
127
+ define othermethod(#{mkdef.call(defs2)}, goodness) {
128
+ $more = less
129
+ }
130
+
131
+ method {
132
+ other => yayness
133
+ }
134
+
135
+ othermethod {
136
+ goodness => rahness
137
+ }
138
+ "
139
+ }
140
+
141
+ ast = nil
142
+ assert_nothing_raised("Could not parse multiple files") {
143
+ parser = Puppet::Parser::Parser.new()
144
+ parser.file = manifest
145
+ ast = parser.parse
146
+ }
147
+
148
+ assert(ast, "Did not receive AST while parsing defaults")
149
+
150
+ scope = nil
151
+ assert_nothing_raised("Could not evaluate defaults parse tree") {
152
+ scope = Puppet::Parser::Scope.new()
153
+ objects = scope.evaluate(ast)
154
+ }
155
+
156
+ method = nil
157
+ othermethod = nil
158
+ assert_nothing_raised {
159
+ method = scope.find { |child|
160
+ child.is_a?(Puppet::Parser::Scope) and child.type == "method"
161
+ }
162
+ defs1.each { |var, value|
163
+ curval = method.lookupvar(var)
164
+ assert_equal(value, curval, "Did not get default")
165
+ }
166
+ }
167
+
168
+ assert_nothing_raised {
169
+ method = scope.find { |child|
170
+ child.is_a?(Puppet::Parser::Scope) and child.type == "othermethod"
171
+ }
172
+ defs2.each { |var, value|
173
+ curval = method.lookupvar(var)
174
+ assert_equal(value, curval, "Did not get default")
175
+ }
176
+ }
177
+ end
178
+ end
179
+
180
+ # $Id: parser.rb 724 2005-10-22 22:27:20Z luke $
@@ -0,0 +1,104 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = ".."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppet/config'
9
+ require 'puppettest'
10
+ require 'test/unit'
11
+
12
+ class TestConfFiles < Test::Unit::TestCase
13
+ include TestPuppet
14
+
15
+ @@gooddata = [
16
+ {
17
+ "fun" => {
18
+ "a" => "b",
19
+ "c" => "d",
20
+ "e" => "f"
21
+ },
22
+ "yay" => {
23
+ "aa" => "bk",
24
+ "ca" => "dk",
25
+ "ea" => "fk"
26
+ },
27
+ "boo" => {
28
+ "eb" => "fb"
29
+ },
30
+ "rah" => {
31
+ "aa" => "this is a sentence",
32
+ "ca" => "dk",
33
+ "ea" => "fk"
34
+ },
35
+ },
36
+ {
37
+ "puppet" => {
38
+ "yay" => "rah"
39
+ },
40
+ "booh" => {
41
+ "okay" => "rah"
42
+ },
43
+ "back" => {
44
+ "okay" => "rah"
45
+ },
46
+ }
47
+ ]
48
+
49
+ def data2config(data)
50
+ str = ""
51
+
52
+ if data.include?("puppet")
53
+ # because we're modifying it
54
+ data = data.dup
55
+ str += "[puppet]\n"
56
+ data["puppet"].each { |var, value|
57
+ str += "%s %s\n" % [var, value]
58
+ }
59
+ data.delete("puppet")
60
+ end
61
+
62
+ data.each { |type, settings|
63
+ str += "[%s]\n" % type
64
+ settings.each { |var, value|
65
+ str += "%s %s\n" % [var, value]
66
+ }
67
+ }
68
+
69
+ return str
70
+ end
71
+
72
+ def sampledata
73
+ if block_given?
74
+ @@gooddata.each { |hash| yield hash }
75
+ else
76
+ return @@gooddata[0]
77
+ end
78
+ end
79
+
80
+ def test_readconfig
81
+ path = tempfile()
82
+
83
+ sampledata { |data|
84
+ # Write it out as a config file
85
+ File.open(path, "w") { |f| f.print data2config(data) }
86
+ config = nil
87
+ assert_nothing_raised {
88
+ config = Puppet::Config.new(path)
89
+ }
90
+
91
+ data.each { |section, hash|
92
+ hash.each { |var, value|
93
+ assert_equal(
94
+ data[section][var],
95
+ config[section][var],
96
+ "Got different values at %s/%s" % [section, var]
97
+ )
98
+ }
99
+ }
100
+ }
101
+ end
102
+ end
103
+
104
+ # $Id: conffiles.rb 738 2005-10-31 22:50:09Z luke $
@@ -0,0 +1,100 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = ".."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'test/unit'
9
+
10
+ # $Id: defaults.rb 724 2005-10-22 22:27:20Z luke $
11
+
12
+ class TestPuppetDefaults < Test::Unit::TestCase
13
+ @@dirs = %w{rrddir puppetconf puppetvar logdir statedir}
14
+ @@files = %w{logfile checksumfile manifest masterlog}
15
+ @@normals = %w{puppetport masterport server}
16
+ @@booleans = %w{rrdgraph noop}
17
+
18
+ def testVersion
19
+ assert( Puppet.version =~ /^[0-9]+(\.[0-9]+)*$/ )
20
+ end
21
+
22
+ def testStringOrParam
23
+ [@@dirs,@@files,@@booleans].flatten.each { |param|
24
+ assert_nothing_raised { Puppet[param] }
25
+ assert_nothing_raised { Puppet[param.intern] }
26
+ }
27
+ end
28
+
29
+ def test_valuesForEach
30
+ [@@dirs,@@files,@@booleans].flatten.each { |param|
31
+ param = param.intern
32
+ assert_nothing_raised { Puppet[param] }
33
+ }
34
+ end
35
+
36
+ def testValuesForEach
37
+ [@@dirs,@@files,@@booleans].flatten.each { |param|
38
+ assert_nothing_raised { Puppet[param] }
39
+ }
40
+ end
41
+
42
+ if __FILE__ == $0
43
+ def disabled_testContained
44
+ confdir = Regexp.new(Puppet[:puppetconf])
45
+ vardir = Regexp.new(Puppet[:puppetvar])
46
+ [@@dirs,@@files].flatten.each { |param|
47
+ value = Puppet[param]
48
+
49
+ unless value =~ confdir or value =~ vardir
50
+ assert_nothing_raised { raise "%s is in wrong dir: %s" %
51
+ [param,value] }
52
+ end
53
+ }
54
+ end
55
+ end
56
+
57
+ def testArgumentTypes
58
+ assert_raise(ArgumentError) { Puppet[["string"]] }
59
+ assert_raise(ArgumentError) { Puppet[[:symbol]] }
60
+ end
61
+
62
+ def testFailOnBogusArgs
63
+ [0, "ashoweklj", ";", :thisisafakesymbol].each { |param|
64
+ assert_raise(ArgumentError) { Puppet[param] }
65
+ }
66
+ end
67
+
68
+ # we don't want user defaults in /, or root defaults in ~
69
+ def testDefaultsInCorrectRoots
70
+ notval = nil
71
+ if Process.uid == 0
72
+ notval = Regexp.new(File.expand_path("~"))
73
+ else
74
+ notval = /^\/var|^\/etc/
75
+ end
76
+ [@@dirs,@@files].flatten.each { |param|
77
+ value = Puppet[param]
78
+
79
+ unless value !~ notval
80
+ assert_nothing_raised { raise "%s is in wrong dir: %s" %
81
+ [param,value] }
82
+ end
83
+ }
84
+ end
85
+
86
+ def test_settingdefaults
87
+ testvals = {
88
+ :fakeparam => [:puppetconf, "yaytest"],
89
+ :anotherparam => proc { File.join(Puppet[:puppetvar], "goodtest") },
90
+ :string => "a yay string",
91
+ :boolean => true
92
+ }
93
+
94
+ testvals.each { |param, default|
95
+ assert_nothing_raised {
96
+ Puppet.setdefault(param,default)
97
+ }
98
+ }
99
+ end
100
+ end
@@ -0,0 +1,23 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppettest'
9
+ require 'test/unit'
10
+
11
+ class TestError < Test::Unit::TestCase
12
+ include TestPuppet
13
+
14
+ def test_errorisstring
15
+ error = nil
16
+ assert_nothing_raised {
17
+ error = Puppet::ParseError.new("This is an error")
18
+ }
19
+ assert_instance_of(String, error.to_s)
20
+ end
21
+ end
22
+
23
+ # $Id: error.rb 740 2005-11-01 20:22:19Z luke $
@@ -0,0 +1,120 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = ".."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppettest'
9
+ require 'test/unit'
10
+
11
+ class TestPuppetUtil < Test::Unit::TestCase
12
+ include TestPuppet
13
+ unless Process.uid == 0
14
+ $stderr.puts "Run as root to perform Utility tests"
15
+ else
16
+
17
+ def mknverify(file, user, group = nil, id = false)
18
+ if File.exists?(file)
19
+ File.unlink(file)
20
+ end
21
+ args = []
22
+ unless user or group
23
+ args << nil
24
+ end
25
+ if user
26
+ if id
27
+ args << user.uid
28
+ else
29
+ args << user.name
30
+ end
31
+ end
32
+
33
+ if group
34
+ if id
35
+ args << group.gid
36
+ else
37
+ args << group.name
38
+ end
39
+ end
40
+
41
+ gid = nil
42
+ if group
43
+ gid = group.gid
44
+ else
45
+ gid = Process.gid
46
+ end
47
+
48
+ uid = nil
49
+ if user
50
+ uid = user.uid
51
+ else
52
+ uid = Process.uid
53
+ end
54
+
55
+ assert_nothing_raised {
56
+ Puppet::Util.asuser(*args) {
57
+ assert_equal(Process.euid, uid, "UID is %s instead of %s" %
58
+ [Process.euid, uid]
59
+ )
60
+ assert_equal(Process.egid, gid, "GID is %s instead of %s" %
61
+ [Process.egid, gid]
62
+ )
63
+ system("touch %s" % file)
64
+ }
65
+ }
66
+ if uid == 0
67
+ #Puppet.warning "Not testing user"
68
+ else
69
+ #Puppet.warning "Testing user %s" % uid
70
+ assert(File.exists?(file), "File does not exist")
71
+ assert_equal(File.stat(file).uid, uid,
72
+ "File is owned by %s instead of %s" %
73
+ [File.stat(file).uid, uid]
74
+ )
75
+ #system("ls -l %s" % file)
76
+ end
77
+ if gid == 0
78
+ #Puppet.warning "Not testing group"
79
+ else
80
+ #Puppet.warning "Testing group %s" % gid
81
+ assert_equal(File.stat(file).gid, gid,
82
+ "File group is %s instead of %s" %
83
+ [File.stat(file).gid, gid]
84
+ )
85
+ #system("ls -l %s" % file)
86
+ end
87
+ assert_nothing_raised {
88
+ File.unlink(file)
89
+ }
90
+ end
91
+
92
+ def test_asuser
93
+ file = File.join(tmpdir, "asusertest")
94
+ @@tmpfiles << file
95
+ [
96
+ [nil], # Nothing
97
+ [nonrootuser()], # just user, by name
98
+ [nonrootuser(), nil, true], # user, by uid
99
+ [nonrootuser(), nonrootgroup()], # user and group, by name
100
+ [nonrootuser(), nonrootgroup(), true], # user and group, by id
101
+ ].each { |ary|
102
+ mknverify(file, *ary)
103
+ }
104
+ end
105
+
106
+ # Verify that we get reset back to the right user
107
+ def test_asuser_recovery
108
+ begin
109
+ Puppet::Util.asuser(nonrootuser()) {
110
+ raise "an error"
111
+ }
112
+ rescue
113
+ end
114
+
115
+ assert(Process.euid == 0, "UID did not get reset")
116
+ end
117
+ end
118
+ end
119
+
120
+ # $Id: utiltest.rb 743 2005-11-16 21:39:31Z luke $