kitchen-goss 0.1.0 → 0.1.1
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/README.md +8 -0
- data/lib/kitchen/verifier/goss.rb +60 -22
- data/lib/kitchen/verifier/goss_version.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e96537e1b24496345c539fca26df41d821d98ac
|
4
|
+
data.tar.gz: 38c5ea624b276e3736084d9127d53e51455950e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61108525c60316fee3bbb7a3dd35cee962f659a434e0dfb675490bea122b20ff56f53423bee14eb7dd8aa8eb71e432580b6c4f45081b81fb4a3c31476a04bfe0
|
7
|
+
data.tar.gz: f1e84433bcb08fa6ee8d22cae4c48a0be7bbc45003f988db4244aecbd0e07402c302009ae4d382c3bbbfdbbb253abb7613ccebf5bc72946b9f7aff139f4e80a1
|
data/README.md
CHANGED
@@ -28,6 +28,12 @@ gem install kitchen-goss-<version>.gem
|
|
28
28
|
```yaml
|
29
29
|
verifier :
|
30
30
|
name : "goss"
|
31
|
+
sleep : 0
|
32
|
+
use_sudo : true
|
33
|
+
goss_version : "v0.3.6"
|
34
|
+
goss_link : "https://github.com/aelsabbahy/goss/releases/download/$VERSION/goss-linux-${ARCH}"
|
35
|
+
goss_var_path : "common.yml"
|
36
|
+
env_vars : {"test_uid": 123}
|
31
37
|
```
|
32
38
|
|
33
39
|
## kitchen.yml options
|
@@ -42,6 +48,7 @@ default_config :validate_output, "documentation"
|
|
42
48
|
default_config :custom_install_command, nil
|
43
49
|
default_config :goss_link, "https://github.com/aelsabbahy/goss/releases/download/$VERSION/goss-${DISTRO}-${ARCH}"
|
44
50
|
default_config :goss_download_path, "/tmp/goss-${VERSION}-${DISTRO}-${ARCH}"
|
51
|
+
default_config :goss_var_path, nil
|
45
52
|
```
|
46
53
|
|
47
54
|
## Test structure
|
@@ -57,6 +64,7 @@ test/
|
|
57
64
|
\_goss/
|
58
65
|
\_test1.yml
|
59
66
|
|_test2.yml
|
67
|
+
|_common.yml # --vars common.yml with .Vars render, not for goss test
|
60
68
|
```
|
61
69
|
|
62
70
|
|
@@ -4,7 +4,7 @@ module Kitchen
|
|
4
4
|
module Verifier
|
5
5
|
class Goss < Kitchen::Verifier::Base
|
6
6
|
require 'mixlib/shellout'
|
7
|
-
require
|
7
|
+
require 'kitchen/util'
|
8
8
|
require 'pathname'
|
9
9
|
|
10
10
|
kitchen_verifier_api_version 1
|
@@ -14,11 +14,12 @@ module Kitchen
|
|
14
14
|
default_config :sleep, 0
|
15
15
|
default_config :use_sudo, false
|
16
16
|
default_config :env_vars, {}
|
17
|
-
default_config :goss_version,
|
18
|
-
default_config :validate_output,
|
17
|
+
default_config :goss_version, 'v0.3.6'
|
18
|
+
default_config :validate_output, 'documentation'
|
19
19
|
default_config :custom_install_command, nil
|
20
|
-
default_config :goss_link,
|
21
|
-
default_config :goss_download_path,
|
20
|
+
default_config :goss_link, 'https://github.com/aelsabbahy/goss/releases/download/$VERSION/goss-${DISTRO}-${ARCH}'
|
21
|
+
default_config :goss_download_path, '/tmp/goss-${VERSION}-${DISTRO}-${ARCH}'
|
22
|
+
default_config :goss_var_path, nil
|
22
23
|
|
23
24
|
def install_command
|
24
25
|
# If cutom install
|
@@ -54,7 +55,7 @@ module Kitchen
|
|
54
55
|
# (see Base#init_command)
|
55
56
|
def init_command
|
56
57
|
return if local_suite_files.empty?
|
57
|
-
debug(
|
58
|
+
debug('Remove root_path on remote server.')
|
58
59
|
<<-CMD
|
59
60
|
suite_dir="#{config[:root_path]}"
|
60
61
|
if [ "${suite_dir}" = "x" ]; then
|
@@ -74,19 +75,19 @@ module Kitchen
|
|
74
75
|
# @raise [ActionFailed] if the action could not be completed
|
75
76
|
def call(state)
|
76
77
|
create_sandbox
|
77
|
-
sandbox_dirs = Dir.glob(File.join(sandbox_path,
|
78
|
+
sandbox_dirs = Dir.glob(File.join(sandbox_path, '*'))
|
78
79
|
|
79
80
|
instance.transport.connection(state) do |conn|
|
80
81
|
conn.execute(install_command)
|
81
82
|
conn.execute(init_command)
|
82
83
|
info("Transferring files to #{instance.to_str}")
|
83
84
|
conn.upload(sandbox_dirs, config[:root_path])
|
84
|
-
debug(
|
85
|
+
debug('Transfer complete')
|
85
86
|
conn.execute(prepare_command)
|
86
87
|
conn.execute(run_command)
|
87
88
|
end
|
88
89
|
rescue Kitchen::Transport::TransportFailed => ex
|
89
|
-
if ex.message .include?
|
90
|
+
if ex.message .include? '<TEST EXECUTION FAILED>'
|
90
91
|
raise ActionFailed, "Action #verify failed for #{instance.to_str}."
|
91
92
|
else
|
92
93
|
raise ActionFailed, ex.message
|
@@ -99,7 +100,7 @@ module Kitchen
|
|
99
100
|
def run_command
|
100
101
|
return if local_suite_files.empty?
|
101
102
|
|
102
|
-
debug(
|
103
|
+
debug('Running tests')
|
103
104
|
prefix_command(wrap_shell_code(Util.outdent!(<<-CMD)))
|
104
105
|
set +e
|
105
106
|
#{goss_filename_flags}
|
@@ -115,9 +116,9 @@ module Kitchen
|
|
115
116
|
base = File.join(config[:test_base_path], config[:suite_name])
|
116
117
|
|
117
118
|
local_suite_files.each do |src|
|
118
|
-
dest = File.join(sandbox_suites_dir, src.sub("#{base}/",
|
119
|
+
dest = File.join(sandbox_suites_dir, src.sub("#{base}/", ''))
|
119
120
|
FileUtils.mkdir_p(File.dirname(dest))
|
120
|
-
FileUtils.cp(src, dest, :
|
121
|
+
FileUtils.cp(src, dest, preserve: true)
|
121
122
|
end
|
122
123
|
end
|
123
124
|
|
@@ -129,8 +130,8 @@ module Kitchen
|
|
129
130
|
# @api private
|
130
131
|
def local_suite_files
|
131
132
|
base = File.join(config[:test_base_path], config[:suite_name])
|
132
|
-
glob = File.join(base,
|
133
|
-
#testfiles = Dir.glob(glob).reject { |f| File.directory?(f) }
|
133
|
+
glob = File.join(base, 'goss/**/*')
|
134
|
+
# testfiles = Dir.glob(glob).reject { |f| File.directory?(f) }
|
134
135
|
Dir.glob(glob).reject { |f| File.directory?(f) }
|
135
136
|
end
|
136
137
|
|
@@ -143,7 +144,7 @@ module Kitchen
|
|
143
144
|
# @return [String] path to suites directory under sandbox path
|
144
145
|
# @api private
|
145
146
|
def sandbox_suites_dir
|
146
|
-
File.join(sandbox_path,
|
147
|
+
File.join(sandbox_path, 'suites')
|
147
148
|
end
|
148
149
|
|
149
150
|
def env_vars
|
@@ -151,12 +152,26 @@ module Kitchen
|
|
151
152
|
config[:env_vars].map { |k, v| "#{k}=#{v}" }.join(' ')
|
152
153
|
end
|
153
154
|
|
155
|
+
def remote_var_file
|
156
|
+
base_path = File.join(config[:test_base_path], config[:suite_name])
|
157
|
+
remote_base_path = File.join(config[:root_path], 'suites')
|
158
|
+
result = ''
|
159
|
+
local_suite_files.each do |src|
|
160
|
+
if File.basename(src) == config[:goss_var_path]
|
161
|
+
result = src.sub(base_path, remote_base_path)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
result
|
165
|
+
end
|
166
|
+
|
154
167
|
# @return [String] the run command to execute tests
|
155
168
|
# @api private
|
156
169
|
def run_test_command
|
157
170
|
command = config[:goss_download_path]
|
158
171
|
command = "sudo -E #{command}" if !config[:use_sudo] == true
|
159
|
-
command = "#{env_vars} #{command}" if
|
172
|
+
command = "#{env_vars} #{command}" if config[:env_vars].any?
|
173
|
+
command = "#{command} --vars #{remote_var_file}" if config[:goss_var_path]
|
174
|
+
puts command
|
160
175
|
|
161
176
|
<<-CMD
|
162
177
|
if [ ! -x "#{config[:goss_download_path]}" ]; then
|
@@ -183,7 +198,7 @@ module Kitchen
|
|
183
198
|
end
|
184
199
|
|
185
200
|
def goss_filename_flags
|
186
|
-
|
201
|
+
<<-CMD
|
187
202
|
## Set the flags for GOSS command path
|
188
203
|
VERSION="#{config[:goss_version]}"
|
189
204
|
DISTRO="$(uname)"
|
@@ -193,15 +208,39 @@ module Kitchen
|
|
193
208
|
else
|
194
209
|
ARCH="386"
|
195
210
|
fi
|
211
|
+
|
212
|
+
if [ -f /etc/os-release ]; then
|
213
|
+
|
214
|
+
if [ "$(grep -i 'ubuntu' /etc/os-release)" != "" ]; then
|
215
|
+
OS="ubuntu"
|
216
|
+
fi
|
217
|
+
if [ "$(grep -i 'centos' /etc/os-release)" != "" ]; then
|
218
|
+
OS="centos"
|
219
|
+
fi
|
220
|
+
if [ "$(grep -i '7' /etc/os-release)" != "" ]; then
|
221
|
+
VER='7'
|
222
|
+
fi
|
223
|
+
if [ "$(grep -i '16.04' /etc/os-release)" != "" ]; then
|
224
|
+
VER='16.04'
|
225
|
+
fi
|
226
|
+
else
|
227
|
+
OS="centos"
|
228
|
+
VER="6"
|
229
|
+
fi
|
230
|
+
|
231
|
+
OS_VERSION=${OS}${VER}
|
232
|
+
echo $OS_VERSION
|
196
233
|
CMD
|
197
234
|
end
|
198
235
|
|
199
236
|
def get_test_name
|
200
237
|
base_path = File.join(config[:test_base_path], config[:suite_name])
|
201
|
-
remote_base_path = File.join(config[:root_path],
|
202
|
-
all_tests =
|
238
|
+
remote_base_path = File.join(config[:root_path], 'suites')
|
239
|
+
all_tests = ''
|
203
240
|
local_suite_files.each do |test_file|
|
204
|
-
|
241
|
+
if File.basename(test_file) != config[:goss_var_path] && File.basename(test_file).end_with?('.yml')
|
242
|
+
all_tests += ' ' + test_file.sub(base_path, remote_base_path)
|
243
|
+
end
|
205
244
|
end
|
206
245
|
all_tests
|
207
246
|
end
|
@@ -215,7 +254,6 @@ module Kitchen
|
|
215
254
|
sleep 1
|
216
255
|
end
|
217
256
|
end
|
218
|
-
|
219
257
|
end
|
220
258
|
end
|
221
|
-
end
|
259
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-goss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adham Helal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-kitchen
|
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
86
|
rubyforge_project: "[none]"
|
87
|
-
rubygems_version: 2.5.2
|
87
|
+
rubygems_version: 2.5.2.3
|
88
88
|
signing_key:
|
89
89
|
specification_version: 4
|
90
90
|
summary: A test-kitchen verifier plugin for GOSS
|