onceover 3.17.0 β†’ 3.18.1

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: 68843ce722d5b55114b8497d3cfa6044d062e1623d4580d12a0171d6e6f835f2
4
- data.tar.gz: 1cbd81319ab148ecb755218149c674a144de07abf533d8ea569a305b0f23e8f7
3
+ metadata.gz: de8966479024e0fed834f57d971ed1e83f7654b2e2b06e628806348ee8b9af72
4
+ data.tar.gz: 9c3e22ad6ebbb6d7e6ff995d8a07905bee23ce68bc1cf1847e9f0ddbd3ab7edc
5
5
  SHA512:
6
- metadata.gz: a9a9acaee5e37f28ae398e5ed191ef879b8dcaed21f8483b0712bfb126ee18514caa517f4feb3984d6136ed9b35fe27c2e8577d5de0ab91a86bc8c95b3506399
7
- data.tar.gz: 941c9fc0533641f3f74a5daa1806ebd9e72116ff5ed01d10b5dce7641990f573e07b14072a8d4693da4ac086695830f196a5a6d4a757b5843aae8ecfe7bd7ecc
6
+ metadata.gz: de06f625665dc3f2da38172935e76317f815d4557727bd7d5e3817cc39c143646b605193eb8ffa167d4dc4de95f6b3a7340b6a52eab3c25083e00b1384aa7883
7
+ data.tar.gz: 75b4bdcd5c0b44bec806b5fbf7af1fd975c6ab0a1e85f87d3ca2712770622245270d067405bd005b770b97ac6ec9cc03e269b802900c1de9b6d57b10cc8cc4eb
@@ -11,9 +11,9 @@ bundler_args: --path vendor/bundle
11
11
  matrix:
12
12
  include:
13
13
  # 2017.3 -> 2018.1
14
- - rvm: 2.4.4
14
+ - rvm: 2.4.5
15
15
  env: PUPPET_VERSION="~>5.0"
16
16
 
17
- # 2019.0 -> now
18
- - rvm: 2.5.7
17
+ # 2019.0 -> 2019.8
18
+ - rvm: 2.5.8
19
19
  env: PUPPET_VERSION="~>6.0"
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.16.0: Multi-threaded module downloads!! See [r10k config](#r10k-config) to enable**
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
+
@@ -162,6 +162,7 @@
162
162
  "staging_http_get": "powershell",
163
163
  "staging_windir": "C:\\ProgramData\\staging",
164
164
  "system32": "C:\\Windows\\system32",
165
+ "choco_install_path": "C:\\ProgramData\\chocolatey",
165
166
  "system_uptime": {
166
167
  "days": 0,
167
168
  "hours": 0,
@@ -143,6 +143,7 @@
143
143
  "rubyversion": "2.1.7",
144
144
  "serialnumber": "0",
145
145
  "system32": "C:\\Windows\\system32",
146
+ "choco_install_path": "C:\\ProgramData\\chocolatey",
146
147
  "system_uptime": {
147
148
  "days": 0,
148
149
  "hours": 0,
@@ -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
+
@@ -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)
@@ -206,7 +206,7 @@ class Onceover
206
206
  end
207
207
 
208
208
  def print_puppetfile_table
209
- require 'table_print'
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
- return_hash = {}
224
+ row = []
225
225
  logger.debug "Loading data for #{mod.full_name}"
226
- return_hash[:full_name] = mod.full_name
226
+ row << mod.full_name
227
227
  if mod.is_a?(R10K::Module::Forge)
228
- return_hash[:current_version] = mod.expected_version
229
- return_hash[:latest_version] = mod.v3_module.current_release.version
230
- return_hash[:endorsement] = mod.v3_module.endorsement
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
- return_hash[:superseded_by] = superseded_by.nil? ? '' : superseded_by[:slug]
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
- return_hash[:current_version] = "N/A"
246
- return_hash[:latest_version] = "N/A"
247
- return_hash[:out_of_date] = "N/A"
248
- return_hash[:endorsement] = "N/A"
249
- return_hash[:superseded_by] = "N/A"
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 << return_hash
253
+ output_array << row
252
254
  end
253
255
  end
254
256
 
255
257
  threads.map(&:join)
256
258
 
257
- tp(
258
- output_array,
259
- {:full_name => {:display_name => "Full Name"}},
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
@@ -71,7 +71,7 @@ class Onceover
71
71
  else
72
72
  return false
73
73
  end
74
- rescue StandardErroor
74
+ rescue StandardError
75
75
  return false
76
76
  end
77
77
  end
@@ -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 our entire spec directory over
28
- FileUtils.cp_r("#{@repo.spec_dir}", "#{@repo.tempdir}")
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 = Backticks::Runner.new(interactive:true).run(@command_prefix.strip.split, 'rake', 'parallel_spec').join
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 = Backticks::Runner.new(interactive:true).run(@command_prefix.strip.split, 'rake', 'spec_standalone').join
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 = Backticks::Runner.new(interactive:true).run(@command_prefix.strip.split, 'rake', 'acceptance').join
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
@@ -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")
@@ -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.17.0"
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 'table_print', '>= 1.0.0'
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,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'onceover'
@@ -0,0 +1,3 @@
1
+ forge "http://forge.puppetlabs.com"
2
+
3
+ mod 'puppetlabs-acl', '3.1.1'
@@ -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,8 @@
1
+ # Class: role::groups
2
+ #
3
+ #
4
+ class role::groups {
5
+ group {'Administrators':
6
+ members => ['foo'],
7
+ }
8
+ }
@@ -0,0 +1,9 @@
1
+ # Class: role::users
2
+ #
3
+ #
4
+ class role::users {
5
+ user { 'dylan':
6
+ ensure => 'present',
7
+ groups => ['Administrators'],
8
+ }
9
+ }
@@ -0,0 +1,8 @@
1
+ # Class: role::groups
2
+ #
3
+ #
4
+ class role::groups {
5
+ group {'Administrators':
6
+ members => ['foo'],
7
+ }
8
+ }
@@ -0,0 +1,9 @@
1
+ # Class: role::users
2
+ #
3
+ #
4
+ class role::users {
5
+ user { 'dylan':
6
+ ensure => 'present',
7
+ groups => ['Administrators'],
8
+ }
9
+ }
@@ -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"
@@ -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.17.0
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-05-04 00:00:00.000000000 Z
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: table_print
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.0.0
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.0.0
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
- rubygems_version: 3.0.3
427
- signing_key:
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: []