onceover 3.3.1 → 3.3.2

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.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/features/cache.feature +33 -0
  4. data/features/step_definitions/cache.rb +38 -0
  5. data/features/step_definitions/common.rb +3 -3
  6. data/features/support/cache_helper.rb +55 -0
  7. data/lib/onceover/testconfig.rb +32 -13
  8. data/onceover.gemspec +1 -1
  9. data/spec/fixtures/controlrepos/caching/.gitignore +1 -0
  10. data/spec/fixtures/controlrepos/caching/.travis.yml +2 -0
  11. data/spec/fixtures/controlrepos/caching/Gemfile +5 -0
  12. data/spec/fixtures/controlrepos/caching/Puppetfile +17 -0
  13. data/spec/fixtures/controlrepos/caching/Rakefile +1 -0
  14. data/spec/fixtures/controlrepos/caching/deleteme.txt +0 -0
  15. data/spec/fixtures/controlrepos/caching/environment.conf +2 -0
  16. data/spec/fixtures/controlrepos/caching/hieradata/common.yaml +2 -0
  17. data/spec/fixtures/controlrepos/caching/hieradata/nodes/example-node.yaml +1 -0
  18. data/spec/fixtures/controlrepos/caching/manifests/site.pp +32 -0
  19. data/spec/fixtures/controlrepos/caching/site/profile/manifests/base.pp +5 -0
  20. data/spec/fixtures/controlrepos/caching/site/profile/manifests/example.pp +3 -0
  21. data/spec/fixtures/controlrepos/caching/site/role/manifests/database_server.pp +7 -0
  22. data/spec/fixtures/controlrepos/caching/site/role/manifests/example.pp +3 -0
  23. data/spec/fixtures/controlrepos/caching/site/role/manifests/webserver.pp +7 -0
  24. data/spec/fixtures/controlrepos/caching/spec/factsets/README.md +7 -0
  25. data/spec/fixtures/controlrepos/caching/spec/onceover.yaml +53 -0
  26. data/spec/fixtures/controlrepos/caching/spec/pre_conditions/README.md +24 -0
  27. metadata +24 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 16b8e87dd7f42d97a987d5ba6ea7df4882f792ac
4
- data.tar.gz: 9654efc7739d62409e488b7f2651914b17e2831c
3
+ metadata.gz: 8516d34019e0c6c9d8f09fcd8e6f7249dec8b8dd
4
+ data.tar.gz: b569f4341e7681fe099d090f0f9b245346110145
5
5
  SHA512:
6
- metadata.gz: ccd6c5e3cd4f9749c6ef58ca8766cef9acfd93597283ab9bb2c67388ab43cd60d22c4bcd02ba45f2add5ba44153e3ffaad8dc8c94266521d3e6d02089bc151d9
7
- data.tar.gz: 01d040074b62b0fcd2971be9cfa7d84720fdc1f3028bf68b630e3bbd48cbd2fa5fc045e9d534cb013a8ffb366878b005db632a15b12b1cf7e85a8a025885e804
6
+ metadata.gz: b77f2b94c07a87304af205b19bb4cf6ad4c7d7c89b67067c47275b5e20dfcb064cb4bf4d1edca03dd337ffaada10dcecd434c086d90a0104e855e64a14c1175f
7
+ data.tar.gz: 171dcee3922127e988696645a68fc48286ed2a54316d0dbbb86249650b9cda947ab01a01fe12f18a71dab0c8784bcf3c9ce9f3b3530d29f7643fbc953da66ccc
data/.travis.yml CHANGED
@@ -17,3 +17,4 @@ rvm:
17
17
  - 2.3.4
18
18
  - 2.4.0
19
19
  - 2.4.1
20
+ - 2.4.2
@@ -0,0 +1,33 @@
1
+ @cache
2
+ Feature: Create and maintain a .onceover cache
3
+ Onceover should be able to cache things in the .onceover directory for speed
4
+ increases and debugging of external modules. This cache should remain
5
+ up-to-date and should exactly mirror what would be created on the Puppet
6
+ master.
7
+
8
+ Background:
9
+ Given onceover executable
10
+
11
+ Scenario: Creating a cache
12
+ Given control repo "caching"
13
+ When I run onceover command "run spec"
14
+ Then the cache should exist
15
+ And the cache should contain all controlrepo files
16
+
17
+ Scenario: Creating a new file
18
+ Given control repo "caching"
19
+ When I create a file "example.txt"
20
+ And I run onceover command "run spec"
21
+ Then "example.txt" should be cached correctly
22
+
23
+ Scenario: Deleting a file
24
+ Given control repo "caching"
25
+ When I delete a file "deleteme.txt"
26
+ And I run onceover command "run spec"
27
+ Then "deleteme.txt" should be deleted from the cache
28
+
29
+ Scenario: Caching hidden files
30
+ Given control repo "caching"
31
+ When I create a file ".hidden/.hiddenfile"
32
+ And I run onceover command "run spec"
33
+ Then ".hidden/.hiddenfile" should be cached correctly
@@ -0,0 +1,38 @@
1
+ Then(/^the cache should exist$/) do
2
+ cache_dir = File.join(@repo.root_folder,'.onceover')
3
+ expect(File.directory?(cache_dir)).to be true
4
+ end
5
+
6
+ Then(/^the cache should contain all controlrepo files/) do
7
+ # Get all root files
8
+ puts "Calculating MD5 hashes in repo"
9
+ repo_digest = Cache_Helper.digest(@repo.root_folder)
10
+ puts "#{repo_digest.count} MD5 hashes calculated"
11
+ puts "Calculating MD5 hashes in cache"
12
+ cache_digest = Cache_Helper.digest(File.join(@repo.root_folder,'.onceover/etc/puppetlabs/code/environments/production/'))
13
+ puts "#{cache_digest.count} MD5 hashes calculated"
14
+ expect(cache_digest).to include(repo_digest)
15
+ end
16
+
17
+ When(/^I (\w+) a file "(.*)"$/) do |action,file|
18
+ require 'securerandom'
19
+ actual_file = Pathname.new(File.join(@repo.root_folder,file))
20
+ case action
21
+ when "create"
22
+ FileUtils.mkdir_p(actual_file.dirname)
23
+ File.write(actual_file,SecureRandom.hex)
24
+ when "delete"
25
+ FileUtils.rm(actual_file)
26
+ end
27
+ end
28
+
29
+ Then(/^"(.*)" should be cached correctly$/) do |file|
30
+ original_digest = Cache_Helper.digest(File.join(@repo.root_folder,file))
31
+ cache_digest = Cache_Helper.digest(File.join(@repo.root_folder,'.onceover/etc/puppetlabs/code/environments/production/',file))
32
+ expect(original_digest).to include(cache_digest)
33
+ end
34
+
35
+ Then(/^"([^"]*)" should be deleted from the cache$/) do |file|
36
+ deleted_file = Pathname.new(File.join(@repo.root_folder,'.onceover/etc/puppetlabs/code/environments/production/',file))
37
+ expect(deleted_file.exist?).to be false
38
+ end
@@ -1,4 +1,4 @@
1
- Given /^onceover executable$/ do
1
+ Given(/^onceover executable$/) do
2
2
  @cmd = Command_Helper.new
3
3
  end
4
4
 
@@ -20,13 +20,13 @@ Given(/^control repo "([^"]*)" without "([^"]*)"$/) do |controlrepo_name, filena
20
20
  FileUtils.rm_rf "#{@repo.root_folder}/#{filename}"
21
21
  end
22
22
 
23
- When /^I run onceover command "([^"]*)"$/ do |command|
23
+ When(/^I run onceover command "([^"]*)"$/) do |command|
24
24
  @cmd.command = command
25
25
  puts @cmd
26
26
  @cmd.run
27
27
  end
28
28
 
29
- Then /^I see help for commands: "([^"]*)"$/ do |commands|
29
+ Then(/^I see help for commands: "([^"]*)"$/) do |commands|
30
30
  # Get chunk of output between COMMANDS and OPTION, there should be help section
31
31
  commands_help = @cmd.output[/COMMANDS(.*)OPTIONS/m, 1]
32
32
  commands.split(',').each do |command|
@@ -0,0 +1,55 @@
1
+ require 'pathname'
2
+
3
+ class Cache_Helper
4
+
5
+ def cache_exists?
6
+ File.directory?(dir + '/.onceover')
7
+ end
8
+
9
+ def self.digest(path, opts = {
10
+ exceptions: ['.','..','.onceover']
11
+ })
12
+ if File.directory?(path)
13
+ # Get the list of files
14
+ children = Cache_Helper.get_children(path, opts[:exceptions])
15
+ else
16
+ children = [File.expand_path(path)]
17
+ end
18
+
19
+ # Calculate hashes
20
+ hashes = children.map do |child_path|
21
+ if File.directory? child_path
22
+ :directory
23
+ else
24
+ Digest::MD5.file(child_path)
25
+ end
26
+ end
27
+
28
+ root = Pathname.new(File.expand_path(path))
29
+ # Move pathnames back to relative
30
+ children.map! do |child_path|
31
+ Pathname.new(child_path).relative_path_from root
32
+ end
33
+ Hash[children.zip(hashes)]
34
+ end
35
+
36
+ def self.get_children(dir, exclusions)
37
+ root_files = []
38
+ files = []
39
+ Dir.chdir(dir) do
40
+ # Get all root files
41
+ root_files = Dir.glob('*',File::FNM_DOTMATCH)
42
+ root_files = root_files - exclusions
43
+ root_files.each do |file|
44
+ files << file
45
+ files << Dir.glob("#{file}/**/*",File::FNM_DOTMATCH)
46
+ end
47
+ files.flatten!
48
+ # Calculate absolue paths
49
+ files.map! do |file|
50
+ File.expand_path(file)
51
+ end
52
+ end
53
+ files
54
+ end
55
+ end
@@ -181,27 +181,33 @@ class Onceover
181
181
  #
182
182
  # If there are more situations like this we can add them to this array as
183
183
  # full paths
184
- excluded_files = []
185
- if ENV['GEM_HOME']
186
- logger.debug "Excluding #{ENV['GEM_HOME']} from controlrepo copy"
187
- excluded_files << Dir.glob("#{ENV['GEM_HOME']}/**/*")
188
- excluded_files.flatten!
184
+ excluded_dirs = []
185
+ excluded_dirs << Pathname.new("#{repo.root}/.onceover")
186
+ excluded_dirs << Pathname.new(ENV['GEM_HOME']) if ENV['GEM_HOME']
187
+
188
+ controlrepo_files = get_children_recursive(Pathname.new(repo.root))
189
+
190
+ # Exclude the files that should be skipped
191
+ controlrepo_files.delete_if do |path|
192
+ parents = [path]
193
+ path.ascend do |parent|
194
+ parents << parent
195
+ end
196
+ parents.any? { |x| excluded_dirs.include?(x) }
189
197
  end
190
198
 
191
- # Exclude the files we need to
192
- controlrepo_files = Dir.glob("#{repo.root}/**/*")
193
- files_to_copy = (controlrepo_files - excluded_files).delete_if { |path| Pathname(path).directory? }
194
- folders_to_copy = (controlrepo_files - excluded_files).keep_if { |path| Pathname(path).directory? }
199
+ folders_to_copy = controlrepo_files.select { |x| x.directory? }
200
+ files_to_copy = controlrepo_files.select { |x| x.file? }
195
201
 
196
202
  logger.debug "Creating temp dir as a staging directory for copying the controlrepo to #{repo.tempdir}"
197
203
  temp_controlrepo = Dir.mktmpdir('controlrepo')
198
204
 
199
205
  logger.debug "Creating directories under #{temp_controlrepo}"
200
- FileUtils.mkdir_p(folders_to_copy.map { |folder| "#{temp_controlrepo}/#{(Pathname(folder).relative_path_from(Pathname(repo.root))).to_s}"})
206
+ FileUtils.mkdir_p(folders_to_copy.map { |folder| "#{temp_controlrepo}/#{(folder.relative_path_from(Pathname(repo.root))).to_s}"})
201
207
 
202
208
  logger.debug "Copying files to #{temp_controlrepo}"
203
209
  files_to_copy.each do |file|
204
- FileUtils.cp(file,"#{temp_controlrepo}/#{(Pathname(file).relative_path_from(Pathname(repo.root))).to_s}")
210
+ FileUtils.cp(file,"#{temp_controlrepo}/#{(file.relative_path_from(Pathname(repo.root))).to_s}")
205
211
  end
206
212
 
207
213
  # When using puppetfile vs deploy with r10k, we want to respect the :control_branch
@@ -219,10 +225,10 @@ class Onceover
219
225
  File.write("#{temp_controlrepo}/Puppetfile", new_puppetfile_contents)
220
226
 
221
227
 
222
- FileUtils.mkdir_p("#{repo.tempdir}/#{repo.environmentpath}/production")
228
+ FileUtils.mkdir_p("#{repo.tempdir}/#{repo.environmentpath}")
223
229
 
224
230
  logger.debug "Copying #{temp_controlrepo} to #{repo.tempdir}/#{repo.environmentpath}/production"
225
- FileUtils.cp_r(Dir["#{temp_controlrepo}/*"], "#{repo.tempdir}/#{repo.environmentpath}/production")
231
+ FileUtils.cp_r(temp_controlrepo, "#{repo.tempdir}/#{repo.environmentpath}/production")
226
232
  FileUtils.rm_rf(temp_controlrepo)
227
233
 
228
234
  # Pull the trigger! If it's not already been pulled
@@ -331,5 +337,18 @@ class Onceover
331
337
  tests
332
338
  end
333
339
 
340
+ private
341
+
342
+ def get_children_recursive(pathname)
343
+ results = []
344
+ results << pathname
345
+ pathname.each_child do |child|
346
+ results << child
347
+ if child.directory?
348
+ results << get_children_recursive(child)
349
+ end
350
+ end
351
+ results.flatten
352
+ end
334
353
  end
335
354
  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.3.1"
7
+ s.version = "3.3.2"
8
8
  s.authors = ["Dylan Ratcliffe"]
9
9
  s.email = ["dylan.ratcliffe@puppet.com"]
10
10
  s.homepage = "https://github.com/dylanratcliffe/onceover"
@@ -0,0 +1 @@
1
+ .onceover
@@ -0,0 +1,2 @@
1
+ ---
2
+ some: stuff
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'onceover'
4
+ gem 'beaker', '~> 2.0'
5
+
@@ -0,0 +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'
@@ -0,0 +1 @@
1
+ require 'onceover/rake_tasks'
File without changes
@@ -0,0 +1,2 @@
1
+ modulepath = site:modules:$basemodulepath
2
+ config_version = 'scripts/config_version.sh $environmentpath $environment'
@@ -0,0 +1,2 @@
1
+ ---
2
+ message: "This node is using common data"
@@ -0,0 +1,32 @@
1
+ ## site.pp ##
2
+
3
+ # This file (/etc/puppetlabs/puppet/manifests/site.pp) is the main entry point
4
+ # used when an agent connects to a master and asks for an updated configuration.
5
+ #
6
+ # Global objects like filebuckets and resource defaults should go in this file,
7
+ # as should the default node definition. (The default node can be omitted
8
+ # if you use the console and don't define any other nodes in site.pp. See
9
+ # http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
10
+ # node definitions.)
11
+
12
+ ## Active Configurations ##
13
+
14
+ # Disable filebucket by default for all File resources:
15
+ #https://docs.puppet.com/pe/2015.3/release_notes.html#filebucket-resource-no-longer-created-by-default
16
+ File { backup => false }
17
+
18
+ # DEFAULT NODE
19
+ # Node definitions in this file are merged with node data from the console. See
20
+ # http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
21
+ # node definitions.
22
+
23
+ # The default node definition matches any node lacking a more specific node
24
+ # definition. If there are no other nodes in this file, classes declared here
25
+ # will be included in every node's catalog, *in addition* to any classes
26
+ # specified in the console for that node.
27
+
28
+ node default {
29
+ # This is where you can declare classes for all nodes.
30
+ # Example:
31
+ # class { 'my_class': }
32
+ }
@@ -0,0 +1,5 @@
1
+ class profile::base {
2
+
3
+ #the base profile should include component modules that will be on all nodes
4
+
5
+ }
@@ -0,0 +1,3 @@
1
+ class profile::example {
2
+
3
+ }
@@ -0,0 +1,7 @@
1
+ class role::database_server {
2
+
3
+ #This role would be made of all the profiles that need to be included to make a database server work
4
+ #All roles should include the base profile
5
+ include profile::base
6
+
7
+ }
@@ -0,0 +1,3 @@
1
+ class role::example {
2
+
3
+ }
@@ -0,0 +1,7 @@
1
+ class role::webserver {
2
+
3
+ #This role would be made of all the profiles that need to be included to make a webserver work
4
+ #All roles should include the base profile
5
+ include profile::base
6
+
7
+ }
@@ -0,0 +1,7 @@
1
+ # Factsets
2
+
3
+ This directory is where we put any custom factsets that we want to use. They can be generated by running `puppet facts` on the target system.
4
+
5
+ **Hot tip:** If you already have factsets in here when you run `onceover init` they will be picked up and added to the config file Automatically
6
+
7
+ More info: https://github.com/dylanratcliffe/onceover#factsets
@@ -0,0 +1,53 @@
1
+ # Classes to be tested
2
+ classes:
3
+ - role::database_server
4
+ - role::webserver
5
+ - role::example
6
+
7
+ # Nodes to tests classes on, this refers to a 'factset' or 'nodeset'
8
+ # depending on weather you are running 'spec' or 'acceptance' tests
9
+ nodes:
10
+ - AIX-7.1-powerpc
11
+ - SLES-12.1-64
12
+ - Debian-6.0.10-32
13
+ - CentOS-6.6-64
14
+ - Ubuntu-12.04-32
15
+ - Ubuntu-12.04-64
16
+ - CentOS-6.6-32
17
+ - Debian-6.0.10-64
18
+ - AIX-6.1-powerpc
19
+ - Windows_Server-2012r2-64
20
+ - Debian-7.8-32
21
+ - Windows_Server-2008r2-64
22
+ - SLES-11.3-64
23
+ - Debian-7.8-64
24
+ - solaris-10_u9-sparc-64
25
+ - solaris-11.2-sparc-64
26
+ - Ubuntu-14.04-32
27
+ - CentOS-5.11-64
28
+ - CentOS-5.11-32
29
+ - CentOS-7.0-64
30
+ - Ubuntu-14.04-64
31
+
32
+ # You can group classes here to save typing
33
+ class_groups:
34
+
35
+ # You can group nodes here to save typing
36
+ # We have created a 'non_windows_nodes' group because we can't
37
+ # give you Windows vagrant boxes to test with because licensing,
38
+ # we can give you fact sets though so go crazy with spec testing!
39
+ node_groups:
40
+ windows_nodes:
41
+ - Windows_Server-2012r2-64
42
+ - Windows_Server-2008r2-64
43
+ non_windows_nodes:
44
+ include: 'all_nodes'
45
+ exclude: 'windows_nodes'
46
+
47
+ test_matrix:
48
+ - all_nodes:
49
+ classes: 'all_classes'
50
+ tests: 'spec'
51
+ - non_windows_nodes:
52
+ classes: 'all_classes'
53
+ tests: 'acceptance'
@@ -0,0 +1,24 @@
1
+ # Pre Conditions
2
+
3
+ This folder should contain any \*.pp files that you want to be included in every test.
4
+
5
+ A common use of this is defining resources that may not exist in the catalog when you are running tests. For example, if we are using a resource that tries to restart the `pe-puppetserver` service, unless it is compiled on a Puppet Maser the `pe-puppetserver` service will not exist and the catalog will fail to compile. To get around this we can create a .pp file and define the resource like so:
6
+
7
+ ``` puppet
8
+ # We are not going to actually have this service anywhere on our servers but
9
+ # our code needs to refresh it. This is to trick puppet into doing nothing
10
+ service { 'pe-puppetserver':
11
+ ensure => 'running',
12
+ enable => false,
13
+ hasrestart => false, # Force Puppet to use start and stop to restart
14
+ start => 'echo "Start"', # This will always exit 0
15
+ stop => 'echo "Stop"', # This will also always exit 0
16
+ hasstatus => false, # Force puppet to use our command for status
17
+ status => 'echo "Status"', # This will always exit 0 and therefore Puppet will think the service is running
18
+ provider => 'base',
19
+ }
20
+ ```
21
+
22
+ This will mean that the `pe-puppetserver` service is in the catalog for spec testing and will even allow you to try to restart it during acceptance tests without the service actually being present.
23
+
24
+ More info: https://github.com/dylanratcliffe/onceover#using-workarounds
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.3.1
4
+ version: 3.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dylan Ratcliffe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-05 00:00:00.000000000 Z
11
+ date: 2018-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -341,13 +341,16 @@ files:
341
341
  - factsets/Windows_Server-2012r2-64.json
342
342
  - factsets/solaris-10_u9-sparc-64.json
343
343
  - factsets/solaris-11.2-sparc-64.json
344
+ - features/cache.feature
344
345
  - features/help.feature
345
346
  - features/init.feature
346
347
  - features/run.feature
347
348
  - features/show.feature
349
+ - features/step_definitions/cache.rb
348
350
  - features/step_definitions/common.rb
349
351
  - features/step_definitions/init.rb
350
352
  - features/step_definitions/run.rb
353
+ - features/support/cache_helper.rb
351
354
  - features/support/command_helper.rb
352
355
  - features/support/controlrepo_helper.rb
353
356
  - features/support/env.rb
@@ -379,6 +382,24 @@ files:
379
382
  - spec/fixtures/controlrepos/basic/site/role/manifests/database_server.pp
380
383
  - spec/fixtures/controlrepos/basic/site/role/manifests/example.pp
381
384
  - spec/fixtures/controlrepos/basic/site/role/manifests/webserver.pp
385
+ - spec/fixtures/controlrepos/caching/.gitignore
386
+ - spec/fixtures/controlrepos/caching/.travis.yml
387
+ - spec/fixtures/controlrepos/caching/Gemfile
388
+ - spec/fixtures/controlrepos/caching/Puppetfile
389
+ - spec/fixtures/controlrepos/caching/Rakefile
390
+ - spec/fixtures/controlrepos/caching/deleteme.txt
391
+ - spec/fixtures/controlrepos/caching/environment.conf
392
+ - spec/fixtures/controlrepos/caching/hieradata/common.yaml
393
+ - spec/fixtures/controlrepos/caching/hieradata/nodes/example-node.yaml
394
+ - spec/fixtures/controlrepos/caching/manifests/site.pp
395
+ - spec/fixtures/controlrepos/caching/site/profile/manifests/base.pp
396
+ - spec/fixtures/controlrepos/caching/site/profile/manifests/example.pp
397
+ - spec/fixtures/controlrepos/caching/site/role/manifests/database_server.pp
398
+ - spec/fixtures/controlrepos/caching/site/role/manifests/example.pp
399
+ - spec/fixtures/controlrepos/caching/site/role/manifests/webserver.pp
400
+ - spec/fixtures/controlrepos/caching/spec/factsets/README.md
401
+ - spec/fixtures/controlrepos/caching/spec/onceover.yaml
402
+ - spec/fixtures/controlrepos/caching/spec/pre_conditions/README.md
382
403
  - spec/fixtures/controlrepos/control_branch/Puppetfile
383
404
  - spec/fixtures/controlrepos/control_branch/environment.conf
384
405
  - spec/fixtures/controlrepos/minimal/environment.conf
@@ -416,7 +437,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
416
437
  version: '0'
417
438
  requirements: []
418
439
  rubyforge_project:
419
- rubygems_version: 2.5.2
440
+ rubygems_version: 2.6.14
420
441
  signing_key:
421
442
  specification_version: 4
422
443
  summary: Testing tools for Puppet controlrepos