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
|
@@ -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
|