onceover 3.17.2 → 3.19.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/.gitattributes +2 -0
- data/.github/workflows/tests.yaml +40 -0
- data/.rubocop.yml +20 -2
- data/Gemfile +0 -13
- data/README.md +201 -110
- data/Rakefile +8 -5
- data/factsets/CentOS-8.3.2011-64.json +485 -0
- data/factsets/Debian-10.4-64.json +476 -0
- data/factsets/Debian-8.11-64.json +480 -0
- data/factsets/Debian-9.12-64.json +476 -0
- data/factsets/Ubuntu-20.04-64.json +504 -0
- data/factsets/Windows_Server-2008r2-64.json +184 -183
- data/factsets/Windows_Server-2012r2-64.json +165 -164
- data/factsets/windows-10-64.json +104 -103
- data/features/cache.feature +1 -1
- data/features/step_definitions/cache.rb +4 -4
- data/features/step_definitions/common.rb +38 -10
- data/features/step_definitions/init.rb +2 -2
- data/features/windows.feature +5 -0
- data/features/zzz_run.feature +22 -3
- data/lib/onceover/controlrepo.rb +10 -4
- data/lib/onceover/deploy.rb +3 -1
- data/lib/onceover/group.rb +3 -1
- data/lib/onceover/rspec/formatters.rb +6 -1
- data/lib/onceover/runner.rb +7 -6
- data/lib/onceover/test.rb +3 -2
- data/lib/onceover/testconfig.rb +28 -5
- data/onceover.gemspec +5 -2
- data/spec/fixtures/controlrepos/basic/manifests_alternate/site.pp +2 -0
- data/spec/fixtures/controlrepos/caching/Puppetfile +17 -17
- data/spec/fixtures/controlrepos/caching/manifests/site.pp +1 -0
- data/spec/fixtures/controlrepos/custom_puppetfile/Puppetfile.custom +3 -0
- data/spec/fixtures/controlrepos/custom_puppetfile/environment.conf +7 -0
- data/spec/fixtures/controlrepos/windows/Puppetfile +6 -1
- data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/choco.pp +9 -0
- data/templates/test_spec.rb.erb +1 -1
- metadata +75 -18
- data/.travis.yml +0 -19
- data/appveyor.yml +0 -38
data/lib/onceover/group.rb
CHANGED
@@ -60,6 +60,7 @@ class Onceover
|
|
60
60
|
@@all
|
61
61
|
end
|
62
62
|
|
63
|
+
# rubocop:disable Lint/DuplicateBranch
|
63
64
|
def self.valid_members?(members)
|
64
65
|
# Check that they are all the same type
|
65
66
|
# Also catch any errors to assume it's invalid
|
@@ -71,9 +72,10 @@ class Onceover
|
|
71
72
|
else
|
72
73
|
return false
|
73
74
|
end
|
74
|
-
rescue
|
75
|
+
rescue StandardError
|
75
76
|
return false
|
76
77
|
end
|
77
78
|
end
|
79
|
+
# rubocop:enable Lint/DuplicateBranch
|
78
80
|
end
|
79
81
|
end
|
@@ -12,7 +12,9 @@ class OnceoverFormatter
|
|
12
12
|
)
|
13
13
|
|
14
14
|
COMPILATION_ERROR = %r{error during compilation: (?<error>.*)}
|
15
|
+
# rubocop:disable Lint/MixedRegexpCaptureTypes
|
15
16
|
ERROR_WITH_LOCATION = %r{(?<error>.*?)\s(at )?(\((file: (?<file>.*?), )?line: (?<line>\d+)(, column: (?<column>\d+))?\))(; )?}
|
17
|
+
# rubocop:enable Lint/MixedRegexpCaptureTypes
|
16
18
|
ERROR_WITHOUT_LOCATION = %r{(?<error>.*?)\son node}
|
17
19
|
|
18
20
|
def initialize output
|
@@ -72,6 +74,8 @@ class OnceoverFormatter
|
|
72
74
|
@output << "\n"
|
73
75
|
end
|
74
76
|
|
77
|
+
# rubocop:disable Style/CombinableLoops
|
78
|
+
#
|
75
79
|
# This method takes a notification and formats it into a hash that can be
|
76
80
|
# printed easily
|
77
81
|
def extract_failures notification
|
@@ -90,6 +94,7 @@ class OnceoverFormatter
|
|
90
94
|
|
91
95
|
grouped
|
92
96
|
end
|
97
|
+
# rubocop:enable Style/CombinableLoops
|
93
98
|
|
94
99
|
# Extaracts data out of RSpec failres
|
95
100
|
def extract_failure_data(fails)
|
@@ -309,4 +314,4 @@ class FailureCollector
|
|
309
314
|
end
|
310
315
|
}
|
311
316
|
end
|
312
|
-
end
|
317
|
+
end
|
data/lib/onceover/runner.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'backticks'
|
2
|
+
require 'io/console'
|
2
3
|
|
3
4
|
class Onceover
|
4
5
|
class Runner
|
@@ -24,8 +25,8 @@ class Onceover
|
|
24
25
|
FileUtils.mkdir_p("#{@repo.tempdir}/spec/classes")
|
25
26
|
FileUtils.mkdir_p("#{@repo.tempdir}/spec/acceptance/nodesets")
|
26
27
|
|
27
|
-
# Copy
|
28
|
-
|
28
|
+
# Copy specified spec files over
|
29
|
+
@config.copy_spec_files(@repo)
|
29
30
|
|
30
31
|
# Create the Rakefile so that we can take advantage of the existing tasks
|
31
32
|
@config.write_rakefile(@repo.tempdir, "spec/classes/**/*_spec.rb")
|
@@ -36,8 +37,6 @@ class Onceover
|
|
36
37
|
# Create spec_helper_accpetance.rb
|
37
38
|
@config.write_spec_helper_acceptance("#{@repo.tempdir}/spec", @repo)
|
38
39
|
|
39
|
-
# TODO: Remove all tests that do not match set tags
|
40
|
-
|
41
40
|
if @mode.include?(:spec)
|
42
41
|
# Verify all of the spec tests
|
43
42
|
@config.spec_tests.each { |test| @config.verify_spec_test(@repo, test) }
|
@@ -83,8 +82,10 @@ class Onceover
|
|
83
82
|
ENV['RUBYOPT'] = ENV['RUBYOPT'].to_s + ' -W0'
|
84
83
|
end
|
85
84
|
|
86
|
-
|
87
|
-
|
85
|
+
# NOTE: This is the way to provide options to rspec according to:
|
86
|
+
# https://github.com/puppetlabs/puppetlabs_spec_helper/blob/master/lib/puppetlabs_spec_helper/rake_tasks.rb#L51
|
87
|
+
ENV['CI_SPEC_OPTIONS'] = ENV['CI_SPEC_OPTIONS'].to_s + @config.filter_tags.map { |tag| " --tag #{tag}" }.join unless @config.filter_tags.nil?
|
88
|
+
|
88
89
|
if @config.opts[:parallel]
|
89
90
|
logger.debug "Running #{@command_prefix}rake parallel_spec from #{@repo.tempdir}"
|
90
91
|
result = run_command(@command_prefix.strip.split, 'rake', 'parallel_spec')
|
data/lib/onceover/test.rb
CHANGED
@@ -25,10 +25,11 @@ class Onceover
|
|
25
25
|
@classes = []
|
26
26
|
@test_config = test_config
|
27
27
|
@test_config.delete('classes') # remove classes from the config
|
28
|
-
@tags = @test_config['tags']
|
29
28
|
|
30
29
|
# Make sure that tags are an array
|
31
|
-
@test_config['tags']
|
30
|
+
@test_config['tags'] ||= []
|
31
|
+
@test_config['tags'] = [@test_config['tags']].flatten
|
32
|
+
@tags = @test_config['tags']
|
32
33
|
|
33
34
|
# Get the nodes we are working on
|
34
35
|
if Onceover::Group.find(on_this)
|
data/lib/onceover/testconfig.rb
CHANGED
@@ -50,6 +50,7 @@ class Onceover
|
|
50
50
|
@before_conditions = config['before'] || []
|
51
51
|
@after_conditions = config['after']
|
52
52
|
@strict_variables = opts[:strict_variables] ? 'yes' : 'no'
|
53
|
+
@included_specs = [config['include_spec_files'] || ['**/*']].flatten
|
53
54
|
|
54
55
|
# Set dynamic defaults for format
|
55
56
|
if Array(opts[:format]) == [:defaults]
|
@@ -236,6 +237,19 @@ class Onceover
|
|
236
237
|
)
|
237
238
|
end
|
238
239
|
|
240
|
+
def copy_spec_files(repo)
|
241
|
+
source_files = @included_specs.map { |glob| Dir.glob "#{repo.spec_dir}/#{glob}" }.flatten.uniq
|
242
|
+
source_files.each do |source_file|
|
243
|
+
target_file = File.join(repo.tempdir, 'spec', source_file.sub(/^#{repo.spec_dir}/, ''))
|
244
|
+
if File.directory?(source_file)
|
245
|
+
FileUtils.cp_r source_file, target_file unless File.exists? target_file
|
246
|
+
else
|
247
|
+
FileUtils.mkdir_p File.dirname target_file
|
248
|
+
FileUtils.cp source_file, target_file
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
239
253
|
def create_fixtures_symlinks(repo)
|
240
254
|
logger.debug "Creating fixtures symlinks"
|
241
255
|
FileUtils.rm_rf("#{repo.tempdir}/spec/fixtures/modules")
|
@@ -275,16 +289,25 @@ class Onceover
|
|
275
289
|
# Remove tests that do not have matching tags
|
276
290
|
tests.keep_if do |test|
|
277
291
|
filter_list.any? do |filter|
|
278
|
-
|
279
|
-
test.send(method).include?(filter)
|
280
|
-
else
|
281
|
-
false
|
282
|
-
end
|
292
|
+
filter_test test, method, filter
|
283
293
|
end
|
284
294
|
end
|
285
295
|
end
|
286
296
|
end
|
287
297
|
tests
|
288
298
|
end
|
299
|
+
|
300
|
+
def filter_test(test, method, filter)
|
301
|
+
if test.send(method)
|
302
|
+
if method == 'tags' && filter.start_with?('~')
|
303
|
+
filter = filter.sub(/^~/, '')
|
304
|
+
! test.send(method).include?(filter)
|
305
|
+
else
|
306
|
+
test.send(method).include?(filter)
|
307
|
+
end
|
308
|
+
else
|
309
|
+
false
|
310
|
+
end
|
311
|
+
end
|
289
312
|
end
|
290
313
|
end
|
data/onceover.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "onceover"
|
7
|
-
s.version = "3.
|
7
|
+
s.version = "3.19.1"
|
8
8
|
s.authors = ["Dylan Ratcliffe"]
|
9
9
|
s.email = ["dylan.ratcliffe@puppet.com"]
|
10
10
|
s.homepage = "https://github.com/dylanratcliffe/onceover"
|
@@ -22,7 +22,6 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_runtime_dependency 'colored', '~> 1.2'
|
23
23
|
s.add_runtime_dependency 'cri', '>= 2.6'
|
24
24
|
s.add_runtime_dependency 'deep_merge', '>= 1.0.0'
|
25
|
-
s.add_runtime_dependency 'facter', '< 4.0.0'
|
26
25
|
s.add_runtime_dependency 'git'
|
27
26
|
s.add_runtime_dependency 'logging', '>= 2.0.0'
|
28
27
|
s.add_runtime_dependency 'multi_json', '~> 1.10'
|
@@ -37,4 +36,8 @@ Gem::Specification.new do |s|
|
|
37
36
|
s.add_runtime_dependency 'terminal-table', '>= 1.8.0'
|
38
37
|
s.add_runtime_dependency 'versionomy', '>= 0.5.0'
|
39
38
|
|
39
|
+
s.add_development_dependency 'cucumber', '~> 4.1'
|
40
|
+
s.add_development_dependency 'pry', '~> 0.13.1'
|
41
|
+
s.add_development_dependency 'rubocop', '~> 1.6', '>= 1.6.1'
|
42
|
+
s.add_development_dependency 'rubygems-tasks', '~> 0.2.5'
|
40
43
|
end
|
@@ -1,17 +1,17 @@
|
|
1
|
-
forge "http://forge.puppetlabs.com"
|
2
|
-
#
|
3
|
-
# I want to download some modules to check if r10k feature in Onceover works correctly.
|
4
|
-
#
|
5
|
-
|
6
|
-
# Versions should be updated to be the latest at the time you start
|
7
|
-
mod "puppetlabs/stdlib", '4.11.0'
|
8
|
-
|
9
|
-
# Modules from Git
|
10
|
-
# Examples: https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd#examples
|
11
|
-
mod 'apache',
|
12
|
-
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
13
|
-
:commit => '83401079053dca11d61945bd9beef9ecf7576cbf'
|
14
|
-
|
15
|
-
#mod 'apache',
|
16
|
-
# :git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
17
|
-
# :branch => 'docs_experiment'
|
1
|
+
forge "http://forge.puppetlabs.com"
|
2
|
+
#
|
3
|
+
# I want to download some modules to check if r10k feature in Onceover works correctly.
|
4
|
+
#
|
5
|
+
|
6
|
+
# Versions should be updated to be the latest at the time you start
|
7
|
+
mod "puppetlabs/stdlib", '4.11.0'
|
8
|
+
|
9
|
+
# Modules from Git
|
10
|
+
# Examples: https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd#examples
|
11
|
+
mod 'apache',
|
12
|
+
:git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
13
|
+
:commit => '83401079053dca11d61945bd9beef9ecf7576cbf'
|
14
|
+
|
15
|
+
#mod 'apache',
|
16
|
+
# :git => 'https://github.com/puppetlabs/puppetlabs-apache',
|
17
|
+
# :branch => 'docs_experiment'
|
@@ -1,3 +1,8 @@
|
|
1
1
|
forge "http://forge.puppetlabs.com"
|
2
2
|
|
3
|
-
mod 'puppetlabs-acl', '3.
|
3
|
+
mod 'puppetlabs-acl', '3.2.1'
|
4
|
+
mod 'puppetlabs-chocolatey', '5.2.0'
|
5
|
+
mod 'puppetlabs-stdlib', '6.5.0'
|
6
|
+
mod 'puppetlabs-powershell', '4.1.0'
|
7
|
+
mod 'puppetlabs-pwshlib', '0.6.3'
|
8
|
+
mod 'puppetlabs-registry', '3.2.0'
|
data/templates/test_spec.rb.erb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onceover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.19.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dylan Ratcliffe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backticks
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.0.0
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: facter
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "<"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 4.0.0
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "<"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 4.0.0
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: git
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -262,6 +248,68 @@ dependencies:
|
|
262
248
|
- - ">="
|
263
249
|
- !ruby/object:Gem::Version
|
264
250
|
version: 0.5.0
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: cucumber
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - "~>"
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '4.1'
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - "~>"
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '4.1'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: pry
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - "~>"
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: 0.13.1
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - "~>"
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: 0.13.1
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: rubocop
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - "~>"
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '1.6'
|
286
|
+
- - ">="
|
287
|
+
- !ruby/object:Gem::Version
|
288
|
+
version: 1.6.1
|
289
|
+
type: :development
|
290
|
+
prerelease: false
|
291
|
+
version_requirements: !ruby/object:Gem::Requirement
|
292
|
+
requirements:
|
293
|
+
- - "~>"
|
294
|
+
- !ruby/object:Gem::Version
|
295
|
+
version: '1.6'
|
296
|
+
- - ">="
|
297
|
+
- !ruby/object:Gem::Version
|
298
|
+
version: 1.6.1
|
299
|
+
- !ruby/object:Gem::Dependency
|
300
|
+
name: rubygems-tasks
|
301
|
+
requirement: !ruby/object:Gem::Requirement
|
302
|
+
requirements:
|
303
|
+
- - "~>"
|
304
|
+
- !ruby/object:Gem::Version
|
305
|
+
version: 0.2.5
|
306
|
+
type: :development
|
307
|
+
prerelease: false
|
308
|
+
version_requirements: !ruby/object:Gem::Requirement
|
309
|
+
requirements:
|
310
|
+
- - "~>"
|
311
|
+
- !ruby/object:Gem::Version
|
312
|
+
version: 0.2.5
|
265
313
|
description: Automatically generates tests for your Puppet code
|
266
314
|
email:
|
267
315
|
- dylan.ratcliffe@puppet.com
|
@@ -270,14 +318,14 @@ executables:
|
|
270
318
|
extensions: []
|
271
319
|
extra_rdoc_files: []
|
272
320
|
files:
|
321
|
+
- ".gitattributes"
|
322
|
+
- ".github/workflows/tests.yaml"
|
273
323
|
- ".gitignore"
|
274
324
|
- ".gitmodules"
|
275
325
|
- ".rubocop.yml"
|
276
|
-
- ".travis.yml"
|
277
326
|
- Gemfile
|
278
327
|
- README.md
|
279
328
|
- Rakefile
|
280
|
-
- appveyor.yml
|
281
329
|
- bin/onceover
|
282
330
|
- factsets/AIX-6.1-powerpc.json
|
283
331
|
- factsets/AIX-7.1-powerpc.json
|
@@ -287,10 +335,14 @@ files:
|
|
287
335
|
- factsets/CentOS-6.6-32.json
|
288
336
|
- factsets/CentOS-6.6-64.json
|
289
337
|
- factsets/CentOS-7.0-64.json
|
338
|
+
- factsets/CentOS-8.3.2011-64.json
|
339
|
+
- factsets/Debian-10.4-64.json
|
290
340
|
- factsets/Debian-6.0.10-32.json
|
291
341
|
- factsets/Debian-6.0.10-64.json
|
292
342
|
- factsets/Debian-7.8-32.json
|
293
343
|
- factsets/Debian-7.8-64.json
|
344
|
+
- factsets/Debian-8.11-64.json
|
345
|
+
- factsets/Debian-9.12-64.json
|
294
346
|
- factsets/RHEL-6.7.json
|
295
347
|
- factsets/RHEL-7.4.json
|
296
348
|
- factsets/SLES-11.3-64.json
|
@@ -300,6 +352,7 @@ files:
|
|
300
352
|
- factsets/Ubuntu-14.04-32.json
|
301
353
|
- factsets/Ubuntu-14.04-64.json
|
302
354
|
- factsets/Ubuntu-18.04-64.json
|
355
|
+
- factsets/Ubuntu-20.04-64.json
|
303
356
|
- factsets/Windows_Server-2008r2-64.json
|
304
357
|
- factsets/Windows_Server-2012r2-64.json
|
305
358
|
- factsets/solaris-10_u9-sparc-64.json
|
@@ -347,6 +400,7 @@ files:
|
|
347
400
|
- spec/fixtures/controlrepos/basic/hieradata/common.yaml
|
348
401
|
- spec/fixtures/controlrepos/basic/hieradata/nodes/example-node.yaml
|
349
402
|
- spec/fixtures/controlrepos/basic/manifests/site.pp
|
403
|
+
- spec/fixtures/controlrepos/basic/manifests_alternate/site.pp
|
350
404
|
- spec/fixtures/controlrepos/basic/site/profile/manifests/base.pp
|
351
405
|
- spec/fixtures/controlrepos/basic/site/profile/manifests/example.pp
|
352
406
|
- spec/fixtures/controlrepos/basic/site/role/manifests/database_server.pp
|
@@ -374,6 +428,8 @@ files:
|
|
374
428
|
- spec/fixtures/controlrepos/caching/spec/r10k.yaml
|
375
429
|
- spec/fixtures/controlrepos/control_branch/Puppetfile
|
376
430
|
- spec/fixtures/controlrepos/control_branch/environment.conf
|
431
|
+
- spec/fixtures/controlrepos/custom_puppetfile/Puppetfile.custom
|
432
|
+
- spec/fixtures/controlrepos/custom_puppetfile/environment.conf
|
377
433
|
- spec/fixtures/controlrepos/factsets/environment.conf
|
378
434
|
- spec/fixtures/controlrepos/factsets/site/profile/manifests/base.pp
|
379
435
|
- spec/fixtures/controlrepos/factsets/site/role/manifests/example.pp
|
@@ -394,6 +450,7 @@ files:
|
|
394
450
|
- spec/fixtures/controlrepos/windows/Puppetfile
|
395
451
|
- spec/fixtures/controlrepos/windows/environment.conf
|
396
452
|
- spec/fixtures/controlrepos/windows/site-modules/role/manifests/acl.pp
|
453
|
+
- spec/fixtures/controlrepos/windows/site-modules/role/manifests/choco.pp
|
397
454
|
- spec/fixtures/controlrepos/windows/site-modules/role/manifests/groups.pp
|
398
455
|
- spec/fixtures/controlrepos/windows/site-modules/role/manifests/users.pp
|
399
456
|
- spec/fixtures/controlrepos/windows/site/role/manifests/groups.pp
|