voxpupuli-acceptance 0.2.1 → 1.1.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: 69860eff5a884085c2872fdce8f47122020ddb6355f72eb75eec92ae712415f1
4
- data.tar.gz: 490075ff98e6a91416abf253db39c55f2f0600ce930c72615e77fdaa70546bb0
3
+ metadata.gz: 557133c56cc279a2e32231fe370c9dc751ccfab399f8c359728834f25f750ba2
4
+ data.tar.gz: db7b675b150ee69ae02d8942c4d5d97b7ddf759c0dc1dab64e25900813c223ac
5
5
  SHA512:
6
- metadata.gz: b6d35892eee0ea3657a9cb588e665704e521a1dfa08f85f6e2a3c9f34294306860c65e027cf40ace681878da7059c32c0504182dffabc827f92d009b7808b04f
7
- data.tar.gz: 25c82c6e01747cedfbf827b53dd89f79f21af9ac8cb27bce0147758e917ad8b911e705de8665ee31e30ebe7432f1e28406ced64c8236a970c993f62fba27d6ea
6
+ metadata.gz: 43680c07caa4c51a162f0b33a1a8646aab994e0a5500e2624658696ff24b4952fda7d97868e7018e0f7639d6ef8859f70a28bfa6f349967d3cb102e2417285a9
7
+ data.tar.gz: 63fa116962dec2f7e042fe5eb665c90ae4bc2ff261aee24849dc7571e950337201f929a5805c01b6dba0cf90dc69ab448c8735a0d71371a2dec9b5bc3b8e1b96
@@ -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,7 +1,7 @@
1
1
  require 'tmpdir'
2
2
  require 'puppet/modulebuilder'
3
3
 
4
- module Voxpupupli
4
+ module Voxpupuli
5
5
  module Acceptance
6
6
  class Fixtures
7
7
  class << self
@@ -0,0 +1,9 @@
1
+ begin
2
+ # Fixtures can be needed because of spec_prep
3
+ # spec_prep taks is provided by puppetlabs_spec_helper
4
+ require 'puppetlabs_spec_helper/tasks/fixtures'
5
+ rescue LoadError
6
+ # we only need that during CI, so we rescue the LoadError
7
+ end
8
+ # provides the beaker rake task
9
+ require 'beaker-rspec/rake_task'
@@ -1,9 +1,14 @@
1
+ require_relative 'examples'
2
+
1
3
  def configure_beaker(modules: :metadata, &block)
2
4
  ENV['PUPPET_INSTALL_TYPE'] ||= 'agent'
3
5
  ENV['BEAKER_PUPPET_COLLECTION'] ||= 'puppet6'
4
6
  ENV['BEAKER_debug'] ||= 'true'
5
7
  ENV['BEAKER_HYPERVISOR'] ||= 'docker'
6
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'
7
12
  require 'beaker-rspec'
8
13
  require 'beaker-puppet'
9
14
  require 'beaker/puppet_install_helper'
@@ -30,14 +35,50 @@ def configure_beaker(modules: :metadata, &block)
30
35
  install_module_dependencies
31
36
  when :fixtures
32
37
  fixture_modules = File.join(Dir.pwd, 'spec', 'fixtures', 'modules')
33
- Voxpupupli::Acceptance::Fixtures.install_fixture_modules_on(hosts, fixture_modules)
38
+ Voxpupuli::Acceptance::Fixtures.install_fixture_modules_on(hosts, fixture_modules)
39
+ end
40
+
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
34
53
  end
35
54
 
36
- if block
37
- hosts.each do |host|
38
- yield host
55
+ local_setup = RSpec.configuration.setup_acceptance_node
56
+ hosts.each do |host|
57
+ yield host if block
58
+
59
+ if local_setup && File.exist?(local_setup)
60
+ puts "Configuring #{host} by applying #{local_setup}"
61
+ apply_manifest_on(host, File.read(local_setup), catch_failures: true)
39
62
  end
40
63
  end
41
64
  end
42
65
  end
43
66
  end
67
+
68
+ RSpec.configure do |c|
69
+ # Fact handling
70
+ c.add_setting :suite_configure_facts_from_env, default: true
71
+
72
+ # Hiera settings
73
+ c.add_setting :suite_hiera, default: true
74
+ c.add_setting :suite_hiera_data_dir, default: File.join('spec', 'acceptance', 'hieradata')
75
+ c.add_setting :suite_hiera_hierachy, default: [
76
+ 'fqdn/%{fqdn}.yaml',
77
+ 'os/%{os.family}/%{os.release.major}.yaml',
78
+ 'os/%{os.family}.yaml',
79
+ 'common.yaml',
80
+ ]
81
+
82
+ # Node setup
83
+ c.add_setting :setup_acceptance_node, default: File.join('spec', 'setup_acceptance_node.pp')
84
+ 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.2.1
4
+ version: 1.1.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: 2020-05-20 00:00:00.000000000 Z
11
+ date: 2022-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt_pbkdf
@@ -30,26 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.2.0
34
- - - "!="
35
- - !ruby/object:Gem::Version
36
- version: 4.22.0
37
- - - "!="
38
- - !ruby/object:Gem::Version
39
- version: 4.23.0
33
+ version: 4.33.0
40
34
  type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - ">="
45
39
  - !ruby/object:Gem::Version
46
- version: 4.2.0
47
- - - "!="
48
- - !ruby/object:Gem::Version
49
- version: 4.22.0
50
- - - "!="
51
- - !ruby/object:Gem::Version
52
- version: 4.23.0
40
+ version: 4.33.0
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: beaker-docker
55
43
  requirement: !ruby/object:Gem::Requirement
@@ -65,35 +53,35 @@ dependencies:
65
53
  - !ruby/object:Gem::Version
66
54
  version: '0'
67
55
  - !ruby/object:Gem::Dependency
68
- name: beaker-hostgenerator
56
+ name: beaker-hiera
69
57
  requirement: !ruby/object:Gem::Requirement
70
58
  requirements:
71
- - - ">="
59
+ - - "~>"
72
60
  - !ruby/object:Gem::Version
73
- version: 1.1.22
61
+ version: '0.4'
74
62
  type: :runtime
75
63
  prerelease: false
76
64
  version_requirements: !ruby/object:Gem::Requirement
77
65
  requirements:
78
- - - ">="
66
+ - - "~>"
79
67
  - !ruby/object:Gem::Version
80
- version: 1.1.22
68
+ version: '0.4'
81
69
  - !ruby/object:Gem::Dependency
82
- name: beaker-module_install_helper
70
+ name: beaker-hostgenerator
83
71
  requirement: !ruby/object:Gem::Requirement
84
72
  requirements:
85
73
  - - ">="
86
74
  - !ruby/object:Gem::Version
87
- version: '0'
75
+ version: 1.1.22
88
76
  type: :runtime
89
77
  prerelease: false
90
78
  version_requirements: !ruby/object:Gem::Requirement
91
79
  requirements:
92
80
  - - ">="
93
81
  - !ruby/object:Gem::Version
94
- version: '0'
82
+ version: 1.1.22
95
83
  - !ruby/object:Gem::Dependency
96
- name: beaker-puppet
84
+ name: beaker-module_install_helper
97
85
  requirement: !ruby/object:Gem::Requirement
98
86
  requirements:
99
87
  - - ">="
@@ -107,7 +95,7 @@ dependencies:
107
95
  - !ruby/object:Gem::Version
108
96
  version: '0'
109
97
  - !ruby/object:Gem::Dependency
110
- name: beaker-puppet_install_helper
98
+ name: beaker-puppet
111
99
  requirement: !ruby/object:Gem::Requirement
112
100
  requirements:
113
101
  - - ">="
@@ -121,7 +109,7 @@ dependencies:
121
109
  - !ruby/object:Gem::Version
122
110
  version: '0'
123
111
  - !ruby/object:Gem::Dependency
124
- name: beaker-rspec
112
+ name: beaker-puppet_install_helper
125
113
  requirement: !ruby/object:Gem::Requirement
126
114
  requirements:
127
115
  - - ">="
@@ -135,7 +123,7 @@ dependencies:
135
123
  - !ruby/object:Gem::Version
136
124
  version: '0'
137
125
  - !ruby/object:Gem::Dependency
138
- name: beaker-vagrant
126
+ name: beaker-rspec
139
127
  requirement: !ruby/object:Gem::Requirement
140
128
  requirements:
141
129
  - - ">="
@@ -149,7 +137,7 @@ dependencies:
149
137
  - !ruby/object:Gem::Version
150
138
  version: '0'
151
139
  - !ruby/object:Gem::Dependency
152
- name: ed25519
140
+ name: beaker-vagrant
153
141
  requirement: !ruby/object:Gem::Requirement
154
142
  requirements:
155
143
  - - ">="
@@ -177,21 +165,21 @@ dependencies:
177
165
  - !ruby/object:Gem::Version
178
166
  version: '0.1'
179
167
  - !ruby/object:Gem::Dependency
180
- name: rbnacl
168
+ name: rake
181
169
  requirement: !ruby/object:Gem::Requirement
182
170
  requirements:
183
171
  - - ">="
184
172
  - !ruby/object:Gem::Version
185
- version: '4'
173
+ version: '0'
186
174
  type: :runtime
187
175
  prerelease: false
188
176
  version_requirements: !ruby/object:Gem::Requirement
189
177
  requirements:
190
178
  - - ">="
191
179
  - !ruby/object:Gem::Version
192
- version: '4'
180
+ version: '0'
193
181
  - !ruby/object:Gem::Dependency
194
- name: rbnacl-libsodium
182
+ name: serverspec
195
183
  requirement: !ruby/object:Gem::Requirement
196
184
  requirements:
197
185
  - - ">="
@@ -205,7 +193,7 @@ dependencies:
205
193
  - !ruby/object:Gem::Version
206
194
  version: '0'
207
195
  - !ruby/object:Gem::Dependency
208
- name: serverspec
196
+ name: winrm
209
197
  requirement: !ruby/object:Gem::Requirement
210
198
  requirements:
211
199
  - - ">="
@@ -219,19 +207,19 @@ dependencies:
219
207
  - !ruby/object:Gem::Version
220
208
  version: '0'
221
209
  - !ruby/object:Gem::Dependency
222
- name: winrm
210
+ name: puppetlabs_spec_helper
223
211
  requirement: !ruby/object:Gem::Requirement
224
212
  requirements:
225
213
  - - ">="
226
214
  - !ruby/object:Gem::Version
227
- version: '0'
228
- type: :runtime
215
+ version: 1.2.0
216
+ type: :development
229
217
  prerelease: false
230
218
  version_requirements: !ruby/object:Gem::Requirement
231
219
  requirements:
232
220
  - - ">="
233
221
  - !ruby/object:Gem::Version
234
- version: '0'
222
+ version: 1.2.0
235
223
  description: A package that depends on all the gems Vox Pupuli modules need and methods
236
224
  to simplify acceptance spec helpers
237
225
  email:
@@ -241,9 +229,12 @@ extensions: []
241
229
  extra_rdoc_files: []
242
230
  files:
243
231
  - lib/voxpupuli/acceptance.rb
232
+ - lib/voxpupuli/acceptance/examples.rb
233
+ - lib/voxpupuli/acceptance/facts.rb
244
234
  - lib/voxpupuli/acceptance/fixtures.rb
235
+ - lib/voxpupuli/acceptance/rake.rb
245
236
  - lib/voxpupuli/acceptance/spec_helper_acceptance.rb
246
- homepage: http://github.com/voxpupuli/voxpupuli-acceptance
237
+ homepage: https://github.com/voxpupuli/voxpupuli-acceptance
247
238
  licenses:
248
239
  - Apache-2.0
249
240
  metadata: {}
@@ -255,14 +246,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
255
246
  requirements:
256
247
  - - ">="
257
248
  - !ruby/object:Gem::Version
258
- version: '0'
249
+ version: '2.4'
250
+ - - "<"
251
+ - !ruby/object:Gem::Version
252
+ version: '4'
259
253
  required_rubygems_version: !ruby/object:Gem::Requirement
260
254
  requirements:
261
255
  - - ">="
262
256
  - !ruby/object:Gem::Version
263
257
  version: '0'
264
258
  requirements: []
265
- rubygems_version: 3.0.6
259
+ rubygems_version: 3.3.3
266
260
  signing_key:
267
261
  specification_version: 4
268
262
  summary: Helpers for acceptance testing Vox Pupuli modules