puppet-catalog-test 0.4.2 → 0.4.3
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/Rakefile +27 -0
- data/lib/puppet-catalog-test/puppet_adapter/base_puppet_adapter.rb +5 -0
- data/lib/puppet-catalog-test/puppet_adapter/puppet_3x_adapter.rb +43 -2
- data/lib/puppet-catalog-test/puppet_adapter/puppet_4x_adapter.rb +2 -1
- data/lib/puppet-catalog-test/puppet_adapter_factory.rb +2 -0
- data/lib/puppet-catalog-test/rake_task.rb +1 -1
- data/puppet-catalog-test.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e9ab263a7f76de207203221229750145e1e6156
|
4
|
+
data.tar.gz: 3b7997d24939efe752837764a1f4b301911a660b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38b83be5d37831e9d8ace38ee45a5f487786051c951b58feaa9c5c8bcb341a39fa076b884ac07270eb2106fbf20edb7af372762640ec8d30f7833f9b1bf15917
|
7
|
+
data.tar.gz: 319a65c89712d418292cd90be394fc088245ed7435b0be4b2e5f53b18aa5b53ceeb010374a9641e79ce2680b5a0bc6ad98fb38ff59fa9ba05a2d35c4c74c1959
|
data/Rakefile
CHANGED
@@ -2,6 +2,8 @@ require "rake/testtask"
|
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
require "puppet/version"
|
4
4
|
require "rubygems"
|
5
|
+
require "yaml"
|
6
|
+
require "erb"
|
5
7
|
|
6
8
|
desc "Clean workspace"
|
7
9
|
task :clean do
|
@@ -71,4 +73,29 @@ task :test_integration do
|
|
71
73
|
end
|
72
74
|
end
|
73
75
|
|
76
|
+
task :generate_test_matrix do
|
77
|
+
# rbenv doesn't support fuzzy version matching, so we are using a good old mapping table
|
78
|
+
ruby_version_mapping = {
|
79
|
+
"1.8.7" => "1.8.7-p374",
|
80
|
+
"1.9.3" => "1.9.3-p551",
|
81
|
+
"2.0.0" => "2.0.0-p645"
|
82
|
+
}
|
83
|
+
|
84
|
+
config = YAML.load_file(".travis.yml")
|
85
|
+
checks = []
|
86
|
+
|
87
|
+
config["rvm"].each do |ruby_version|
|
88
|
+
config["env"].each do |env_var|
|
89
|
+
if !config["matrix"]["exclude"].detect { |ex| ex["rvm"] == ruby_version && ex["env"] == env_var }
|
90
|
+
puppet_version = env_var.match(/^PUPPET_VERSION=(.*)$/)[1]
|
91
|
+
mapped_ruby_version = ruby_version_mapping[ruby_version] || ruby_version
|
92
|
+
checks << "check #{mapped_ruby_version} #{puppet_version}"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
template = ERB.new(File.read("run-all-tests.erb"))
|
98
|
+
File.open("run-all-tests", "w+") { |fp| fp.puts template.result(binding) }
|
99
|
+
end
|
100
|
+
|
74
101
|
task :default => [:test, :test_integration]
|
@@ -3,6 +3,11 @@ require "puppet"
|
|
3
3
|
module PuppetCatalogTest
|
4
4
|
class BasePuppetAdapter
|
5
5
|
def initialize(config)
|
6
|
+
@config = config
|
7
|
+
end
|
8
|
+
|
9
|
+
def init_config()
|
10
|
+
config = @config
|
6
11
|
manifest_path = config[:manifest_path]
|
7
12
|
module_paths = config[:module_paths]
|
8
13
|
config_dir = config[:config_dir]
|
@@ -9,11 +9,15 @@ module PuppetCatalogTest
|
|
9
9
|
require 'puppet/test/test_helper'
|
10
10
|
parser = config[:parser]
|
11
11
|
|
12
|
+
init_config
|
13
|
+
|
12
14
|
# initialize was added in 3.1.0
|
13
15
|
if Gem::Version.new(version) > Gem::Version.new('3.1.0')
|
14
16
|
Puppet::Test::TestHelper.initialize
|
15
17
|
end
|
16
18
|
|
19
|
+
Puppet::Test::TestHelper.before_all_tests
|
20
|
+
|
17
21
|
Puppet::Node::Environment.new.modules_by_path.each do |_, mod|
|
18
22
|
mod.entries.each do |entry|
|
19
23
|
ldir = entry.plugin_directory
|
@@ -39,8 +43,8 @@ module PuppetCatalogTest
|
|
39
43
|
|
40
44
|
def compile(node)
|
41
45
|
begin
|
42
|
-
Puppet::
|
43
|
-
|
46
|
+
catalog = Puppet::Parser::Compiler.compile(node)
|
47
|
+
validate_relationships(catalog)
|
44
48
|
rescue => e
|
45
49
|
raise e
|
46
50
|
ensure
|
@@ -49,6 +53,8 @@ module PuppetCatalogTest
|
|
49
53
|
end
|
50
54
|
|
51
55
|
def create_node(hostname, facts)
|
56
|
+
Puppet::Test::TestHelper.before_each_test
|
57
|
+
init_config
|
52
58
|
node = Puppet::Node.new(hostname)
|
53
59
|
node.merge(facts)
|
54
60
|
node
|
@@ -57,5 +63,40 @@ module PuppetCatalogTest
|
|
57
63
|
def version
|
58
64
|
Puppet::PUPPETVERSION
|
59
65
|
end
|
66
|
+
|
67
|
+
def validate_relationships(catalog)
|
68
|
+
catalog.resources.each do |resource|
|
69
|
+
next unless resource.is_a?(Puppet::Resource)
|
70
|
+
|
71
|
+
resource.each do |param, value|
|
72
|
+
pclass = Puppet::Type.metaparamclass(param)
|
73
|
+
if !pclass.nil? && pclass < Puppet::Type::RelationshipMetaparam
|
74
|
+
next if value.is_a?(String)
|
75
|
+
check_if_resource_exists(catalog, resource, param, value)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
def check_if_resource_exists(catalog, resource, param, value)
|
85
|
+
case value
|
86
|
+
when Array
|
87
|
+
value.each { |v| check_if_resource_exists(catalog, resource, param, v) }
|
88
|
+
when Puppet::Resource
|
89
|
+
matching_resource = catalog.resources.find do |resource|
|
90
|
+
resource.type == value.type &&
|
91
|
+
(resource.title.to_s == value.title.to_s ||
|
92
|
+
resource[:name] == value.title ||
|
93
|
+
resource[:alias] == value.title)
|
94
|
+
end
|
95
|
+
|
96
|
+
unless matching_resource
|
97
|
+
fail "#{resource} has #{param} relationship to invalid resource #{value}"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
60
101
|
end
|
61
102
|
end
|
@@ -28,6 +28,8 @@ module PuppetCatalogTest
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def create_node(hostname, facts)
|
31
|
+
Puppet::Test::TestHelper.before_each_test
|
32
|
+
init_config
|
31
33
|
node = Puppet::Node.new(hostname, :facts => Puppet::Node::Facts.new("facts", facts))
|
32
34
|
node.merge(facts)
|
33
35
|
node
|
@@ -35,7 +37,6 @@ module PuppetCatalogTest
|
|
35
37
|
|
36
38
|
def compile(node)
|
37
39
|
begin
|
38
|
-
Puppet::Test::TestHelper.before_each_test
|
39
40
|
Puppet::Parser::Compiler.compile(node)
|
40
41
|
rescue => e
|
41
42
|
raise e
|
@@ -11,6 +11,8 @@ module PuppetCatalogTest
|
|
11
11
|
return Puppet3xAdapter.new(config)
|
12
12
|
elsif Puppet.version.start_with?("4.")
|
13
13
|
return Puppet4xAdapter.new(config)
|
14
|
+
elsif Puppet.version.start_with?("5.")
|
15
|
+
return Puppet4xAdapter.new(config)
|
14
16
|
end
|
15
17
|
|
16
18
|
raise RuntimeException, "Unsupported Puppet version detected (#{Puppet.version})"
|
@@ -17,7 +17,7 @@ module PuppetCatalogTest
|
|
17
17
|
attr_accessor :verbose
|
18
18
|
|
19
19
|
def initialize(name, &task_block)
|
20
|
-
desc "Compile all puppet catalogs" unless ::Rake.application.
|
20
|
+
desc "Compile all puppet catalogs" unless ::Rake.application.last_description
|
21
21
|
|
22
22
|
task name do
|
23
23
|
task_block.call(self) if task_block
|
data/puppet-catalog-test.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'puppet-catalog-test'
|
3
|
-
s.version = '0.4.
|
3
|
+
s.version = '0.4.3'
|
4
4
|
s.homepage = 'https://github.com/invadersmustdie/puppet-catalog-test/'
|
5
5
|
s.summary = 'Test all your puppet catalogs for compiler warnings and errors'
|
6
6
|
s.description = 'Test all your puppet catalogs for compiler warnings and errors.'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-catalog-test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rene Lengwinat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puppet
|
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
95
|
version: '0'
|
96
96
|
requirements: []
|
97
97
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.
|
98
|
+
rubygems_version: 2.6.11
|
99
99
|
signing_key:
|
100
100
|
specification_version: 4
|
101
101
|
summary: Test all your puppet catalogs for compiler warnings and errors
|