voxpupuli-acceptance 0.3.0 → 1.0.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18f700e3c94ea73c5ccb90021f06950463b965b412a02779b68685fd95e22ef2
|
4
|
+
data.tar.gz: 07fd8b5f34440869d96be25b0be77479fb49a01381ee4919eac0e4129e3c2c9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 330135466f41d8d37378cf09b57c500f598364cf67c0770ecbc38ac20602a41acedf15ea86ca89d935037f89d5a18b15ebca52374fd296129c4e90ff494faebb
|
7
|
+
data.tar.gz: 4b5bc3918ee3f1f5967474bce44025f30beac5da95932fbdc051364f69601fb7884734a492b9212e92f421ca5a0eac321afac0cfaece99950f9faa2edbd6dc46
|
@@ -0,0 +1,21 @@
|
|
1
|
+
shared_examples 'an idempotent resource' do |host|
|
2
|
+
host ||= default
|
3
|
+
|
4
|
+
it 'applies with no errors' do
|
5
|
+
apply_manifest_on(host, manifest, catch_failures: true)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'applies a second time without changes' do
|
9
|
+
apply_manifest_on(host, manifest, catch_changes: true)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
shared_examples 'the example' do |name, host|
|
14
|
+
include_examples 'an idempotent resource', host do
|
15
|
+
let(:manifest) do
|
16
|
+
path = File.join(Dir.pwd, 'examples', name)
|
17
|
+
raise Exception, "Example '#{path}' does not exist" unless File.exist?(path)
|
18
|
+
File.read(path)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Voxpupuli
|
2
|
+
module Acceptance
|
3
|
+
class Facts
|
4
|
+
ENV_VAR_PREFIX = 'BEAKER_FACTER_'
|
5
|
+
FACT_FILE = '/etc/facter/facts.d/voxpupuli-acceptance-env.json'
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def beaker_facts_from_env
|
9
|
+
facts = {}
|
10
|
+
|
11
|
+
ENV.each do |var, value|
|
12
|
+
next unless var.start_with?(ENV_VAR_PREFIX)
|
13
|
+
|
14
|
+
fact = var.sub(ENV_VAR_PREFIX, '').downcase
|
15
|
+
facts[fact] = value
|
16
|
+
end
|
17
|
+
|
18
|
+
facts
|
19
|
+
end
|
20
|
+
|
21
|
+
def write_beaker_facts_on(hosts)
|
22
|
+
beaker_facts = beaker_facts_from_env
|
23
|
+
|
24
|
+
if beaker_facts.any?
|
25
|
+
require 'json'
|
26
|
+
on(hosts, "mkdir -p #{File.dirname(FACT_FILE)} && cat <<VOXPUPULI_BEAKER_ENV_VARS > #{FACT_FILE}\n#{beaker_facts.to_json}\nVOXPUPULI_BEAKER_ENV_VARS")
|
27
|
+
else
|
28
|
+
on(hosts, "rm -f #{FACT_FILE}")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,36 +1,14 @@
|
|
1
|
-
|
2
|
-
FACT_FILE = '/etc/facter/facts.d/voxpupuli-acceptance-env.json'
|
1
|
+
require_relative 'examples'
|
3
2
|
|
4
|
-
def
|
5
|
-
facts = {}
|
6
|
-
|
7
|
-
ENV.each do |var, value|
|
8
|
-
next unless var.start_with?(ENV_VAR_PREFIX)
|
9
|
-
|
10
|
-
fact = var.sub(ENV_VAR_PREFIX, '').downcase
|
11
|
-
facts[fact] = value
|
12
|
-
end
|
13
|
-
|
14
|
-
facts
|
15
|
-
end
|
16
|
-
|
17
|
-
def write_beaker_facts_on(hosts)
|
18
|
-
beaker_facts = beaker_facts_from_env
|
19
|
-
|
20
|
-
if beaker_facts.any?
|
21
|
-
require 'json'
|
22
|
-
on(hosts, "mkdir -p #{File.dirname(FACT_FILE)} && cat <<VOXPUPULI_BEAKER_ENV_VARS > #{FACT_FILE}\n#{beaker_facts.to_json}\nVOXPUPULI_BEAKER_ENV_VARS")
|
23
|
-
else
|
24
|
-
on(hosts, "rm -f #{FACT_FILE}")
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def configure_beaker(modules: :metadata, configure_facts_from_env: true, &block)
|
3
|
+
def configure_beaker(modules: :metadata, &block)
|
29
4
|
ENV['PUPPET_INSTALL_TYPE'] ||= 'agent'
|
30
5
|
ENV['BEAKER_PUPPET_COLLECTION'] ||= 'puppet6'
|
31
6
|
ENV['BEAKER_debug'] ||= 'true'
|
32
7
|
ENV['BEAKER_HYPERVISOR'] ||= 'docker'
|
33
8
|
|
9
|
+
# On Ruby 3 this doesn't appear to matter but on Ruby 2 beaker-hiera must be
|
10
|
+
# included before beaker-rspec so Beaker::DSL is final
|
11
|
+
require 'beaker-hiera'
|
34
12
|
require 'beaker-rspec'
|
35
13
|
require 'beaker-puppet'
|
36
14
|
require 'beaker/puppet_install_helper'
|
@@ -57,16 +35,52 @@ def configure_beaker(modules: :metadata, configure_facts_from_env: true, &block)
|
|
57
35
|
install_module_dependencies
|
58
36
|
when :fixtures
|
59
37
|
fixture_modules = File.join(Dir.pwd, 'spec', 'fixtures', 'modules')
|
60
|
-
|
38
|
+
Voxpupuli::Acceptance::Fixtures.install_fixture_modules_on(hosts, fixture_modules)
|
61
39
|
end
|
62
40
|
|
63
|
-
|
41
|
+
if RSpec.configuration.suite_configure_facts_from_env
|
42
|
+
require_relative 'facts'
|
43
|
+
Voxpupuli::Acceptance::Facts.write_beaker_facts_on(hosts)
|
44
|
+
end
|
45
|
+
|
46
|
+
if RSpec.configuration.suite_hiera?
|
47
|
+
hiera_data_dir = RSpec.configuration.suite_hiera_data_dir
|
48
|
+
|
49
|
+
if Dir.exist?(hiera_data_dir)
|
50
|
+
write_hiera_config_on(hosts, RSpec.configuration.suite_hiera_hierachy)
|
51
|
+
copy_hiera_data_to(hosts, hiera_data_dir)
|
52
|
+
end
|
53
|
+
end
|
64
54
|
|
65
|
-
|
66
|
-
|
55
|
+
hosts.each do |host|
|
56
|
+
if block
|
67
57
|
yield host
|
58
|
+
|
59
|
+
local_setup = RSpec.configuration.setup_acceptance_node
|
60
|
+
if local_setup && File.exist?(local_setup)
|
61
|
+
puts "Configuring #{host} by applying #{local_setup}"
|
62
|
+
apply_manifest_on(host, File.read(local_setup), catch_failures: true)
|
63
|
+
end
|
68
64
|
end
|
69
65
|
end
|
70
66
|
end
|
71
67
|
end
|
72
68
|
end
|
69
|
+
|
70
|
+
RSpec.configure do |c|
|
71
|
+
# Fact handling
|
72
|
+
c.add_setting :suite_configure_facts_from_env, default: true
|
73
|
+
|
74
|
+
# Hiera settings
|
75
|
+
c.add_setting :suite_hiera, default: true
|
76
|
+
c.add_setting :suite_hiera_data_dir, default: File.join('spec', 'acceptance', 'hieradata')
|
77
|
+
c.add_setting :suite_hiera_hierachy, default: [
|
78
|
+
'fqdn/%{fqdn}.yaml',
|
79
|
+
'os/%{os.family}/%{os.release.major}.yaml',
|
80
|
+
'os/%{os.family}.yaml',
|
81
|
+
'common.yaml',
|
82
|
+
]
|
83
|
+
|
84
|
+
# Node setup
|
85
|
+
c.add_setting :setup_acceptance_node, default: File.join('spec', 'setup_acceptance_node.pp')
|
86
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voxpupuli-acceptance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vox Pupuli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt_pbkdf
|
@@ -64,6 +64,20 @@ dependencies:
|
|
64
64
|
- - ">="
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '0'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: beaker-hiera
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0.4'
|
74
|
+
type: :runtime
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0.4'
|
67
81
|
- !ruby/object:Gem::Dependency
|
68
82
|
name: beaker-hostgenerator
|
69
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,6 +190,20 @@ dependencies:
|
|
176
190
|
- - "~>"
|
177
191
|
- !ruby/object:Gem::Version
|
178
192
|
version: '0.1'
|
193
|
+
- !ruby/object:Gem::Dependency
|
194
|
+
name: rake
|
195
|
+
requirement: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
type: :runtime
|
201
|
+
prerelease: false
|
202
|
+
version_requirements: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - ">="
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
179
207
|
- !ruby/object:Gem::Dependency
|
180
208
|
name: rbnacl
|
181
209
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,9 +269,12 @@ extensions: []
|
|
241
269
|
extra_rdoc_files: []
|
242
270
|
files:
|
243
271
|
- lib/voxpupuli/acceptance.rb
|
272
|
+
- lib/voxpupuli/acceptance/examples.rb
|
273
|
+
- lib/voxpupuli/acceptance/facts.rb
|
244
274
|
- lib/voxpupuli/acceptance/fixtures.rb
|
275
|
+
- lib/voxpupuli/acceptance/rake.rb
|
245
276
|
- lib/voxpupuli/acceptance/spec_helper_acceptance.rb
|
246
|
-
homepage:
|
277
|
+
homepage: https://github.com/voxpupuli/voxpupuli-acceptance
|
247
278
|
licenses:
|
248
279
|
- Apache-2.0
|
249
280
|
metadata: {}
|
@@ -255,14 +286,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
255
286
|
requirements:
|
256
287
|
- - ">="
|
257
288
|
- !ruby/object:Gem::Version
|
258
|
-
version: '
|
289
|
+
version: '2.4'
|
290
|
+
- - "<"
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '4'
|
259
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
260
294
|
requirements:
|
261
295
|
- - ">="
|
262
296
|
- !ruby/object:Gem::Version
|
263
297
|
version: '0'
|
264
298
|
requirements: []
|
265
|
-
rubygems_version: 3.
|
299
|
+
rubygems_version: 3.1.6
|
266
300
|
signing_key:
|
267
301
|
specification_version: 4
|
268
302
|
summary: Helpers for acceptance testing Vox Pupuli modules
|