onceover 3.17.0 β 3.18.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/.travis.yml +3 -3
- data/README.md +13 -1
- data/factsets/Windows_Server-2008r2-64.json +1 -0
- data/factsets/Windows_Server-2012r2-64.json +1 -0
- data/factsets/windows-10-64.json +2 -1
- data/features/step_definitions/common.rb +11 -0
- data/features/windows.feature +30 -0
- data/features/{run.feature β zzz_run.feature} +0 -0
- data/lib/onceover/cli/run.rb +1 -0
- data/lib/onceover/controlrepo.rb +29 -33
- data/lib/onceover/group.rb +1 -1
- data/lib/onceover/runner.rb +15 -5
- data/lib/onceover/testconfig.rb +15 -1
- data/onceover.gemspec +2 -2
- data/spec/fixtures/controlrepos/windows/Gemfile +3 -0
- data/spec/fixtures/controlrepos/windows/Puppetfile +3 -0
- data/spec/fixtures/controlrepos/windows/environment.conf +1 -0
- data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/acl.pp +12 -0
- data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/groups.pp +8 -0
- data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/users.pp +9 -0
- data/spec/fixtures/controlrepos/windows/site/role/manifests/groups.pp +8 -0
- data/spec/fixtures/controlrepos/windows/site/role/manifests/users.pp +9 -0
- data/spec/fixtures/controlrepos/windows/spec/onceover.yaml +24 -0
- data/templates/test_spec.rb.erb +60 -0
- metadata +21 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: de8966479024e0fed834f57d971ed1e83f7654b2e2b06e628806348ee8b9af72
|
|
4
|
+
data.tar.gz: 9c3e22ad6ebbb6d7e6ff995d8a07905bee23ce68bc1cf1847e9f0ddbd3ab7edc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: de06f625665dc3f2da38172935e76317f815d4557727bd7d5e3817cc39c143646b605193eb8ffa167d4dc4de95f6b3a7340b6a52eab3c25083e00b1384aa7883
|
|
7
|
+
data.tar.gz: 75b4bdcd5c0b44bec806b5fbf7af1fd975c6ab0a1e85f87d3ca2712770622245270d067405bd005b770b97ac6ec9cc03e269b802900c1de9b6d57b10cc8cc4eb
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Onceover is a tool to automatically run basic tests on an entire Puppet controlrepo. It includes automatic parsing of the `Puppetfile`, `environment.conf` and others in order to stop silly mistakes ever reaching your Puppet Master!
|
|
6
6
|
|
|
7
|
-
**πΊπ₯³ New in v3.
|
|
7
|
+
**πΊπ₯³ New in v3.17.1: Heaps more Windows fixes! Windows code is now more likely to compile on Non-Windows.**
|
|
8
8
|
|
|
9
9
|
## Table of Contents
|
|
10
10
|
|
|
@@ -231,6 +231,13 @@ It's important to note that in order to reference a group using the *include/exc
|
|
|
231
231
|
|
|
232
232
|
One or many tags that tests in this group should be tagged with. This allows you to run only certain tests using the `--tags` command line parameter. **NOTE:** Custom spec tests will always be run as they are not subject to tags
|
|
233
233
|
|
|
234
|
+
**include_spec_files** *Default: [**/*]*
|
|
235
|
+
|
|
236
|
+
Glob to select additionnal files to be run during `onceover` spec tests.
|
|
237
|
+
|
|
238
|
+
Default is to select all files located in the repo spec directory, usually `spec/`.
|
|
239
|
+
If you have some RSpec tests that depend on a different RSpec configuration than `onceover` or want, for example, to have a different job in your CI to run your own unit tests, you can use this option to select which spec files to run during `onceover` spec tests.
|
|
240
|
+
|
|
234
241
|
### factsets
|
|
235
242
|
|
|
236
243
|
This gem comes with a few pre-canned factsets. These are listed under the `nodes` sections of `onceover.yaml` when you run `onceover init`. You can also add your own factsets by putting them in:
|
|
@@ -700,3 +707,8 @@ Cheers to all of those who helped out:
|
|
|
700
707
|
- @raphink
|
|
701
708
|
- @tequeter
|
|
702
709
|
- @alexjfisher
|
|
710
|
+
- @smortex
|
|
711
|
+
- @16c7x
|
|
712
|
+
- @neomilium
|
|
713
|
+
- @chlawren
|
|
714
|
+
|
data/factsets/windows-10-64.json
CHANGED
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
"rubysitedir": "C:/tools/ruby24/lib/ruby/site_ruby/2.4.0",
|
|
84
84
|
"rubyversion": "2.4.3",
|
|
85
85
|
"system32": "C:\\Windows\\system32",
|
|
86
|
+
"choco_install_path": "C:\\ProgramData\\chocolatey",
|
|
86
87
|
"system_uptime": {
|
|
87
88
|
"seconds": 1113359,
|
|
88
89
|
"hours": 309,
|
|
@@ -100,4 +101,4 @@
|
|
|
100
101
|
},
|
|
101
102
|
"timestamp": "2018-12-10T21:43:07.468533000+00:00",
|
|
102
103
|
"expiration": "2018-12-10T22:13:07.468533000+00:00"
|
|
103
|
-
}
|
|
104
|
+
}
|
|
@@ -37,6 +37,17 @@ When(/^I run onceover command "([^"]*)" with class "([^"]*)"$/) do |command, cl
|
|
|
37
37
|
@cmd.run
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
# The below can be used to skip tests if they only work on one os
|
|
41
|
+
When(/^test osfamily is "(\w*)"$/) do |osfamily|
|
|
42
|
+
require 'facter'
|
|
43
|
+
pending unless Facter.value(:os)['family'] == osfamily
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
When(/^test osfamily is not "(\w*)"$/) do |osfamily|
|
|
47
|
+
require 'facter'
|
|
48
|
+
pending if Facter.value(:os)['family'] == osfamily
|
|
49
|
+
end
|
|
50
|
+
|
|
40
51
|
Then(/^I see help for commands: "([^"]*)"$/) do |commands|
|
|
41
52
|
# Get chunk of output between COMMANDS and OPTION, there should be help section
|
|
42
53
|
commands_help = @cmd.output[/COMMANDS(.*)OPTIONS/m, 1]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
@windows
|
|
2
|
+
Feature: Run onceover with windows
|
|
3
|
+
Onceover should allow to run rspec and acceptance test for all profvile and role classes
|
|
4
|
+
or for any part of them. Use should set if he wants to see only summary of tests or full
|
|
5
|
+
log info.
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given onceover executable
|
|
9
|
+
|
|
10
|
+
Scenario: Run with common Windows code
|
|
11
|
+
Given control repo "windows"
|
|
12
|
+
When I run onceover command "run spec" with class "role::users"
|
|
13
|
+
Then I should not see any errors
|
|
14
|
+
|
|
15
|
+
Scenario: Run with common Windows code without workarounds
|
|
16
|
+
Given existing control repo "windows"
|
|
17
|
+
When I run onceover command "run spec --no_workarounds" with class "role::users"
|
|
18
|
+
And test osfamily is not "windows"
|
|
19
|
+
Then Onceover should exit 1
|
|
20
|
+
|
|
21
|
+
Scenario: Compiling a windows role with groups that is valid should compile
|
|
22
|
+
Given control repo "windows"
|
|
23
|
+
When I run onceover command "run spec" with class "role::groups"
|
|
24
|
+
Then I should not see any errors
|
|
25
|
+
|
|
26
|
+
Scenario: Compiling a windows role with users that is valid should compile
|
|
27
|
+
Given control repo "windows"
|
|
28
|
+
When I run onceover command "run spec" with class "role::users"
|
|
29
|
+
Then I should not see any errors
|
|
30
|
+
|
|
File without changes
|
data/lib/onceover/cli/run.rb
CHANGED
|
@@ -42,6 +42,7 @@ This includes deploying using r10k and running all custom tests.
|
|
|
42
42
|
|
|
43
43
|
optional :p, :parallel, 'Runs spec tests in parallel. This increases speed at the cost of poorly formatted logs and irrelevant junit output.'
|
|
44
44
|
optional nil, :format, 'Which RSpec formatter to use, valid options are: documentation, progress, FailureCollector, OnceoverFormatter. You also specify this multiple times', multiple: true, default: :defaults
|
|
45
|
+
optional nil, :no_workarounds, 'Disables workarounds that have been added for convenience to get around common RSPec issues such as https://github.com/rodjek/rspec-puppet/issues/665'
|
|
45
46
|
|
|
46
47
|
run do |opts, args, cmd|
|
|
47
48
|
repo = Onceover::Controlrepo.new(opts)
|
data/lib/onceover/controlrepo.rb
CHANGED
|
@@ -206,7 +206,7 @@ class Onceover
|
|
|
206
206
|
end
|
|
207
207
|
|
|
208
208
|
def print_puppetfile_table
|
|
209
|
-
require '
|
|
209
|
+
require 'terminal-table'
|
|
210
210
|
require 'versionomy'
|
|
211
211
|
require 'colored'
|
|
212
212
|
require 'r10k/puppetfile'
|
|
@@ -221,48 +221,44 @@ class Onceover
|
|
|
221
221
|
threads = []
|
|
222
222
|
puppetfile.modules.each do |mod|
|
|
223
223
|
threads << Thread.new do
|
|
224
|
-
|
|
224
|
+
row = []
|
|
225
225
|
logger.debug "Loading data for #{mod.full_name}"
|
|
226
|
-
|
|
226
|
+
row << mod.full_name
|
|
227
227
|
if mod.is_a?(R10K::Module::Forge)
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
228
|
+
row << mod.expected_version
|
|
229
|
+
row << mod.v3_module.current_release.version
|
|
230
|
+
|
|
231
|
+
current = Versionomy.parse(mod.expected_version)
|
|
232
|
+
latest = Versionomy.parse(mod.v3_module.current_release.version)
|
|
233
|
+
row << if current.major < latest.major
|
|
234
|
+
"Major".red
|
|
235
|
+
elsif current.minor < latest.minor
|
|
236
|
+
"Minor".yellow
|
|
237
|
+
elsif current.tiny < latest.tiny
|
|
238
|
+
"Tiny".green
|
|
239
|
+
else
|
|
240
|
+
"No".green
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
row << mod.v3_module.endorsement
|
|
231
244
|
superseded_by = mod.v3_module.superseded_by
|
|
232
|
-
|
|
233
|
-
current = Versionomy.parse(return_hash[:current_version])
|
|
234
|
-
latest = Versionomy.parse(return_hash[:latest_version])
|
|
235
|
-
if current.major < latest.major
|
|
236
|
-
return_hash[:out_of_date] = "Major".red
|
|
237
|
-
elsif current.minor < latest.minor
|
|
238
|
-
return_hash[:out_of_date] = "Minor".yellow
|
|
239
|
-
elsif current.tiny < latest.tiny
|
|
240
|
-
return_hash[:out_of_date] = "Tiny".green
|
|
241
|
-
else
|
|
242
|
-
return_hash[:out_of_date] = "No".green
|
|
243
|
-
end
|
|
245
|
+
row << (superseded_by.nil? ? '' : superseded_by[:slug])
|
|
244
246
|
else
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
247
|
+
row << "N/A"
|
|
248
|
+
row << "N/A"
|
|
249
|
+
row << "N/A"
|
|
250
|
+
row << "N/A"
|
|
251
|
+
row << "N/A"
|
|
250
252
|
end
|
|
251
|
-
output_array <<
|
|
253
|
+
output_array << row
|
|
252
254
|
end
|
|
253
255
|
end
|
|
254
256
|
|
|
255
257
|
threads.map(&:join)
|
|
256
258
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
{:current_version => {:display_name => "Current Version"}},
|
|
261
|
-
{:latest_version => {:display_name => "Latest Version"}},
|
|
262
|
-
{:out_of_date => {:display_name => "Out of Date?"}},
|
|
263
|
-
{:endorsement => {:display_name => "Endorsement"}},
|
|
264
|
-
{:superseded_by => {:display_name => "Superseded by"}}
|
|
265
|
-
)
|
|
259
|
+
output_array.sort_by! { |line| line[0] }
|
|
260
|
+
|
|
261
|
+
puts Terminal::Table.new(headings: ["Full Name", "Current Version", "Latest Version", "Out of Date?", "Endorsement", "Superseded by"], rows: output_array)
|
|
266
262
|
end
|
|
267
263
|
|
|
268
264
|
def update_puppetfile
|
data/lib/onceover/group.rb
CHANGED
data/lib/onceover/runner.rb
CHANGED
|
@@ -24,8 +24,8 @@ class Onceover
|
|
|
24
24
|
FileUtils.mkdir_p("#{@repo.tempdir}/spec/classes")
|
|
25
25
|
FileUtils.mkdir_p("#{@repo.tempdir}/spec/acceptance/nodesets")
|
|
26
26
|
|
|
27
|
-
# Copy
|
|
28
|
-
|
|
27
|
+
# Copy specified spec files over
|
|
28
|
+
@config.copy_spec_files(@repo)
|
|
29
29
|
|
|
30
30
|
# Create the Rakefile so that we can take advantage of the existing tasks
|
|
31
31
|
@config.write_rakefile(@repo.tempdir, "spec/classes/**/*_spec.rb")
|
|
@@ -87,10 +87,11 @@ class Onceover
|
|
|
87
87
|
#`bin/rake spec_standalone`
|
|
88
88
|
if @config.opts[:parallel]
|
|
89
89
|
logger.debug "Running #{@command_prefix}rake parallel_spec from #{@repo.tempdir}"
|
|
90
|
-
result =
|
|
90
|
+
result = run_command(@command_prefix.strip.split, 'rake', 'parallel_spec')
|
|
91
91
|
else
|
|
92
|
+
require 'io/console'
|
|
92
93
|
logger.debug "Running #{@command_prefix}rake spec_standalone from #{@repo.tempdir}"
|
|
93
|
-
result =
|
|
94
|
+
result = run_command(@command_prefix.strip.split, 'rake', 'spec_standalone')
|
|
94
95
|
end
|
|
95
96
|
|
|
96
97
|
# Reset env to previous state if we modified it
|
|
@@ -117,11 +118,20 @@ class Onceover
|
|
|
117
118
|
#`bundle install --binstubs`
|
|
118
119
|
#`bin/rake spec_standalone`
|
|
119
120
|
logger.debug "Running #{@command_prefix}rake acceptance from #{@repo.tempdir}"
|
|
120
|
-
result =
|
|
121
|
+
result = run_command(@command_prefix.strip.split, 'rake', 'acceptance')
|
|
121
122
|
end
|
|
122
123
|
|
|
123
124
|
# Finally exit and preserve the exit code
|
|
124
125
|
exit result.status.exitstatus
|
|
125
126
|
end
|
|
127
|
+
|
|
128
|
+
def run_command(*args)
|
|
129
|
+
begin
|
|
130
|
+
STDERR.raw! if STDERR.isatty
|
|
131
|
+
result = Backticks::Runner.new(interactive: true).run(args.flatten).join
|
|
132
|
+
ensure
|
|
133
|
+
STDERR.cooked! if STDERR.isatty
|
|
134
|
+
end
|
|
135
|
+
end
|
|
126
136
|
end
|
|
127
137
|
end
|
data/lib/onceover/testconfig.rb
CHANGED
|
@@ -47,9 +47,10 @@ class Onceover
|
|
|
47
47
|
@acceptance_tests = []
|
|
48
48
|
@opts = opts
|
|
49
49
|
@mock_functions = config['functions']
|
|
50
|
-
@before_conditions = config['before']
|
|
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")
|
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.18.1"
|
|
8
8
|
s.authors = ["Dylan Ratcliffe"]
|
|
9
9
|
s.email = ["dylan.ratcliffe@puppet.com"]
|
|
10
10
|
s.homepage = "https://github.com/dylanratcliffe/onceover"
|
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
|
|
|
34
34
|
s.add_runtime_dependency 'rspec', '>= 3.0.0'
|
|
35
35
|
s.add_runtime_dependency 'rspec-puppet', ">= 2.4.0"
|
|
36
36
|
s.add_runtime_dependency 'rspec_junit_formatter', '>= 0.2.0'
|
|
37
|
-
s.add_runtime_dependency '
|
|
37
|
+
s.add_runtime_dependency 'terminal-table', '>= 1.8.0'
|
|
38
38
|
s.add_runtime_dependency 'versionomy', '>= 0.5.0'
|
|
39
39
|
|
|
40
40
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
modulepath = site-modules:modules:$basemodulepath
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class role::acl {
|
|
2
|
+
# ACL often causes failures such as this:
|
|
3
|
+
# https://github.com/rodjek/rspec-puppet/issues/665
|
|
4
|
+
#
|
|
5
|
+
# Onceover should handle this out of the box
|
|
6
|
+
acl { 'L:\\SQLBackup':
|
|
7
|
+
inherit_parent_permissions => false,
|
|
8
|
+
permissions => [
|
|
9
|
+
{ 'identity' => 'foo', 'rights' => ['read'] }
|
|
10
|
+
],
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Classes to be tested
|
|
2
|
+
classes:
|
|
3
|
+
- /role::/
|
|
4
|
+
|
|
5
|
+
# Nodes to tests classes on, this refers to a 'factset' or 'nodeset'
|
|
6
|
+
# depending on whether you are running 'spec' or 'acceptance' tests
|
|
7
|
+
nodes:
|
|
8
|
+
- Windows_Server-2012r2-64
|
|
9
|
+
- windows-10-64
|
|
10
|
+
- Windows_Server-2008r2-64
|
|
11
|
+
|
|
12
|
+
# You can group classes here to save typing
|
|
13
|
+
class_groups:
|
|
14
|
+
|
|
15
|
+
# You can group nodes here to save typing
|
|
16
|
+
# We have created a 'non_windows_nodes' group because we can't
|
|
17
|
+
# give you Windows vagrant boxes to test with because licensing,
|
|
18
|
+
# we can give you fact sets though so go crazy with spec testing!
|
|
19
|
+
node_groups:
|
|
20
|
+
|
|
21
|
+
test_matrix:
|
|
22
|
+
- all_nodes:
|
|
23
|
+
classes: "all_classes"
|
|
24
|
+
tests: "spec"
|
data/templates/test_spec.rb.erb
CHANGED
|
@@ -29,6 +29,7 @@ describe "<%= cls.name %>" do
|
|
|
29
29
|
end
|
|
30
30
|
<% end -%>
|
|
31
31
|
|
|
32
|
+
<% unless opts[:no_workarounds] -%>
|
|
32
33
|
before :each do
|
|
33
34
|
# Curtrently there is some code within Puppet that will try to execute
|
|
34
35
|
# commands when compiling a catalog even though it shouldn't. One example is
|
|
@@ -41,7 +42,66 @@ describe "<%= cls.name %>" do
|
|
|
41
42
|
unless File.exist? expected_null_file
|
|
42
43
|
allow(Puppet::Util::Execution).to receive(:execute).and_raise(Puppet::ExecutionFailure.new("Onceover caused this"))
|
|
43
44
|
end
|
|
45
|
+
|
|
46
|
+
# The windows ACL module causes issues when compiled on other platforms
|
|
47
|
+
# These are detailed in the following ticket:
|
|
48
|
+
# https://github.com/rodjek/rspec-puppet/issues/665
|
|
49
|
+
#
|
|
50
|
+
# The below should work around this common issue
|
|
51
|
+
if Puppet::Type.type(:acl)
|
|
52
|
+
allow_any_instance_of(Puppet::Type.type(:acl).provider(:windows)).to receive(:validate)
|
|
53
|
+
allow_any_instance_of(Puppet::Type.type(:acl).provider(:windows)).to receive(:respond_to?).with(:get_account_name).and_return(false)
|
|
54
|
+
allow_any_instance_of(Puppet::Type.type(:acl).provider(:windows)).to receive(:respond_to?).with(:get_group_name).and_return(false)
|
|
55
|
+
allow_any_instance_of(Puppet::Type.type(:acl).provider(:windows)).to receive(:respond_to?).with(:validate).and_return(true)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# The windows_adsi provider also has an issue where the contructor takes
|
|
59
|
+
# a different number of arguments depending on whether the ADSI
|
|
60
|
+
# underlying connectivity exists. This causes the following error:
|
|
61
|
+
#
|
|
62
|
+
# wrong number of arguments (given 1, expected 0)
|
|
63
|
+
#
|
|
64
|
+
# This fixes that if we aren't using Windows
|
|
65
|
+
begin
|
|
66
|
+
# Test to see if this works without modification
|
|
67
|
+
require 'puppet/util/windows'
|
|
68
|
+
require 'puppet/util/windows/adsi'
|
|
69
|
+
Puppet::Util::Windows::ADSI.computer_name
|
|
70
|
+
rescue LoadError, StandardError
|
|
71
|
+
# Declare an entire mocked module because for some reason we can't load it unless we are on Windows
|
|
72
|
+
module Puppet::Util::Windows
|
|
73
|
+
module ADSI
|
|
74
|
+
class ADSIObject; end
|
|
75
|
+
class User < ADSIObject; end
|
|
76
|
+
class UserProfile; end
|
|
77
|
+
class Group < ADSIObject; end
|
|
78
|
+
end
|
|
79
|
+
module File; end
|
|
80
|
+
module Registry
|
|
81
|
+
end
|
|
82
|
+
module SID
|
|
83
|
+
class Principal; end
|
|
84
|
+
end
|
|
85
|
+
class EventLog; end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Mock commonly used things
|
|
89
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_sid).and_return('S-1-5-32-544')
|
|
90
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(nil)
|
|
91
|
+
|
|
92
|
+
allow_any_instance_of(Puppet::Util::Windows::ADSI::User).to receive(:initialize)
|
|
93
|
+
allow_any_instance_of(Puppet::Util::Windows::ADSI::User).to receive(:groups).and_return([])
|
|
94
|
+
allow_any_instance_of(Puppet::Util::Windows::ADSI::User).to receive(:name_sid_hash).and_return({})
|
|
95
|
+
|
|
96
|
+
# Group instance methods
|
|
97
|
+
allow_any_instance_of(Puppet::Util::Windows::ADSI::Group).to receive(:members).and_return([])
|
|
98
|
+
allow_any_instance_of(Puppet::Util::Windows::ADSI::Group).to receive(:members_sids).and_return([])
|
|
99
|
+
|
|
100
|
+
# Class methods
|
|
101
|
+
allow(Puppet::Util::Windows::ADSI::Group).to receive(:name_sid_hash).and_return({})
|
|
102
|
+
end
|
|
44
103
|
end
|
|
104
|
+
<% end -%>
|
|
45
105
|
|
|
46
106
|
<% if @after_conditions -%>
|
|
47
107
|
after :each do
|
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.18.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dylan Ratcliffe
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-09-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: backticks
|
|
@@ -235,19 +235,19 @@ dependencies:
|
|
|
235
235
|
- !ruby/object:Gem::Version
|
|
236
236
|
version: 0.2.0
|
|
237
237
|
- !ruby/object:Gem::Dependency
|
|
238
|
-
name:
|
|
238
|
+
name: terminal-table
|
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
|
240
240
|
requirements:
|
|
241
241
|
- - ">="
|
|
242
242
|
- !ruby/object:Gem::Version
|
|
243
|
-
version: 1.
|
|
243
|
+
version: 1.8.0
|
|
244
244
|
type: :runtime
|
|
245
245
|
prerelease: false
|
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
|
247
247
|
requirements:
|
|
248
248
|
- - ">="
|
|
249
249
|
- !ruby/object:Gem::Version
|
|
250
|
-
version: 1.
|
|
250
|
+
version: 1.8.0
|
|
251
251
|
- !ruby/object:Gem::Dependency
|
|
252
252
|
name: versionomy
|
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -310,7 +310,6 @@ files:
|
|
|
310
310
|
- features/formatting.feature
|
|
311
311
|
- features/help.feature
|
|
312
312
|
- features/init.feature
|
|
313
|
-
- features/run.feature
|
|
314
313
|
- features/show.feature
|
|
315
314
|
- features/step_definitions/cache.rb
|
|
316
315
|
- features/step_definitions/common.rb
|
|
@@ -321,6 +320,8 @@ files:
|
|
|
321
320
|
- features/support/command_helper.rb
|
|
322
321
|
- features/support/controlrepo_helper.rb
|
|
323
322
|
- features/support/env.rb
|
|
323
|
+
- features/windows.feature
|
|
324
|
+
- features/zzz_run.feature
|
|
324
325
|
- lib/onceover/beaker.rb
|
|
325
326
|
- lib/onceover/beaker/spec_helper.rb
|
|
326
327
|
- lib/onceover/class.rb
|
|
@@ -389,6 +390,15 @@ files:
|
|
|
389
390
|
- spec/fixtures/controlrepos/function_mocking/site/role/manifests/test_new_functions.pp
|
|
390
391
|
- spec/fixtures/controlrepos/function_mocking/spec/onceover.yaml
|
|
391
392
|
- spec/fixtures/controlrepos/minimal/environment.conf
|
|
393
|
+
- spec/fixtures/controlrepos/windows/Gemfile
|
|
394
|
+
- spec/fixtures/controlrepos/windows/Puppetfile
|
|
395
|
+
- spec/fixtures/controlrepos/windows/environment.conf
|
|
396
|
+
- spec/fixtures/controlrepos/windows/site-modules/role/manifests/acl.pp
|
|
397
|
+
- spec/fixtures/controlrepos/windows/site-modules/role/manifests/groups.pp
|
|
398
|
+
- spec/fixtures/controlrepos/windows/site-modules/role/manifests/users.pp
|
|
399
|
+
- spec/fixtures/controlrepos/windows/site/role/manifests/groups.pp
|
|
400
|
+
- spec/fixtures/controlrepos/windows/site/role/manifests/users.pp
|
|
401
|
+
- spec/fixtures/controlrepos/windows/spec/onceover.yaml
|
|
392
402
|
- spec/onceover/controlrepo_spec.rb
|
|
393
403
|
- spec/spec_helper.rb
|
|
394
404
|
- templates/.fixtures.yml.erb
|
|
@@ -408,7 +418,7 @@ homepage: https://github.com/dylanratcliffe/onceover
|
|
|
408
418
|
licenses:
|
|
409
419
|
- Apache-2.0
|
|
410
420
|
metadata: {}
|
|
411
|
-
post_install_message:
|
|
421
|
+
post_install_message:
|
|
412
422
|
rdoc_options: []
|
|
413
423
|
require_paths:
|
|
414
424
|
- lib
|
|
@@ -423,8 +433,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
423
433
|
- !ruby/object:Gem::Version
|
|
424
434
|
version: '0'
|
|
425
435
|
requirements: []
|
|
426
|
-
|
|
427
|
-
|
|
436
|
+
rubyforge_project:
|
|
437
|
+
rubygems_version: 2.7.6.2
|
|
438
|
+
signing_key:
|
|
428
439
|
specification_version: 4
|
|
429
440
|
summary: Testing tools for Puppet controlrepos
|
|
430
441
|
test_files: []
|