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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../../../lib/puppettest'
require 'mocha'
class AptPackageProviderTest < PuppetTest::TestCase
confine "Apt package provider missing" =>
Puppet::Type.type(:package).provider(:apt).suitable?
def setup
super
@type = Puppet::Type.type(:package)
end
def test_install
pkg = @type.create :name => 'faff',
:provider => :apt,
:ensure => :present,
:source => "/tmp/faff.deb"
pkg.provider.expects(
:dpkgquery
).with(
'-W',
'--showformat',
'${Status} ${Package} ${Version}\n',
'faff'
).returns(
"deinstall ok config-files faff 1.2.3-1\n"
).times(1)
pkg.provider.expects(
:aptget
).with(
'-q',
'-y',
'-o',
'DPkg::Options::=--force-confold',
:install,
'faff'
).returns(0)
pkg.evaluate.each { |state| state.transaction = self; state.forward }
end
def test_purge
pkg = @type.create :name => 'faff', :provider => :apt, :ensure => :purged
pkg.provider.expects(
:dpkgquery
).with(
'-W',
'--showformat',
'${Status} ${Package} ${Version}\n',
'faff'
).returns(
"install ok installed faff 1.2.3-1\n"
).times(1)
pkg.provider.expects(
:aptget
).with(
'-y',
'-q',
'remove',
'--purge',
'faff'
).returns(0)
pkg.provider.expects(
:dpkg
).with(
'--purge',
'faff'
).returns(0)
pkg.evaluate.each { |state| state.transaction = self; state.forward }
end
def test_dont_try_to_purge_if_already_purged
pkg = @type.create :name => 'faff', :provider => :apt, :ensure => :purged
pkg.provider.expects(
:dpkgquery
).with(
'-W',
'--showformat',
'${Status} ${Package} ${Version}\n',
'faff'
).raises(
Puppet::ExecutionFailure,
"No packages found matching faff.\n"
).times(1)
pkg.provider.expects(
:aptget
).never
pkg.evaluate.each { |state| state.transaction = self; state.forward }
end
def test_dont_try_to_purge_if_already_purged_and_we_want_it_absent
pkg = @type.create :name => 'faff', :provider => :apt, :ensure => :absent
pkg.provider.expects(
:dpkgquery
).with(
'-W',
'--showformat',
'${Status} ${Package} ${Version}\n',
'faff'
).raises(
Puppet::ExecutionFailure,
"No packages found matching faff.\n"
).times(1)
pkg.provider.expects(
:aptget
).never
pkg.evaluate.each { |state| state.transaction = self; state.forward }
end
def test_make_sure_we_purge_if_package_still_has_conffiles
pkg = @type.create :name => 'faff', :provider => :apt, :ensure => :purged
pkg.provider.expects(
:dpkgquery
).with(
'-W',
'--showformat',
'${Status} ${Package} ${Version}\n',
'faff'
).returns(
"deinstall ok config-files faff 1.2.3-1\n"
).times(1)
pkg.provider.expects(
:aptget
).with(
'-y',
'-q',
'remove',
'--purge',
'faff'
).returns(0)
pkg.provider.expects(
:dpkg
).with(
'--purge',
'faff'
).returns(0)
pkg.evaluate.each { |state| state.transaction = self; state.forward }
end
def test_latest
pkg = @type.create :name => 'base-files', :provider => :apt
assert(pkg, "did not create pkg")
status = pkg.provider.query
assert(status, "base-files is not installed")
assert(status[:ensure] != :absent, "base-files is not installed")
latest = nil
assert_nothing_raised("Could not call latest") do
latest = pkg.provider.latest
end
assert(latest, "Could not get latest value from apt")
end
end
# $Id$
|