wright 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -3,13 +3,16 @@ require_relative '../../spec_helper'
|
|
3
3
|
require 'wright/provider/package/homebrew'
|
4
4
|
|
5
5
|
describe Wright::Provider::Package::Homebrew do
|
6
|
-
def brew(action, pkg_name)
|
7
|
-
|
8
|
-
['brew', *options, pkg_name]
|
6
|
+
def brew(action, pkg_name, args = {})
|
7
|
+
action_args = action == :info ? ['info', '--json=v1'] : [action.to_s]
|
8
|
+
['brew', *action_args, *args[:options], pkg_name]
|
9
9
|
end
|
10
10
|
|
11
|
-
def package_provider(pkg_name,
|
12
|
-
|
11
|
+
def package_provider(pkg_name, args = {})
|
12
|
+
properties = { name: pkg_name,
|
13
|
+
version: args[:version],
|
14
|
+
options: args[:options] }
|
15
|
+
pkg_resource = OpenStruct.new(properties)
|
13
16
|
Wright::Provider::Package::Homebrew.new(pkg_resource)
|
14
17
|
end
|
15
18
|
|
@@ -71,7 +74,7 @@ describe Wright::Provider::Package::Homebrew do
|
|
71
74
|
it 'should output a warning when specifying a package version' do
|
72
75
|
pkg_name = 'cd-discid'
|
73
76
|
pkg_version = '1.1'
|
74
|
-
pkg_provider = package_provider(pkg_name, pkg_version)
|
77
|
+
pkg_provider = package_provider(pkg_name, version: pkg_version)
|
75
78
|
brew_install_cmd = brew(:install, pkg_name)
|
76
79
|
version_warning =
|
77
80
|
"WARN: ignoring package version: '#{pkg_name} (#{pkg_version})'\n"
|
@@ -85,6 +88,18 @@ describe Wright::Provider::Package::Homebrew do
|
|
85
88
|
end
|
86
89
|
end
|
87
90
|
|
91
|
+
it 'should pass options to the package manager' do
|
92
|
+
pkg_name = 'gnu-units'
|
93
|
+
pkg_options = '--with-default-names'
|
94
|
+
pkg_provider = package_provider(pkg_name, options: pkg_options)
|
95
|
+
brew_install_cmd = brew(:install, pkg_name, options: pkg_options)
|
96
|
+
|
97
|
+
@fake_capture3.expect(brew_install_cmd)
|
98
|
+
@fake_capture3.stub do
|
99
|
+
pkg_provider.send(:install_package)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
88
103
|
it 'should raise exceptions for unavailable packages' do
|
89
104
|
pkg_name = 'not-a-real-package'
|
90
105
|
pkg_provider = package_provider(pkg_name)
|
@@ -111,5 +126,17 @@ describe Wright::Provider::Package::Homebrew do
|
|
111
126
|
pkg_provider.send(:remove_package)
|
112
127
|
end
|
113
128
|
end
|
129
|
+
|
130
|
+
it 'should pass options to the package manager' do
|
131
|
+
pkg_name = 'lame'
|
132
|
+
pkg_options = ['--force']
|
133
|
+
pkg_provider = package_provider(pkg_name, options: pkg_options)
|
134
|
+
brew_uninstall_cmd = brew(:uninstall, pkg_name, options: pkg_options)
|
135
|
+
|
136
|
+
@fake_capture3.expect(brew_uninstall_cmd)
|
137
|
+
@fake_capture3.stub do
|
138
|
+
pkg_provider.send(:remove_package)
|
139
|
+
end
|
140
|
+
end
|
114
141
|
end
|
115
142
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
1
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
package httpd is not installed
|
@@ -0,0 +1 @@
|
|
1
|
+
0
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
5.0.2-7.el7_1.1
|
@@ -0,0 +1 @@
|
|
1
|
+
0
|
File without changes
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Loaded plugins: fastestmirror
|
2
|
+
Loading mirror speeds from cached hostfile
|
3
|
+
* base: mirror.digitalnova.at
|
4
|
+
* extras: mirror.digitalnova.at
|
5
|
+
* updates: ftp.tugraz.at
|
6
|
+
Resolving Dependencies
|
7
|
+
--> Running transaction check
|
8
|
+
---> Package mc.x86_64 1:4.8.7-8.el7 will be installed
|
9
|
+
--> Finished Dependency Resolution
|
10
|
+
|
11
|
+
Dependencies Resolved
|
12
|
+
|
13
|
+
================================================================================
|
14
|
+
Package Arch Version Repository Size
|
15
|
+
================================================================================
|
16
|
+
Installing:
|
17
|
+
mc x86_64 1:4.8.7-8.el7 base 1.7 M
|
18
|
+
|
19
|
+
Transaction Summary
|
20
|
+
================================================================================
|
21
|
+
Install 1 Package
|
22
|
+
|
23
|
+
Total download size: 1.7 M
|
24
|
+
Installed size: 5.6 M
|
25
|
+
Downloading packages:
|
26
|
+
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
|
27
|
+
Running transaction check
|
28
|
+
Running transaction test
|
29
|
+
Transaction test succeeded
|
30
|
+
Running transaction
|
31
|
+
Installing : 1:mc-4.8.7-8.el7.x86_64 1/1
|
32
|
+
Verifying : 1:mc-4.8.7-8.el7.x86_64 1/1
|
33
|
+
|
34
|
+
Installed:
|
35
|
+
mc.x86_64 1:4.8.7-8.el7
|
36
|
+
|
37
|
+
Complete!
|
@@ -0,0 +1 @@
|
|
1
|
+
0
|
File without changes
|
@@ -0,0 +1,36 @@
|
|
1
|
+
Loaded plugins: fastestmirror
|
2
|
+
Loading mirror speeds from cached hostfile
|
3
|
+
* base: mirror.digitalnova.at
|
4
|
+
* extras: mirror.digitalnova.at
|
5
|
+
* updates: ftp.tugraz.at
|
6
|
+
Resolving Dependencies
|
7
|
+
--> Running transaction check
|
8
|
+
---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
|
9
|
+
--> Finished Dependency Resolution
|
10
|
+
|
11
|
+
Dependencies Resolved
|
12
|
+
|
13
|
+
================================================================================
|
14
|
+
Package Arch Version Repository Size
|
15
|
+
================================================================================
|
16
|
+
Installing:
|
17
|
+
nano x86_64 2.3.1-10.el7 base 440 k
|
18
|
+
|
19
|
+
Transaction Summary
|
20
|
+
================================================================================
|
21
|
+
Install 1 Package
|
22
|
+
|
23
|
+
Total download size: 440 k
|
24
|
+
Installed size: 1.6 M
|
25
|
+
Downloading packages:
|
26
|
+
Running transaction check
|
27
|
+
Running transaction test
|
28
|
+
Transaction test succeeded
|
29
|
+
Running transaction
|
30
|
+
Installing : nano-2.3.1-10.el7.x86_64 1/1
|
31
|
+
Verifying : nano-2.3.1-10.el7.x86_64 1/1
|
32
|
+
|
33
|
+
Installed:
|
34
|
+
nano.x86_64 0:2.3.1-10.el7
|
35
|
+
|
36
|
+
Complete!
|
@@ -0,0 +1 @@
|
|
1
|
+
1
|
@@ -0,0 +1 @@
|
|
1
|
+
Error: Nothing to do
|
@@ -0,0 +1 @@
|
|
1
|
+
0
|
File without changes
|
@@ -0,0 +1,53 @@
|
|
1
|
+
Loaded plugins: fastestmirror
|
2
|
+
Loading mirror speeds from cached hostfile
|
3
|
+
* base: mirror.nextlayer.at
|
4
|
+
* centosplus: mirror.nextlayer.at
|
5
|
+
* extras: mirror.nextlayer.at
|
6
|
+
* updates: mirror.nextlayer.at
|
7
|
+
Resolving Dependencies
|
8
|
+
--> Running transaction check
|
9
|
+
---> Package postfix.x86_64 2:2.10.1-6.el7 will be updated
|
10
|
+
---> Package postfix.x86_64 2:2.10.1-6.0.1.el7.centos will be an update
|
11
|
+
--> Processing Dependency: libpq.so.5()(64bit) for package: 2:postfix-2.10.1-6.0.1.el7.centos.x86_64
|
12
|
+
--> Running transaction check
|
13
|
+
---> Package postgresql-libs.x86_64 0:9.2.10-2.el7_1 will be installed
|
14
|
+
--> Finished Dependency Resolution
|
15
|
+
|
16
|
+
Dependencies Resolved
|
17
|
+
|
18
|
+
================================================================================
|
19
|
+
Package Arch Version Repository Size
|
20
|
+
================================================================================
|
21
|
+
Updating:
|
22
|
+
postfix x86_64 2:2.10.1-6.0.1.el7.centos centosplus 2.5 M
|
23
|
+
Installing for dependencies:
|
24
|
+
postgresql-libs x86_64 9.2.10-2.el7_1 updates 230 k
|
25
|
+
|
26
|
+
Transaction Summary
|
27
|
+
================================================================================
|
28
|
+
Install ( 1 Dependent package)
|
29
|
+
Upgrade 1 Package
|
30
|
+
|
31
|
+
Total download size: 2.7 M
|
32
|
+
Downloading packages:
|
33
|
+
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
|
34
|
+
--------------------------------------------------------------------------------
|
35
|
+
Total 382 kB/s | 2.7 MB 00:07
|
36
|
+
Running transaction check
|
37
|
+
Running transaction test
|
38
|
+
Transaction test succeeded
|
39
|
+
Running transaction
|
40
|
+
Installing : postgresql-libs-9.2.10-2.el7_1.x86_64 1/3
|
41
|
+
Updating : 2:postfix-2.10.1-6.0.1.el7.centos.x86_64 2/3
|
42
|
+
Cleanup : 2:postfix-2.10.1-6.el7.x86_64 3/3
|
43
|
+
Verifying : postgresql-libs-9.2.10-2.el7_1.x86_64 1/3
|
44
|
+
Verifying : 2:postfix-2.10.1-6.0.1.el7.centos.x86_64 2/3
|
45
|
+
Verifying : 2:postfix-2.10.1-6.el7.x86_64 3/3
|
46
|
+
|
47
|
+
Dependency Installed:
|
48
|
+
postgresql-libs.x86_64 0:9.2.10-2.el7_1
|
49
|
+
|
50
|
+
Updated:
|
51
|
+
postfix.x86_64 2:2.10.1-6.0.1.el7.centos
|
52
|
+
|
53
|
+
Complete!
|
@@ -0,0 +1 @@
|
|
1
|
+
0
|
File without changes
|
@@ -0,0 +1,31 @@
|
|
1
|
+
Loaded plugins: fastestmirror
|
2
|
+
Resolving Dependencies
|
3
|
+
--> Running transaction check
|
4
|
+
---> Package screen.x86_64 0:4.1.0-0.19.20120314git3c2946.el7 will be erased
|
5
|
+
--> Finished Dependency Resolution
|
6
|
+
|
7
|
+
Dependencies Resolved
|
8
|
+
|
9
|
+
================================================================================
|
10
|
+
Package Arch Version Repository Size
|
11
|
+
================================================================================
|
12
|
+
Removing:
|
13
|
+
screen x86_64 4.1.0-0.19.20120314git3c2946.el7 @base 914 k
|
14
|
+
|
15
|
+
Transaction Summary
|
16
|
+
================================================================================
|
17
|
+
Remove 1 Package
|
18
|
+
|
19
|
+
Installed size: 914 k
|
20
|
+
Downloading packages:
|
21
|
+
Running transaction check
|
22
|
+
Running transaction test
|
23
|
+
Transaction test succeeded
|
24
|
+
Running transaction
|
25
|
+
Erasing : screen-4.1.0-0.19.20120314git3c2946.el7.x86_64 1/1
|
26
|
+
Verifying : screen-4.1.0-0.19.20120314git3c2946.el7.x86_64 1/1
|
27
|
+
|
28
|
+
Removed:
|
29
|
+
screen.x86_64 0:4.1.0-0.19.20120314git3c2946.el7
|
30
|
+
|
31
|
+
Complete!
|
@@ -0,0 +1 @@
|
|
1
|
+
0
|
File without changes
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Resolving Dependencies
|
2
|
+
--> Running transaction check
|
3
|
+
---> Package vim-enhanced.x86_64 2:7.4.160-1.el7 will be erased
|
4
|
+
--> Finished Dependency Resolution
|
5
|
+
|
6
|
+
Dependencies Resolved
|
7
|
+
|
8
|
+
================================================================================
|
9
|
+
Package Arch Version Repository Size
|
10
|
+
================================================================================
|
11
|
+
Removing:
|
12
|
+
vim-enhanced x86_64 2:7.4.160-1.el7 @base 2.2 M
|
13
|
+
|
14
|
+
Transaction Summary
|
15
|
+
================================================================================
|
16
|
+
Remove 1 Package
|
17
|
+
|
18
|
+
Installed size: 2.2 M
|
19
|
+
Downloading packages:
|
20
|
+
Running transaction check
|
21
|
+
Running transaction test
|
22
|
+
Transaction test succeeded
|
23
|
+
Running transaction
|
24
|
+
Erasing : 2:vim-enhanced-7.4.160-1.el7.x86_64 1/1
|
25
|
+
Verifying : 2:vim-enhanced-7.4.160-1.el7.x86_64 1/1
|
26
|
+
|
27
|
+
Removed:
|
28
|
+
vim-enhanced.x86_64 2:7.4.160-1.el7
|
29
|
+
|
30
|
+
Complete!
|
@@ -0,0 +1,130 @@
|
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
|
3
|
+
require 'wright/provider/package/yum'
|
4
|
+
|
5
|
+
describe Wright::Provider::Package::Yum do
|
6
|
+
def rpm_q(pkg_name)
|
7
|
+
version_format = '%{VERSION}-%{RELEASE}'
|
8
|
+
%W(rpm -q #{pkg_name} --qf #{version_format})
|
9
|
+
end
|
10
|
+
|
11
|
+
def package_provider(pkg_name, args = {})
|
12
|
+
properties = { name: pkg_name,
|
13
|
+
version: args[:version],
|
14
|
+
options: args[:options] }
|
15
|
+
pkg_resource = OpenStruct.new(properties)
|
16
|
+
Wright::Provider::Package::Yum.new(pkg_resource)
|
17
|
+
end
|
18
|
+
|
19
|
+
def yum(action, pkg_name, args = {})
|
20
|
+
version = args[:version].nil? ? '' : "-#{args[:version]}"
|
21
|
+
['yum', *args[:options], action.to_s, '-y', pkg_name + version]
|
22
|
+
end
|
23
|
+
|
24
|
+
before :each do
|
25
|
+
yum_dir = File.join(File.dirname(__FILE__), 'yum')
|
26
|
+
@fake_capture3 = FakeCapture3.new(yum_dir)
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#installed_versions' do
|
30
|
+
it 'should return the installed package version via brew info' do
|
31
|
+
pkg_name = 'zsh'
|
32
|
+
pkg_versions = ['5.0.2-7.el7_1.1']
|
33
|
+
pkg_provider = package_provider(pkg_name)
|
34
|
+
rpm_q_cmd = rpm_q(pkg_name)
|
35
|
+
|
36
|
+
@fake_capture3.expect(rpm_q_cmd, 'rpm_-q_zsh')
|
37
|
+
@fake_capture3.stub do
|
38
|
+
pkg_provider.installed_versions.must_equal pkg_versions
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should return an empty array for uninstalled packages' do
|
43
|
+
pkg_name = 'httpd'
|
44
|
+
pkg_versions = []
|
45
|
+
pkg_provider = package_provider(pkg_name)
|
46
|
+
rpm_q_cmd = rpm_q(pkg_name)
|
47
|
+
|
48
|
+
@fake_capture3.expect(rpm_q_cmd, 'rpm_-q_httpd')
|
49
|
+
@fake_capture3.stub do
|
50
|
+
pkg_provider.installed_versions.must_equal pkg_versions
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#install_package' do
|
56
|
+
it 'should install packages' do
|
57
|
+
pkg_name = 'nano'
|
58
|
+
pkg_provider = package_provider(pkg_name)
|
59
|
+
yum_cmd = yum(:install, pkg_name)
|
60
|
+
|
61
|
+
@fake_capture3.expect(yum_cmd)
|
62
|
+
@fake_capture3.stub do
|
63
|
+
pkg_provider.send(:install_package)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should install specific package versions' do
|
68
|
+
pkg_name = 'mc'
|
69
|
+
pkg_version = '4.8.7-8.el7'
|
70
|
+
pkg_provider = package_provider(pkg_name, version: pkg_version)
|
71
|
+
yum_cmd = yum(:install, pkg_name, version: pkg_version)
|
72
|
+
|
73
|
+
@fake_capture3.expect(yum_cmd)
|
74
|
+
@fake_capture3.stub do
|
75
|
+
pkg_provider.send(:install_package)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should pass options to the package manager' do
|
80
|
+
pkg_name = 'postfix'
|
81
|
+
pkg_options = '--enablerepo=centosplus'
|
82
|
+
pkg_provider = package_provider(pkg_name, options: pkg_options)
|
83
|
+
yum_cmd = yum(:install, pkg_name, options: pkg_options)
|
84
|
+
|
85
|
+
@fake_capture3.expect(yum_cmd, 'yum_install_with_options')
|
86
|
+
@fake_capture3.stub do
|
87
|
+
pkg_provider.send(:install_package)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'should raise exceptions for unknown packages' do
|
92
|
+
pkg_name = 'not-a-real-package'
|
93
|
+
pkg_provider = package_provider(pkg_name)
|
94
|
+
yum_cmd = yum(:install, pkg_name)
|
95
|
+
|
96
|
+
@fake_capture3.expect(yum_cmd)
|
97
|
+
@fake_capture3.stub do
|
98
|
+
e = -> { pkg_provider.send(:install_package) }.must_raise RuntimeError
|
99
|
+
wright_error = "cannot install package '#{pkg_name}'"
|
100
|
+
yum_error = 'Error: Nothing to do'
|
101
|
+
e.message.must_equal %(#{wright_error}: "#{yum_error}")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe '#remove_package' do
|
107
|
+
it 'should remove packages' do
|
108
|
+
pkg_name = 'screen'
|
109
|
+
pkg_provider = package_provider(pkg_name)
|
110
|
+
yum_cmd = yum(:remove, pkg_name)
|
111
|
+
|
112
|
+
@fake_capture3.expect(yum_cmd)
|
113
|
+
@fake_capture3.stub do
|
114
|
+
pkg_provider.send(:remove_package)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'should pass options to the package manager' do
|
119
|
+
pkg_name = 'vim'
|
120
|
+
pkg_options = ['--noplugins']
|
121
|
+
pkg_provider = package_provider(pkg_name, options: pkg_options)
|
122
|
+
yum_cmd = yum(:remove, pkg_name, options: pkg_options)
|
123
|
+
|
124
|
+
@fake_capture3.expect(yum_cmd, 'yum_remove_with_options')
|
125
|
+
@fake_capture3.stub do
|
126
|
+
pkg_provider.send(:remove_package)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -26,13 +26,15 @@ describe Wright::Provider::User::DarwinDirectoryService do
|
|
26
26
|
FakeEtc.clear_groups
|
27
27
|
end
|
28
28
|
|
29
|
-
describe '#
|
29
|
+
describe '#create_user' do
|
30
30
|
before(:each) do
|
31
|
-
Wright::Provider::User::DarwinDirectoryService.send(:public,
|
31
|
+
Wright::Provider::User::DarwinDirectoryService.send(:public,
|
32
|
+
:create_user)
|
32
33
|
end
|
33
34
|
|
34
35
|
after(:each) do
|
35
|
-
Wright::Provider::User::DarwinDirectoryService.send(:private,
|
36
|
+
Wright::Provider::User::DarwinDirectoryService.send(:private,
|
37
|
+
:create_user)
|
36
38
|
end
|
37
39
|
|
38
40
|
it 'should add users' do
|
@@ -55,7 +57,7 @@ describe Wright::Provider::User::DarwinDirectoryService do
|
|
55
57
|
@fake_capture3.expect(dscl(:create, user, 'Password', '*'),
|
56
58
|
'dscl-new-user-password')
|
57
59
|
@fake_capture3.stub do
|
58
|
-
FakeEtc { provider.
|
60
|
+
FakeEtc { provider.create_user }
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
@@ -80,7 +82,7 @@ describe Wright::Provider::User::DarwinDirectoryService do
|
|
80
82
|
@fake_capture3.expect(dscl(:create, user, 'Password', '*'),
|
81
83
|
'dscl-new-user-password')
|
82
84
|
@fake_capture3.stub do
|
83
|
-
FakeEtc { provider.
|
85
|
+
FakeEtc { provider.create_user }
|
84
86
|
end
|
85
87
|
end
|
86
88
|
|
@@ -112,7 +114,7 @@ describe Wright::Provider::User::DarwinDirectoryService do
|
|
112
114
|
@fake_capture3.expect(dscl(:create, user, 'Password', '*'),
|
113
115
|
'dscl-new-user-password')
|
114
116
|
@fake_capture3.stub do
|
115
|
-
FakeEtc { provider.
|
117
|
+
FakeEtc { provider.create_user }
|
116
118
|
end
|
117
119
|
end
|
118
120
|
end
|
@@ -142,15 +144,15 @@ describe Wright::Provider::User::DarwinDirectoryService do
|
|
142
144
|
end
|
143
145
|
end
|
144
146
|
|
145
|
-
describe '#
|
147
|
+
describe '#remove_user' do
|
146
148
|
before(:each) do
|
147
149
|
Wright::Provider::User::DarwinDirectoryService.send(:public,
|
148
|
-
:
|
150
|
+
:remove_user)
|
149
151
|
end
|
150
152
|
|
151
153
|
after(:each) do
|
152
154
|
Wright::Provider::User::DarwinDirectoryService.send(:private,
|
153
|
-
:
|
155
|
+
:remove_user)
|
154
156
|
end
|
155
157
|
|
156
158
|
it 'should delete users' do
|
@@ -160,7 +162,7 @@ describe Wright::Provider::User::DarwinDirectoryService do
|
|
160
162
|
@fake_capture3.expect(%W(dscl . -delete /Users/#{@resource.name}),
|
161
163
|
'dscl-delete-user')
|
162
164
|
@fake_capture3.stub do
|
163
|
-
FakeEtc { provider.
|
165
|
+
FakeEtc { provider.remove_user }
|
164
166
|
end
|
165
167
|
end
|
166
168
|
end
|
@@ -18,13 +18,13 @@ describe Wright::Provider::User::GnuPasswd do
|
|
18
18
|
FakeEtc.clear_groups
|
19
19
|
end
|
20
20
|
|
21
|
-
describe '#
|
21
|
+
describe '#create_user' do
|
22
22
|
before(:each) do
|
23
|
-
Wright::Provider::User::GnuPasswd.send(:public, :
|
23
|
+
Wright::Provider::User::GnuPasswd.send(:public, :create_user)
|
24
24
|
end
|
25
25
|
|
26
26
|
after(:each) do
|
27
|
-
Wright::Provider::User::GnuPasswd.send(:private, :
|
27
|
+
Wright::Provider::User::GnuPasswd.send(:private, :create_user)
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'should add users' do
|
@@ -32,7 +32,7 @@ describe Wright::Provider::User::GnuPasswd do
|
|
32
32
|
|
33
33
|
@fake_capture3.expect(%W(useradd #{@resource.name}))
|
34
34
|
@fake_capture3.stub do
|
35
|
-
FakeEtc { provider.
|
35
|
+
FakeEtc { provider.create_user }
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -59,7 +59,7 @@ describe Wright::Provider::User::GnuPasswd do
|
|
59
59
|
FakeEtc.add_groups('anonymous' => { gid: 123 })
|
60
60
|
@fake_capture3.expect(['useradd', *expected_args], 'useradd_with_options')
|
61
61
|
@fake_capture3.stub do
|
62
|
-
FakeEtc { provider.
|
62
|
+
FakeEtc { provider.create_user }
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
@@ -85,13 +85,13 @@ describe Wright::Provider::User::GnuPasswd do
|
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
|
-
describe '#
|
88
|
+
describe '#remove_user' do
|
89
89
|
before(:each) do
|
90
|
-
Wright::Provider::User::GnuPasswd.send(:public, :
|
90
|
+
Wright::Provider::User::GnuPasswd.send(:public, :remove_user)
|
91
91
|
end
|
92
92
|
|
93
93
|
after(:each) do
|
94
|
-
Wright::Provider::User::GnuPasswd.send(:private, :
|
94
|
+
Wright::Provider::User::GnuPasswd.send(:private, :remove_user)
|
95
95
|
end
|
96
96
|
|
97
97
|
it 'should delete users' do
|
@@ -100,7 +100,7 @@ describe Wright::Provider::User::GnuPasswd do
|
|
100
100
|
FakeEtc.add_users(@resource.name => {})
|
101
101
|
@fake_capture3.expect(%W(userdel #{@resource.name}))
|
102
102
|
@fake_capture3.stub do
|
103
|
-
FakeEtc { provider.
|
103
|
+
FakeEtc { provider.remove_user }
|
104
104
|
end
|
105
105
|
end
|
106
106
|
end
|