wright 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/NEWS.md +7 -0
- data/README.md +60 -54
- data/lib/wright/cli.rb +44 -18
- data/lib/wright/dry_run.rb +7 -0
- data/lib/wright/provider/directory.rb +26 -30
- data/lib/wright/provider/file.rb +34 -34
- data/lib/wright/provider/group/darwin_directory_service.rb +8 -7
- data/lib/wright/provider/group/gnu_passwd.rb +5 -5
- data/lib/wright/provider/group.rb +53 -36
- data/lib/wright/provider/package/apt.rb +32 -8
- data/lib/wright/provider/package/homebrew.rb +6 -5
- data/lib/wright/provider/package/yum.rb +39 -0
- data/lib/wright/provider/package.rb +30 -16
- data/lib/wright/provider/symlink.rb +32 -33
- data/lib/wright/provider/user/darwin_directory_service.rb +14 -17
- data/lib/wright/provider/user/gnu_passwd.rb +20 -21
- data/lib/wright/provider/user.rb +58 -41
- data/lib/wright/resource/group.rb +1 -0
- data/lib/wright/resource/package.rb +16 -3
- data/lib/wright/resource/user.rb +1 -0
- data/lib/wright/resource.rb +4 -2
- data/lib/wright/util/user.rb +34 -2
- data/lib/wright/version.rb +1 -1
- data/man/wright.1 +15 -11
- data/spec/cli_spec.rb +18 -0
- data/spec/provider/group/darwin_directory_service_spec.rb +76 -220
- data/spec/provider/group/gnu_passwd_spec.rb +36 -189
- data/spec/provider/group_spec.rb +180 -27
- data/spec/provider/package/apt/apt-cache_policy_dmenu.return +1 -0
- data/spec/provider/package/apt/apt-cache_policy_dmenu.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_policy_dmenu.stdout +4 -0
- data/spec/provider/package/apt/apt-cache_policy_htop.stdout +3 -3
- data/spec/provider/package/apt/apt-cache_policy_linux-image-3.2.0-4-amd64.return +1 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image-3.2.0-4-amd64.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image-3.2.0-4-amd64.stdout +6 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image.return +1 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image.stdout +4 -0
- data/spec/provider/package/apt/apt-cache_policy_suckless-tools.return +1 -0
- data/spec/provider/package/apt/apt-cache_policy_suckless-tools.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_policy_suckless-tools.stdout +6 -0
- data/spec/provider/package/apt/apt-cache_showpkg_dmenu.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_dmenu.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_dmenu.stdout +9 -0
- data/spec/provider/package/apt/apt-cache_showpkg_htop.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_htop.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_htop.stdout +20 -0
- data/spec/provider/package/apt/apt-cache_showpkg_linux-image.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_linux-image.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_linux-image.stdout +11 -0
- data/spec/provider/package/apt/apt-cache_showpkg_not-a-real-package.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_not-a-real-package.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_not-a-real-package.stdout +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_suckless-tools.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_suckless-tools.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_suckless-tools.stdout +26 -0
- data/spec/provider/package/apt/apt-get_--purge_remove_-qy_abcde.return +1 -0
- data/spec/provider/package/apt/apt-get_--purge_remove_-qy_abcde.stderr +0 -0
- data/spec/provider/package/apt/apt-get_--purge_remove_-qy_abcde.stdout +15 -0
- data/spec/provider/package/apt_spec.rb +82 -14
- data/spec/provider/package/homebrew/brew_install_--with-default-names_gnu-units.return +1 -0
- data/spec/provider/package/homebrew/brew_install_--with-default-names_gnu-units.stderr +0 -0
- data/spec/provider/package/homebrew/brew_install_--with-default-names_gnu-units.stdout +7 -0
- data/spec/provider/package/homebrew/brew_uninstall_--force_lame.return +1 -0
- data/spec/provider/package/homebrew/brew_uninstall_--force_lame.stderr +0 -0
- data/spec/provider/package/homebrew/brew_uninstall_--force_lame.stdout +1 -0
- data/spec/provider/package/homebrew_spec.rb +33 -6
- data/spec/provider/package/yum/rpm_-q_httpd.return +1 -0
- data/spec/provider/package/yum/rpm_-q_httpd.stderr +0 -0
- data/spec/provider/package/yum/rpm_-q_httpd.stdout +1 -0
- data/spec/provider/package/yum/rpm_-q_zsh.return +1 -0
- data/spec/provider/package/yum/rpm_-q_zsh.stderr +0 -0
- data/spec/provider/package/yum/rpm_-q_zsh.stdout +1 -0
- data/spec/provider/package/yum/yum_install_-y_mc-4.8.7-8.el7.return +1 -0
- data/spec/provider/package/yum/yum_install_-y_mc-4.8.7-8.el7.stderr +0 -0
- data/spec/provider/package/yum/yum_install_-y_mc-4.8.7-8.el7.stdout +37 -0
- data/spec/provider/package/yum/yum_install_-y_nano.return +1 -0
- data/spec/provider/package/yum/yum_install_-y_nano.stderr +0 -0
- data/spec/provider/package/yum/yum_install_-y_nano.stdout +36 -0
- data/spec/provider/package/yum/yum_install_-y_not-a-real-package.return +1 -0
- data/spec/provider/package/yum/yum_install_-y_not-a-real-package.stderr +1 -0
- data/spec/provider/package/yum/yum_install_-y_not-a-real-package.stdout +6 -0
- data/spec/provider/package/yum/yum_install_with_options.return +1 -0
- data/spec/provider/package/yum/yum_install_with_options.stderr +0 -0
- data/spec/provider/package/yum/yum_install_with_options.stdout +53 -0
- data/spec/provider/package/yum/yum_remove_-y_screen.return +1 -0
- data/spec/provider/package/yum/yum_remove_-y_screen.stderr +0 -0
- data/spec/provider/package/yum/yum_remove_-y_screen.stdout +31 -0
- data/spec/provider/package/yum/yum_remove_with_options.return +1 -0
- data/spec/provider/package/yum/yum_remove_with_options.stderr +0 -0
- data/spec/provider/package/yum/yum_remove_with_options.stdout +30 -0
- data/spec/provider/package/yum_spec.rb +130 -0
- data/spec/provider/user/darwin_directory_service_spec.rb +12 -10
- data/spec/provider/user/gnu_passwd_spec.rb +9 -9
- data/spec/provider/user_spec.rb +26 -18
- data/spec/resource/package_spec.rb +8 -0
- data/spec/resource_spec.rb +17 -9
- metadata +153 -16
data/spec/provider/group_spec.rb
CHANGED
|
@@ -6,18 +6,20 @@ require 'wright/provider'
|
|
|
6
6
|
require 'wright/provider/group'
|
|
7
7
|
|
|
8
8
|
describe Wright::Provider::Group do
|
|
9
|
-
before(:each)
|
|
10
|
-
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
after(:each) do
|
|
14
|
-
Wright::Provider::Group.send(:private, :uptodate?)
|
|
15
|
-
end
|
|
9
|
+
before(:each) { @resource = OpenStruct.new(name: 'foo') }
|
|
10
|
+
after(:each) { FakeEtc.clear_groups }
|
|
16
11
|
|
|
17
12
|
describe '#uptodate?' do
|
|
13
|
+
before(:each) do
|
|
14
|
+
Wright::Provider::Group.send(:public, :uptodate?)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
after(:each) do
|
|
18
|
+
Wright::Provider::Group.send(:private, :uptodate?)
|
|
19
|
+
end
|
|
20
|
+
|
|
18
21
|
it 'should return the correct status' do
|
|
19
|
-
|
|
20
|
-
provider = Wright::Provider::Group.new(resource)
|
|
22
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
21
23
|
|
|
22
24
|
FakeEtc.add_groups('foo' => { gid: 42, mem: %w(user1 user2) })
|
|
23
25
|
FakeEtc do
|
|
@@ -33,9 +35,8 @@ describe Wright::Provider::Group do
|
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
it 'should return the correct status when given a specific gid' do
|
|
36
|
-
gid = 52
|
|
37
|
-
|
|
38
|
-
provider = Wright::Provider::Group.new(resource)
|
|
38
|
+
@resource.gid = 52
|
|
39
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
39
40
|
|
|
40
41
|
FakeEtc.add_groups('foo' => { gid: 42, mem: [] })
|
|
41
42
|
FakeEtc do
|
|
@@ -44,7 +45,7 @@ describe Wright::Provider::Group do
|
|
|
44
45
|
end
|
|
45
46
|
|
|
46
47
|
FakeEtc.clear_groups
|
|
47
|
-
FakeEtc.add_groups('foo' => { gid: gid, mem: [] })
|
|
48
|
+
FakeEtc.add_groups('foo' => { gid: @resource.gid, mem: [] })
|
|
48
49
|
FakeEtc do
|
|
49
50
|
provider.uptodate?(:create).must_equal true
|
|
50
51
|
provider.uptodate?(:remove).must_equal false
|
|
@@ -52,9 +53,8 @@ describe Wright::Provider::Group do
|
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
it 'should return the correct status when given a specific member list' do
|
|
55
|
-
members = %w(user1 user2)
|
|
56
|
-
|
|
57
|
-
provider = Wright::Provider::Group.new(resource)
|
|
56
|
+
@resource.members = %w(user1 user2)
|
|
57
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
58
58
|
|
|
59
59
|
FakeEtc.add_groups('foo' => { gid: 42, mem: [] })
|
|
60
60
|
FakeEtc do
|
|
@@ -63,7 +63,7 @@ describe Wright::Provider::Group do
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
FakeEtc.clear_groups
|
|
66
|
-
FakeEtc.add_groups('foo' => { gid: 42, mem: members })
|
|
66
|
+
FakeEtc.add_groups('foo' => { gid: 42, mem: @resource.members })
|
|
67
67
|
FakeEtc do
|
|
68
68
|
provider.uptodate?(:create).must_equal true
|
|
69
69
|
provider.uptodate?(:remove).must_equal false
|
|
@@ -71,17 +71,145 @@ describe Wright::Provider::Group do
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
it 'should raise exceptions for invalid actions' do
|
|
74
|
-
|
|
75
|
-
provider = Wright::Provider::Group.new(resource)
|
|
74
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
76
75
|
e = -> { provider.uptodate?(:foobarbaz) }.must_raise ArgumentError
|
|
77
76
|
e.message.must_equal "invalid action 'foobarbaz'"
|
|
78
77
|
end
|
|
79
78
|
end
|
|
80
79
|
|
|
80
|
+
describe '#create' do
|
|
81
|
+
before(:each) do
|
|
82
|
+
group = @resource.name
|
|
83
|
+
@create_message = "INFO: create group: '#{group}'\n"
|
|
84
|
+
@create_message_dry = "INFO: (would) create group: '#{group}'\n"
|
|
85
|
+
@create_message_debug = "DEBUG: group already created: '#{group}'\n"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it 'should set the update status when the group is up-to-date' do
|
|
89
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
90
|
+
|
|
91
|
+
FakeEtc.add_groups('foo' => {})
|
|
92
|
+
FakeEtc do
|
|
93
|
+
lambda do
|
|
94
|
+
reset_logger
|
|
95
|
+
provider.create
|
|
96
|
+
provider.updated?.must_equal false
|
|
97
|
+
end.must_output @create_message_debug
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'should set the update status when the group has to be created' do
|
|
102
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
103
|
+
mock_provider = Minitest::Mock.new
|
|
104
|
+
|
|
105
|
+
mock_provider.expect(:create_group, nil)
|
|
106
|
+
provider.stub :create_group, -> { mock_provider.create_group } do
|
|
107
|
+
FakeEtc do
|
|
108
|
+
lambda do
|
|
109
|
+
reset_logger
|
|
110
|
+
provider.create
|
|
111
|
+
provider.updated?.must_equal true
|
|
112
|
+
end.must_output @create_message
|
|
113
|
+
end
|
|
114
|
+
mock_provider.verify
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it 'should set the update status when the group has to be updated' do
|
|
119
|
+
@resource.gid = 123
|
|
120
|
+
@resource.members = %w(johndoe janedoe)
|
|
121
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
122
|
+
mock_provider = Minitest::Mock.new
|
|
123
|
+
|
|
124
|
+
mock_provider.expect(:set_gid, nil)
|
|
125
|
+
mock_provider.expect(:set_members, nil)
|
|
126
|
+
provider.stub :set_gid, -> { mock_provider.set_gid } do
|
|
127
|
+
provider.stub :set_members, -> { mock_provider.set_members } do
|
|
128
|
+
FakeEtc.add_groups(@resource.name => { mem: [] })
|
|
129
|
+
FakeEtc do
|
|
130
|
+
lambda do
|
|
131
|
+
reset_logger
|
|
132
|
+
provider.create
|
|
133
|
+
provider.updated?.must_equal true
|
|
134
|
+
end.must_output @create_message
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
mock_provider.verify
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it 'should set the update status in dry-run mode' do
|
|
142
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
143
|
+
|
|
144
|
+
Wright.dry_run do
|
|
145
|
+
FakeEtc do
|
|
146
|
+
lambda do
|
|
147
|
+
reset_logger
|
|
148
|
+
provider.create
|
|
149
|
+
provider.updated?.must_equal true
|
|
150
|
+
end.must_output @create_message_dry
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
describe '#remove' do
|
|
157
|
+
before(:each) do
|
|
158
|
+
group = @resource.name
|
|
159
|
+
@remove_message = "INFO: remove group: '#{group}'\n"
|
|
160
|
+
@remove_message_dry = "INFO: (would) remove group: '#{group}'\n"
|
|
161
|
+
@remove_message_debug = "DEBUG: group already removed: '#{group}'\n"
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
it 'should set the update status when the group is already removed' do
|
|
165
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
166
|
+
|
|
167
|
+
FakeEtc do
|
|
168
|
+
lambda do
|
|
169
|
+
reset_logger
|
|
170
|
+
provider.remove
|
|
171
|
+
provider.updated?.must_equal false
|
|
172
|
+
end.must_output @remove_message_debug
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
it 'should set the update status when the group has to be removed' do
|
|
177
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
178
|
+
mock_provider = Minitest::Mock.new
|
|
179
|
+
|
|
180
|
+
mock_provider.expect(:remove_group, nil)
|
|
181
|
+
provider.stub :remove_group, -> { mock_provider.remove_group } do
|
|
182
|
+
FakeEtc.add_groups(@resource.name => {})
|
|
183
|
+
FakeEtc do
|
|
184
|
+
lambda do
|
|
185
|
+
reset_logger
|
|
186
|
+
provider.remove
|
|
187
|
+
provider.updated?.must_equal true
|
|
188
|
+
end.must_output @remove_message
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
mock_provider.verify
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it 'should set the update status in dry-run mode' do
|
|
195
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
196
|
+
|
|
197
|
+
Wright.dry_run do
|
|
198
|
+
FakeEtc.add_groups(@resource.name => {})
|
|
199
|
+
FakeEtc do
|
|
200
|
+
lambda do
|
|
201
|
+
reset_logger
|
|
202
|
+
provider.remove
|
|
203
|
+
provider.updated?.must_equal true
|
|
204
|
+
end.must_output @remove_message_dry
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
81
210
|
describe '#add_member' do
|
|
82
211
|
it 'should raise an exception' do
|
|
83
|
-
|
|
84
|
-
provider = Wright::Provider::Group.new(resource)
|
|
212
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
85
213
|
lambda do
|
|
86
214
|
provider.send(:add_member, 'member', 'group')
|
|
87
215
|
end.must_raise NotImplementedError
|
|
@@ -90,8 +218,7 @@ describe Wright::Provider::Group do
|
|
|
90
218
|
|
|
91
219
|
describe '#remove_member' do
|
|
92
220
|
it 'should raise an exception' do
|
|
93
|
-
|
|
94
|
-
provider = Wright::Provider::Group.new(resource)
|
|
221
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
95
222
|
lambda do
|
|
96
223
|
provider.send(:remove_member, 'member', 'group')
|
|
97
224
|
end.must_raise NotImplementedError
|
|
@@ -100,12 +227,11 @@ describe Wright::Provider::Group do
|
|
|
100
227
|
|
|
101
228
|
describe '#set_members' do
|
|
102
229
|
it 'should use add_member and remove_member to update the member list' do
|
|
103
|
-
group_name =
|
|
230
|
+
group_name = @resource.name
|
|
104
231
|
current_members = %w(user1 user2 user3)
|
|
105
232
|
target_members = %w(user3 user4 user5)
|
|
106
|
-
resource =
|
|
107
|
-
|
|
108
|
-
provider = Wright::Provider::Group.new(resource)
|
|
233
|
+
@resource.members = target_members
|
|
234
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
109
235
|
Wright::Provider::Group.send(:public, :set_members)
|
|
110
236
|
|
|
111
237
|
mock_provider = Minitest::Mock.new
|
|
@@ -129,4 +255,31 @@ describe Wright::Provider::Group do
|
|
|
129
255
|
Wright::Provider::Group.send(:private, :set_members)
|
|
130
256
|
end
|
|
131
257
|
end
|
|
258
|
+
|
|
259
|
+
describe '#create_group' do
|
|
260
|
+
it 'should raise an exception' do
|
|
261
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
262
|
+
lambda do
|
|
263
|
+
provider.send(:create_group)
|
|
264
|
+
end.must_raise NotImplementedError
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
describe '#remove_group' do
|
|
269
|
+
it 'should raise an exception' do
|
|
270
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
271
|
+
lambda do
|
|
272
|
+
provider.send(:remove_group)
|
|
273
|
+
end.must_raise NotImplementedError
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
describe '#set_gid' do
|
|
278
|
+
it 'should raise an exception' do
|
|
279
|
+
provider = Wright::Provider::Group.new(@resource)
|
|
280
|
+
lambda do
|
|
281
|
+
provider.send(:set_gid)
|
|
282
|
+
end.must_raise NotImplementedError
|
|
283
|
+
end
|
|
284
|
+
end
|
|
132
285
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Package: htop
|
|
2
|
+
Versions:
|
|
3
|
+
1.0.3-1 (/var/lib/apt/lists/debian.inode.at_debian_dists_jessie_main_binary-amd64_Packages) (/var/lib/dpkg/status)
|
|
4
|
+
Description Language:
|
|
5
|
+
File: /var/lib/apt/lists/debian.inode.at_debian_dists_jessie_main_binary-amd64_Packages
|
|
6
|
+
MD5: 8eb5aa19b3c92a975dc78e2165f6688d
|
|
7
|
+
Description Language: en
|
|
8
|
+
File: /var/lib/apt/lists/debian.inode.at_debian_dists_jessie_main_i18n_Translation-en
|
|
9
|
+
MD5: 8eb5aa19b3c92a975dc78e2165f6688d
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Reverse Depends:
|
|
13
|
+
util-vserver,htop
|
|
14
|
+
lava-dispatcher,htop
|
|
15
|
+
education-common,htop
|
|
16
|
+
Dependencies:
|
|
17
|
+
1.0.3-1 - libc6 (2 2.15) libncursesw5 (2 5.6+20070908) libtinfo5 (0 (null)) strace (0 (null)) ltrace (0 (null))
|
|
18
|
+
Provides:
|
|
19
|
+
1.0.3-1 -
|
|
20
|
+
Reverse Provides:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
N: Unable to locate package not-a-real-package
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Package: suckless-tools
|
|
2
|
+
Versions:
|
|
3
|
+
40-1 (/var/lib/apt/lists/debian.inode.at_debian_dists_jessie_main_binary-amd64_Packages)
|
|
4
|
+
Description Language:
|
|
5
|
+
File: /var/lib/apt/lists/debian.inode.at_debian_dists_jessie_main_binary-amd64_Packages
|
|
6
|
+
MD5: d19175bb7582a6f06fe2a6daa5910d10
|
|
7
|
+
Description Language: en
|
|
8
|
+
File: /var/lib/apt/lists/debian.inode.at_debian_dists_jessie_main_i18n_Translation-en
|
|
9
|
+
MD5: d19175bb7582a6f06fe2a6daa5910d10
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Reverse Depends:
|
|
13
|
+
wmii,suckless-tools
|
|
14
|
+
uzbl,suckless-tools
|
|
15
|
+
surf,suckless-tools
|
|
16
|
+
spectrwm,suckless-tools
|
|
17
|
+
ncurses-term,suckless-tools 39
|
|
18
|
+
ncurses-term,suckless-tools 39
|
|
19
|
+
i3,suckless-tools
|
|
20
|
+
herbstluftwm,suckless-tools
|
|
21
|
+
dwm,suckless-tools
|
|
22
|
+
Dependencies:
|
|
23
|
+
40-1 - libc6 (2 2.14) libfontconfig1 (2 2.11) libfreetype6 (2 2.2.1) libx11-6 (0 (null)) libxext6 (0 (null)) libxft2 (4 2.1.1) libxinerama1 (0 (null)) libxrender1 (0 (null)) libxss1 (0 (null)) zlib1g (2 1:1.1.4) dwm (0 (null)) stterm (0 (null)) surf (0 (null))
|
|
24
|
+
Provides:
|
|
25
|
+
40-1 - xssstate wmname tabbed swarp ssid sselp sprop slock lsx lsw dmenu
|
|
26
|
+
Reverse Provides:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Reading package lists...
|
|
2
|
+
Building dependency tree...
|
|
3
|
+
Reading state information...
|
|
4
|
+
The following packages were automatically installed and are no longer required:
|
|
5
|
+
cd-discid cdparanoia libmusicbrainz-discid-perl
|
|
6
|
+
libwebservice-musicbrainz-perl vorbis-tools
|
|
7
|
+
Use 'apt-get autoremove' to remove them.
|
|
8
|
+
The following packages will be REMOVED:
|
|
9
|
+
abcde*
|
|
10
|
+
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
|
|
11
|
+
After this operation, 295 kB disk space will be freed.
|
|
12
|
+
(Reading database ...
|
|
13
|
+
Removing abcde (2.6-2) ...
|
|
14
|
+
Purging configuration files for abcde (2.6-2) ...
|
|
15
|
+
Processing triggers for man-db (2.7.0.2-5) ...
|
|
@@ -3,17 +3,21 @@ require_relative '../../spec_helper'
|
|
|
3
3
|
require 'wright/provider/package/apt'
|
|
4
4
|
|
|
5
5
|
describe Wright::Provider::Package::Apt do
|
|
6
|
-
def apt_cache(pkg_name)
|
|
7
|
-
['apt-cache',
|
|
6
|
+
def apt_cache(cmd, pkg_name)
|
|
7
|
+
['apt-cache', cmd.to_s, pkg_name]
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def apt_get(action, pkg_name,
|
|
11
|
-
version =
|
|
12
|
-
|
|
10
|
+
def apt_get(action, pkg_name, args = {})
|
|
11
|
+
version = args[:version].nil? ? '' : "=#{args[:version]}"
|
|
12
|
+
options = args[:options]
|
|
13
|
+
['apt-get', *options, action.to_s, '-qy', pkg_name + version]
|
|
13
14
|
end
|
|
14
15
|
|
|
15
|
-
def package_provider(pkg_name,
|
|
16
|
-
|
|
16
|
+
def package_provider(pkg_name, args = {})
|
|
17
|
+
properties = { name: pkg_name,
|
|
18
|
+
version: args[:version],
|
|
19
|
+
options: args[:options] }
|
|
20
|
+
pkg_resource = OpenStruct.new(properties)
|
|
17
21
|
Wright::Provider::Package::Apt.new(pkg_resource)
|
|
18
22
|
end
|
|
19
23
|
|
|
@@ -28,7 +32,7 @@ describe Wright::Provider::Package::Apt do
|
|
|
28
32
|
pkg_name = 'abcde'
|
|
29
33
|
pkg_versions = ['2.5.3-1']
|
|
30
34
|
pkg_provider = package_provider(pkg_name)
|
|
31
|
-
apt_cache_cmd = apt_cache(pkg_name)
|
|
35
|
+
apt_cache_cmd = apt_cache(:policy, pkg_name)
|
|
32
36
|
|
|
33
37
|
@fake_capture3.expect(apt_cache_cmd)
|
|
34
38
|
@fake_capture3.stub do
|
|
@@ -40,9 +44,47 @@ describe Wright::Provider::Package::Apt do
|
|
|
40
44
|
pkg_name = 'htop'
|
|
41
45
|
pkg_versions = []
|
|
42
46
|
pkg_provider = package_provider(pkg_name)
|
|
43
|
-
|
|
47
|
+
apt_cache_policy_cmd = apt_cache(:policy, pkg_name)
|
|
48
|
+
apt_cache_showpkg_cmd = apt_cache(:showpkg, pkg_name)
|
|
44
49
|
|
|
45
|
-
@fake_capture3.expect(
|
|
50
|
+
@fake_capture3.expect(apt_cache_policy_cmd)
|
|
51
|
+
@fake_capture3.expect(apt_cache_showpkg_cmd)
|
|
52
|
+
@fake_capture3.stub do
|
|
53
|
+
pkg_provider.installed_versions.must_equal pkg_versions
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'should handle virtual packages for which providers are installed' do
|
|
58
|
+
pkg_name = 'linux-image'
|
|
59
|
+
provider_name = 'linux-image-3.2.0-4-amd64'
|
|
60
|
+
pkg_versions = ['virtual']
|
|
61
|
+
pkg_provider = package_provider(pkg_name)
|
|
62
|
+
apt_cache_policy_cmd = apt_cache(:policy, pkg_name)
|
|
63
|
+
apt_cache_showpkg_cmd = apt_cache(:showpkg, pkg_name)
|
|
64
|
+
apt_cache_policy_provider_cmd = apt_cache(:policy, provider_name)
|
|
65
|
+
|
|
66
|
+
@fake_capture3.expect(apt_cache_policy_cmd)
|
|
67
|
+
@fake_capture3.expect(apt_cache_showpkg_cmd)
|
|
68
|
+
@fake_capture3.expect(apt_cache_policy_provider_cmd)
|
|
69
|
+
@fake_capture3.stub do
|
|
70
|
+
pkg_provider.installed_versions.must_equal pkg_versions
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'should handle virtual packages for which no providers are installed' do
|
|
75
|
+
pkg_name = 'dmenu'
|
|
76
|
+
provider_name = 'suckless-tools'
|
|
77
|
+
pkg_versions = []
|
|
78
|
+
pkg_provider = package_provider(pkg_name)
|
|
79
|
+
apt_cache_policy_cmd = apt_cache(:policy, pkg_name)
|
|
80
|
+
apt_cache_showpkg_cmd = apt_cache(:showpkg, pkg_name)
|
|
81
|
+
apt_cache_policy_provider_cmd = apt_cache(:policy, provider_name)
|
|
82
|
+
apt_cache_showpkg_provider_cmd = apt_cache(:showpkg, provider_name)
|
|
83
|
+
|
|
84
|
+
@fake_capture3.expect(apt_cache_policy_cmd)
|
|
85
|
+
@fake_capture3.expect(apt_cache_showpkg_cmd)
|
|
86
|
+
@fake_capture3.expect(apt_cache_policy_provider_cmd)
|
|
87
|
+
@fake_capture3.expect(apt_cache_showpkg_provider_cmd)
|
|
46
88
|
@fake_capture3.stub do
|
|
47
89
|
pkg_provider.installed_versions.must_equal pkg_versions
|
|
48
90
|
end
|
|
@@ -52,9 +94,11 @@ describe Wright::Provider::Package::Apt do
|
|
|
52
94
|
pkg_name = 'not-a-real-package'
|
|
53
95
|
pkg_versions = []
|
|
54
96
|
pkg_provider = package_provider(pkg_name)
|
|
55
|
-
|
|
97
|
+
apt_cache_policy_cmd = apt_cache(:policy, pkg_name)
|
|
98
|
+
apt_cache_showpkg_cmd = apt_cache(:showpkg, pkg_name)
|
|
56
99
|
|
|
57
|
-
@fake_capture3.expect(
|
|
100
|
+
@fake_capture3.expect(apt_cache_policy_cmd)
|
|
101
|
+
@fake_capture3.expect(apt_cache_showpkg_cmd)
|
|
58
102
|
@fake_capture3.stub do
|
|
59
103
|
pkg_provider.installed_versions.must_equal pkg_versions
|
|
60
104
|
end
|
|
@@ -76,8 +120,8 @@ describe Wright::Provider::Package::Apt do
|
|
|
76
120
|
it 'should install specific package versions' do
|
|
77
121
|
pkg_name = 'abcde'
|
|
78
122
|
pkg_version = '2.5.4-1'
|
|
79
|
-
pkg_provider = package_provider(pkg_name, pkg_version)
|
|
80
|
-
apt_cmd = apt_get(:install, pkg_name, pkg_version)
|
|
123
|
+
pkg_provider = package_provider(pkg_name, version: pkg_version)
|
|
124
|
+
apt_cmd = apt_get(:install, pkg_name, version: pkg_version)
|
|
81
125
|
|
|
82
126
|
@fake_capture3.expect(apt_cmd)
|
|
83
127
|
@fake_capture3.stub do
|
|
@@ -85,6 +129,18 @@ describe Wright::Provider::Package::Apt do
|
|
|
85
129
|
end
|
|
86
130
|
end
|
|
87
131
|
|
|
132
|
+
it 'should pass options to the package manager' do
|
|
133
|
+
pkg_name = 'htop'
|
|
134
|
+
pkg_options = ['--no-install-recommends']
|
|
135
|
+
pkg_provider = package_provider(pkg_name, options: pkg_options)
|
|
136
|
+
apt_cmd = apt_get(:install, pkg_name, options: pkg_options)
|
|
137
|
+
|
|
138
|
+
@fake_capture3.expect(apt_cmd, 'apt-get_install_-qy_htop')
|
|
139
|
+
@fake_capture3.stub do
|
|
140
|
+
pkg_provider.send(:install_package)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
88
144
|
it 'should raise exceptions for unknown packages' do
|
|
89
145
|
pkg_name = 'not-a-real-package'
|
|
90
146
|
pkg_provider = package_provider(pkg_name)
|
|
@@ -111,5 +167,17 @@ describe Wright::Provider::Package::Apt do
|
|
|
111
167
|
pkg_provider.send(:remove_package)
|
|
112
168
|
end
|
|
113
169
|
end
|
|
170
|
+
|
|
171
|
+
it 'should pass options to the package manager' do
|
|
172
|
+
pkg_name = 'abcde'
|
|
173
|
+
pkg_options = ['--purge']
|
|
174
|
+
pkg_provider = package_provider(pkg_name, options: pkg_options)
|
|
175
|
+
apt_cmd = apt_get(:remove, pkg_name, options: pkg_options)
|
|
176
|
+
|
|
177
|
+
@fake_capture3.expect(apt_cmd)
|
|
178
|
+
@fake_capture3.stub do
|
|
179
|
+
pkg_provider.send(:remove_package)
|
|
180
|
+
end
|
|
181
|
+
end
|
|
114
182
|
end
|
|
115
183
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
==> Downloading http://ftpmirror.gnu.org/units/units-2.02.tar.gz
|
|
2
|
+
Already downloaded: /Library/Caches/Homebrew/gnu-units-2.02.tar.gz
|
|
3
|
+
==> Patching
|
|
4
|
+
patching file definitions.units
|
|
5
|
+
==> ./configure --prefix=/usr/local/Cellar/gnu-units/2.02
|
|
6
|
+
==> make install
|
|
7
|
+
🍺 /usr/local/Cellar/gnu-units/2.02: 12 files, 624K, built in 11 seconds
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Uninstalling lame... (25 files, 2.1M)
|