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,162 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../../../../language/trunk"
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppet/type/typegen/filetype'
9
+ require 'puppet/type/typegen/filerecord'
10
+ require 'test/unit'
11
+
12
+ # $Id: filetype.rb 724 2005-10-22 22:27:20Z luke $
13
+
14
+ #class TestFileType < Test::Unit::TestCase
15
+ class TestFileType
16
+ def disabled_setup
17
+ Puppet[:loglevel] = :debug if __FILE__ == $0
18
+
19
+ @passwdtype = Puppet::Type::FileType["passwd"]
20
+ if @passwdtype.nil?
21
+ assert_nothing_raised() {
22
+ @passwdtype = Puppet::Type::FileType.createtype(
23
+ :name => "passwd"
24
+ )
25
+ @passwdtype.addrecord(
26
+ :name => "user",
27
+ :splitchar => ":",
28
+ :fields => %w{name password uid gid gcos home shell}
29
+ )
30
+ }
31
+ end
32
+
33
+ @syslogtype = Puppet::Type::FileType["syslog"]
34
+ if @syslogtype.nil?
35
+ assert_nothing_raised() {
36
+ @syslogtype = Puppet::Type::FileType.createtype(
37
+ :escapednewlines => true,
38
+ :name => "syslog"
39
+ )
40
+ @syslogtype.addrecord(
41
+ :name => "data",
42
+ :regex => %r{^([^#\s]+)\s+(\S+)$},
43
+ :joinchar => "\t",
44
+ :fields => %w{logs dest}
45
+ )
46
+ @syslogtype.addrecord(
47
+ :name => "comment",
48
+ :regex => %r{^(#.*)$},
49
+ :joinchar => "", # not really necessary...
50
+ :fields => %w{comment}
51
+ )
52
+ @syslogtype.addrecord(
53
+ :name => "blank",
54
+ :regex => %r{^(\s*)$},
55
+ :joinchar => "", # not really necessary...
56
+ :fields => %w{blank}
57
+ )
58
+ }
59
+ end
60
+
61
+ end
62
+
63
+ def disabled_test_passwd1_nochange
64
+ file = nil
65
+ type = nil
66
+ assert_nothing_raised() {
67
+ file = @passwdtype.new("/etc/passwd")
68
+ }
69
+ assert_nothing_raised() {
70
+ file.retrieve
71
+ }
72
+
73
+ assert(file.insync?)
74
+
75
+ contents = ""
76
+ ::File.open("/etc/passwd") { |ofile|
77
+ ofile.each { |line|
78
+ contents += line
79
+ }
80
+ }
81
+
82
+ assert_equal(
83
+ contents,
84
+ file.to_s
85
+ )
86
+
87
+ end
88
+
89
+ def disabled_test_passwd2_change
90
+ file = nil
91
+ type = nil
92
+ Kernel.system("cp /etc/passwd /tmp/oparsepasswd")
93
+ assert_nothing_raised() {
94
+ file = @passwdtype.new("/tmp/oparsepasswd")
95
+ }
96
+ assert_nothing_raised() {
97
+ file.retrieve
98
+ }
99
+
100
+ assert(file.insync?)
101
+
102
+ assert_nothing_raised() {
103
+ file.add("user") { |obj|
104
+ obj["name"] = "yaytest"
105
+ obj["password"] = "x"
106
+ obj["uid"] = "10000"
107
+ obj["gid"] = "10000"
108
+ obj["home"] = "/home/yaytest"
109
+ obj["gcos"] = "The Yaytest"
110
+ obj["shell"] = "/bin/sh"
111
+ }
112
+ }
113
+
114
+ assert(!file.insync?)
115
+
116
+ assert_nothing_raised() {
117
+ file.sync
118
+ }
119
+
120
+ assert(file.insync?)
121
+
122
+ assert_nothing_raised() {
123
+ file.delete("bin")
124
+ }
125
+
126
+ assert(!file.insync?)
127
+
128
+ assert_nothing_raised() {
129
+ file.sync
130
+ }
131
+
132
+ assert(file.insync?)
133
+
134
+ Kernel.system("rm /tmp/oparsepasswd")
135
+ end
136
+
137
+ def disabled_test_syslog_nochange
138
+ file = nil
139
+ type = nil
140
+ syslog = File.join($puppetbase, "examples/root/etc/debian-syslog.conf")
141
+ assert_nothing_raised() {
142
+ file = @syslogtype.new(syslog)
143
+ }
144
+ assert_nothing_raised() {
145
+ file.retrieve
146
+ }
147
+
148
+ assert(file.insync?)
149
+
150
+ contents = ""
151
+ ::File.open(syslog) { |ofile|
152
+ ofile.each { |line|
153
+ contents += line
154
+ }
155
+ }
156
+ #assert_equal(
157
+ # contents,
158
+ # file.to_s
159
+ #)
160
+
161
+ end
162
+ end
@@ -0,0 +1,271 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../../../../language/trunk"
5
+ end
6
+
7
+ # $Id: group.rb 742 2005-11-16 17:12:11Z luke $
8
+
9
+ require 'etc'
10
+ require 'puppet/type'
11
+ require 'puppettest'
12
+ require 'test/unit'
13
+
14
+ class TestGroup < Test::Unit::TestCase
15
+ include TestPuppet
16
+ def setup
17
+ super
18
+ @@tmpgroups = []
19
+ end
20
+
21
+ def teardown
22
+ Puppet::Type::Group.clear
23
+ @@tmpgroups.each { |group|
24
+ unless missing?(group)
25
+ remove(group)
26
+ end
27
+ }
28
+ super
29
+ end
30
+
31
+ case Facter["operatingsystem"].value
32
+ when "Darwin":
33
+ def missing?(group)
34
+ output = %x{nidump -r /groups/#{group} / 2>/dev/null}.chomp
35
+
36
+ if output == ""
37
+ return true
38
+ else
39
+ return false
40
+ end
41
+
42
+ assert_equal("", output, "Group %s is present:\n%s" % [group, output])
43
+ end
44
+
45
+ def gid(name)
46
+ %x{nireport / /groups name gid}.split("\n").each { |line|
47
+ group, id = line.chomp.split(/\s+/)
48
+ if group == name
49
+ return Integer(id)
50
+ end
51
+ }
52
+
53
+ return nil
54
+ end
55
+
56
+ def remove(group)
57
+ system("niutil -destroy / /groups/%s" % group)
58
+ end
59
+ else
60
+ def missing?(group)
61
+ begin
62
+ obj = Etc.getgrnam(group)
63
+ return false
64
+ rescue ArgumentError
65
+ return true
66
+ end
67
+ end
68
+
69
+ def gid(name)
70
+ assert_nothing_raised {
71
+ obj = Etc.getgrnam(name)
72
+ return obj.gid
73
+ }
74
+
75
+ return nil
76
+ end
77
+
78
+ def remove(group)
79
+ system("groupdel %s" % group)
80
+ end
81
+ end
82
+
83
+ def groupnames
84
+ %x{groups}.chomp.split(/ /)
85
+ end
86
+
87
+ def groupids
88
+ Process.groups
89
+ end
90
+
91
+ def attrtest_gid(group)
92
+ obj = nil
93
+ #assert_nothing_raised {
94
+ # obj = Etc.getgrnam(group[:name])
95
+ #}
96
+ group.retrieve
97
+ old = gid(group[:name])
98
+ comp = newcomp("gidtest", group)
99
+
100
+ group[:gid] = old
101
+
102
+ trans = assert_events(comp, [], "group")
103
+
104
+ newgid = old
105
+ while true
106
+ newgid += 1
107
+
108
+ if newgid - old > 1000
109
+ $stderr.puts "Could not find extra test UID"
110
+ return
111
+ end
112
+ begin
113
+ Etc.getgrgid(newgid)
114
+ rescue ArgumentError => detail
115
+ break
116
+ end
117
+ end
118
+
119
+ assert_nothing_raised("Failed to change group id") {
120
+ group[:gid] = newgid
121
+ }
122
+
123
+ trans = assert_events(comp, [:group_modified], "group")
124
+
125
+ curgid = nil
126
+ assert_nothing_raised {
127
+ curgid = gid(group[:name])
128
+ }
129
+
130
+ assert_equal(newgid, curgid, "GID was not changed")
131
+
132
+ assert_rollback_events(trans, [:group_modified], "group")
133
+
134
+ assert_nothing_raised {
135
+ curgid = gid(group[:name])
136
+ }
137
+
138
+ assert_equal(old, curgid, "UID was not reverted")
139
+ end
140
+
141
+ # Disabled, because it was testing implementation, not function
142
+ def disabled_test_eachmethod
143
+ obj = Etc.getgrnam(groupnames()[0])
144
+
145
+ assert(obj, "Could not retrieve test group object")
146
+
147
+ Puppet::Type::Group.validstates.each { |name, state|
148
+ assert_nothing_raised {
149
+ method = state.infomethod
150
+ assert(method, "State %s has no infomethod" % name)
151
+ assert(obj.respond_to?(method),
152
+ "State %s has an invalid method %s" %
153
+ [name, method]
154
+ )
155
+ }
156
+
157
+ assert_nothing_raised {
158
+ method = state.infomethod
159
+ assert(method, "State %s has no infomethod" % name)
160
+ assert(obj.respond_to?(method),
161
+ "State %s has an invalid method %s" %
162
+ [name, method]
163
+ )
164
+ }
165
+ }
166
+ end
167
+
168
+ def test_owngroups
169
+ groupnames().each { |group|
170
+ gobj = nil
171
+ comp = nil
172
+ assert_nothing_raised {
173
+ gobj = Puppet::Type::Group.create(
174
+ :name => group,
175
+ :check => [:gid]
176
+ )
177
+
178
+ comp = newcomp("grouptest %s" % group, gobj)
179
+ }
180
+
181
+ trans = nil
182
+ assert_nothing_raised {
183
+ trans = comp.evaluate
184
+ }
185
+
186
+ assert(gobj.is(:gid), "Failed to retrieve gid")
187
+ }
188
+ end
189
+
190
+ # Test that we can query things
191
+ # It'd be nice if we could automate this...
192
+ def test_checking
193
+ require 'etc'
194
+
195
+ name = nil
196
+ assert_nothing_raised {
197
+ name = Etc.getgrgid(Process.gid).name
198
+ }
199
+ user = nil
200
+ assert_nothing_raised {
201
+ checks = Puppet::Type::Group.validstates
202
+ user = Puppet::Type::Group.create(
203
+ :name => name,
204
+ :check => checks
205
+ )
206
+ }
207
+
208
+ assert_nothing_raised {
209
+ user.retrieve
210
+ }
211
+
212
+ assert_equal(Process.gid, user.is(:gid), "Retrieved UID does not match")
213
+ end
214
+
215
+ if Process.uid == 0
216
+ def test_mkgroup
217
+ gobj = nil
218
+ comp = nil
219
+ name = "pptestgr"
220
+
221
+ os = Facter["operatingsystem"].value
222
+
223
+ #if os == "Darwin"
224
+ # obj = nil
225
+ # assert_nothing_raised {
226
+ # obj = Etc.getgrnam(name)
227
+ # }
228
+ # assert_equal(-2, obj.gid, "Darwin GID is not -2")
229
+ #else
230
+ #assert_raise(ArgumentError) {
231
+ # obj = Etc.getgrnam(name)
232
+ #}
233
+ #end
234
+ assert(missing?(name), "Group %s is still present" % name)
235
+
236
+ assert_nothing_raised {
237
+ gobj = Puppet::Type::Group.create(
238
+ :name => name
239
+ )
240
+
241
+ comp = newcomp("groupmaker %s" % name, gobj)
242
+ }
243
+
244
+ @@tmpgroups << name
245
+ trans = assert_events(comp, [:group_created], "group")
246
+
247
+ obj = nil
248
+ assert_nothing_raised {
249
+ obj = Etc.getgrnam(name)
250
+ }
251
+ assert(!missing?(name), "Group %s is missing" % name)
252
+
253
+ tests = Puppet::Type::Group.validstates
254
+
255
+ gobj.retrieve
256
+ tests.each { |test|
257
+ if self.respond_to?("attrtest_%s" % test)
258
+ self.send("attrtest_%s" % test, gobj)
259
+ else
260
+ #$stderr.puts "Not testing attr %s of group" % test
261
+ end
262
+ }
263
+
264
+ assert_rollback_events(trans, [:group_deleted], "group")
265
+
266
+ assert(missing?(name), "Group %s is still present" % name)
267
+ end
268
+ else
269
+ $stderr.puts "Not running as root; skipping group creation tests."
270
+ end
271
+ end
@@ -0,0 +1,205 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppettest'
8
+ require 'puppet'
9
+ require 'test/unit'
10
+ require 'facter'
11
+
12
+ $platform = Facter["operatingsystem"].value
13
+
14
+ unless Puppet::Type::Package.default
15
+ puts "No default package type for %s; skipping package tests" % $platform
16
+ else
17
+
18
+ class TestPackageSource < Test::Unit::TestCase
19
+ include TestPuppet
20
+ def test_filesource
21
+ system("touch /tmp/fakepackage")
22
+ assert_equal(
23
+ "/tmp/fakepackage",
24
+ Puppet::PackageSource.get("file:///tmp/fakepackage")
25
+ )
26
+ system("rm -f /tmp/fakepackage")
27
+ end
28
+ end
29
+
30
+ class TestPackages < Test::Unit::TestCase
31
+ include FileTesting
32
+ def setup
33
+ super
34
+ #@list = Puppet::Type::Package.getpkglist
35
+ Puppet::Type::Package.clear
36
+ end
37
+
38
+ # These are packages that we're sure will be installed
39
+ def installedpkgs
40
+ pkgs = nil
41
+ case $platform
42
+ when "SunOS"
43
+ pkgs = %w{SMCossh}
44
+ when "Linux"
45
+ case Facter["distro"].value
46
+ when "Debian": pkgs = %w{ssh openssl}
47
+ when "Fedora": pkgs = %w{openssh}
48
+ #when "RedHat": type = :rpm
49
+ else
50
+ Puppet.notice "No test package for %s" % $platform
51
+ return []
52
+ end
53
+ else
54
+ Puppet.notice "No test package for %s" % $platform
55
+ return []
56
+ end
57
+
58
+ return pkgs
59
+ end
60
+
61
+ def tstpkg
62
+ case $platform
63
+ #when "SunOS"
64
+ # type = "sunpkg"
65
+ when "Linux"
66
+ case Facter["distro"].value
67
+ when "Debian":
68
+ return %w{zec}
69
+ #when "RedHat": type = :rpm
70
+ when "Fedora":
71
+ return %w{wv}
72
+ else
73
+ Puppet.notice "No test packags for %s" % $platform
74
+ return nil
75
+ end
76
+ else
77
+ Puppet.notice "No test packags for %s" % $platform
78
+ return nil
79
+ end
80
+ end
81
+
82
+ def mkpkgcomp(pkg)
83
+ assert_nothing_raised {
84
+ pkg = Puppet::Type::Package.create(:name => pkg, :install => true)
85
+ }
86
+ assert_nothing_raised {
87
+ pkg.retrieve
88
+ }
89
+
90
+ comp = newcomp("package", pkg)
91
+
92
+ return comp
93
+ end
94
+
95
+ def test_retrievepkg
96
+ installedpkgs().each { |pkg|
97
+ obj = nil
98
+ assert_nothing_raised {
99
+ obj = Puppet::Type::Package.create(
100
+ :name => pkg
101
+ )
102
+ }
103
+
104
+ assert(obj, "could not create package")
105
+
106
+ assert_nothing_raised {
107
+ obj.retrieve
108
+ }
109
+
110
+ assert(obj.is(:install), "Could not retrieve package version")
111
+ }
112
+ end
113
+
114
+ def test_nosuchpkg
115
+ obj = nil
116
+ assert_nothing_raised {
117
+ obj = Puppet::Type::Package.create(
118
+ :name => "thispackagedoesnotexist"
119
+ )
120
+ }
121
+
122
+ assert_nothing_raised {
123
+ obj.retrieve
124
+ }
125
+
126
+ assert_equal(:notinstalled, obj.is(:install),
127
+ "Somehow retrieved unknown pkg's version")
128
+ end
129
+
130
+ def test_latestpkg
131
+ pkgs = tstpkg || return
132
+
133
+ pkgs.each { |name|
134
+ pkg = Puppet::Type::Package.create(:name => name)
135
+ assert_nothing_raised {
136
+ assert(pkg.latest, "Package did not return value for 'latest'")
137
+ }
138
+ }
139
+ end
140
+
141
+ unless Process.uid == 0
142
+ $stderr.puts "Run as root to perform package installation tests"
143
+ else
144
+ def test_installpkg
145
+ pkgs = tstpkg || return
146
+ pkgs.each { |pkg|
147
+ # we first set install to 'true', and make sure something gets
148
+ # installed
149
+ assert_nothing_raised {
150
+ pkg = Puppet::Type::Package.create(:name => pkg, :install => true)
151
+ }
152
+ assert_nothing_raised {
153
+ pkg.retrieve
154
+ }
155
+
156
+ if pkg.insync?
157
+ Puppet.notice "Test package %s is already installed; please choose a different package for testing" % pkg
158
+ next
159
+ end
160
+
161
+ comp = newcomp("package", pkg)
162
+
163
+ assert_events(comp, [:package_installed], "package")
164
+
165
+ # then uninstall it
166
+ assert_nothing_raised {
167
+ pkg[:install] = false
168
+ }
169
+
170
+
171
+ pkg.retrieve
172
+
173
+ assert(! pkg.insync?, "Package is insync")
174
+
175
+ assert_events(comp, [:package_removed], "package")
176
+
177
+ # and now set install to 'latest' and verify it installs
178
+ # FIXME this isn't really a very good test -- we should install
179
+ # a low version, and then upgrade using this. But, eh.
180
+ assert_nothing_raised {
181
+ pkg[:install] = "latest"
182
+ }
183
+
184
+ assert_events(comp, [:package_installed], "package")
185
+
186
+ pkg.retrieve
187
+ assert(pkg.insync?, "After install, package is not insync")
188
+
189
+ assert_nothing_raised {
190
+ pkg[:install] = false
191
+ }
192
+
193
+
194
+ pkg.retrieve
195
+
196
+ assert(! pkg.insync?, "Package is insync")
197
+
198
+ assert_events(comp, [:package_removed], "package")
199
+ }
200
+ end
201
+ end
202
+ end
203
+ end
204
+
205
+ # $Id: package.rb 742 2005-11-16 17:12:11Z luke $