voxpupuli-acceptance 0.3.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
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
|