puppet-ghostbuster 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/puppet-ghostbuster/version.rb +1 -1
- data/lib/puppet-lint/plugins/check_ghostbuster_facts.rb +39 -0
- data/lib/puppet-lint/plugins/check_ghostbuster_functions.rb +31 -0
- data/lib/puppet-lint/plugins/check_ghostbuster_types.rb +22 -0
- data/puppet-ghostbuster.gemspec +1 -0
- data/spec/fixtures/modules/foo/lib/facter/bar.rb +6 -0
- data/spec/fixtures/modules/foo/lib/facter/baz.rb +6 -0
- data/spec/fixtures/modules/foo/lib/facter/foo.rb +6 -0
- data/spec/fixtures/modules/foo/lib/facter/multi.rb +12 -0
- data/spec/fixtures/modules/foo/lib/puppet/parser/functions/bar.rb +4 -0
- data/spec/fixtures/modules/foo/lib/puppet/parser/functions/baz.rb +4 -0
- data/spec/fixtures/modules/foo/lib/puppet/parser/functions/foo.rb +4 -0
- data/spec/fixtures/modules/foo/lib/puppet/parser/functions/quux.rb +4 -0
- data/spec/fixtures/modules/foo/lib/puppet/type/bar.rb +2 -0
- data/spec/fixtures/modules/foo/lib/puppet/type/foo.rb +2 -0
- data/spec/fixtures/modules/foo/manifests/bar.pp +5 -0
- data/spec/fixtures/modules/foo/templates/foo.erb +3 -0
- data/spec/fixtures/nodes.json +17 -0
- data/spec/fixtures/resources.json +25 -0
- data/spec/puppet-lint/plugins/ghostbuster_classes_spec.rb +0 -6
- data/spec/puppet-lint/plugins/ghostbuster_defines_spec.rb +0 -6
- data/spec/puppet-lint/plugins/ghostbuster_facts_spec.rb +48 -0
- data/spec/puppet-lint/plugins/ghostbuster_files_spec.rb +1 -45
- data/spec/puppet-lint/plugins/ghostbuster_functions_spec.rb +44 -0
- data/spec/puppet-lint/plugins/ghostbuster_hiera_files_spec.rb +0 -34
- data/spec/puppet-lint/plugins/ghostbuster_types_spec.rb +28 -0
- data/spec/spec_helper.rb +16 -5
- metadata +34 -3
- data/spec/lib/puppet-ghostbuster_spec.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f4d56b90b0f6e22a0f28b01e5ca1bdccc3c3bcc
|
4
|
+
data.tar.gz: 75c739ec623682f6eb850ad7559126b67ef7a676
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a49b28f9dfe55668e828d06f05f0c564718c13ffa913c28318445c17f701d861e5da4a3d2daecd94320c2702fbea8bd5affac28d9cd189e877af8ae83ebd50d
|
7
|
+
data.tar.gz: d040b8d124939e48574cabd486f625bda849216e6fd9e6bc461080fde2cfd02abb16dba06f519f9c2ed4a55d258637013f28267842b26aa9cf7e14c86c09d24b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [0.7.0](https://rubygems.org/gems/puppet-ghostbuster/versions/0.7.0) (2016-05-16)
|
4
|
+
[Full Changelog](https://github.com/camptocamp/puppet-ghostbuster/compare/0.6.0...0.7.0)
|
5
|
+
|
6
|
+
**Implemented enhancements:**
|
7
|
+
|
8
|
+
- Detect unused facts.
|
9
|
+
- Detect unused functions.
|
10
|
+
- Detect unused types.
|
11
|
+
|
3
12
|
## [0.6.0](https://rubygems.org/gems/puppet-ghostbuster/versions/0.6.0) (2016-05-12)
|
4
13
|
[Full Changelog](https://github.com/camptocamp/puppet-ghostbuster/compare/0.5.1...0.6.0)
|
5
14
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
PuppetLint.new_check(:ghostbuster_facts) do
|
2
|
+
def manifests
|
3
|
+
Dir.glob('./**/manifests/**/*.pp')
|
4
|
+
end
|
5
|
+
|
6
|
+
def templates
|
7
|
+
Dir.glob('./**/templates/**/*').select{ |f| File.file? f }
|
8
|
+
end
|
9
|
+
|
10
|
+
def check
|
11
|
+
m = path.match(%r{.*/([^/]+)/lib/facter/(.+)$})
|
12
|
+
return if m.nil?
|
13
|
+
|
14
|
+
File.readlines(path).grep(%r{Facter.add\(["']([^"']+)["']\)}).each do |line|
|
15
|
+
fact_name = line.match(%r{Facter.add\(["']([^"']+)["']\)}).captures[0]
|
16
|
+
|
17
|
+
found = false
|
18
|
+
|
19
|
+
manifests.each do |manifest|
|
20
|
+
found = true if File.readlines(manifest).grep(%r{\$\{?::#{fact_name}\}?}).size > 0
|
21
|
+
break if found
|
22
|
+
end
|
23
|
+
|
24
|
+
templates.each do |template|
|
25
|
+
found = true if File.readlines(template).grep(%r{@#{fact_name}}).size > 0
|
26
|
+
break if found
|
27
|
+
end
|
28
|
+
|
29
|
+
unless found
|
30
|
+
notify :warning, {
|
31
|
+
:message => "Fact #{fact_name} seems unused",
|
32
|
+
:line => 1,
|
33
|
+
:column => 1,
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
PuppetLint.new_check(:ghostbuster_functions) do
|
2
|
+
def manifests
|
3
|
+
Dir.glob('./**/manifests/**/*.pp')
|
4
|
+
end
|
5
|
+
|
6
|
+
def templates
|
7
|
+
Dir.glob('./**/templates/**/*').select{ |f| File.file? f }
|
8
|
+
end
|
9
|
+
|
10
|
+
def check
|
11
|
+
m = path.match(%r{.*/[^/]+/lib/puppet/parser/functions/(.+)\.rb$})
|
12
|
+
return if m.nil?
|
13
|
+
|
14
|
+
function_name = m.captures[0]
|
15
|
+
|
16
|
+
manifests.each do |manifest|
|
17
|
+
return if File.readlines(manifest).grep(%r{#{function_name}\(}).size > 0
|
18
|
+
end
|
19
|
+
|
20
|
+
templates.each do |template|
|
21
|
+
return if File.readlines(template).grep(%r{scope.function_#{function_name}\(}).size > 0
|
22
|
+
return if File.readlines(template).grep(%r{Puppet::Parser::Functions.function\(:#{function_name}}).size > 0
|
23
|
+
end
|
24
|
+
|
25
|
+
notify :warning, {
|
26
|
+
:message => "Function #{function_name} seems unused",
|
27
|
+
:line => 1,
|
28
|
+
:column => 1,
|
29
|
+
}
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
PuppetLint.new_check(:ghostbuster_types) do
|
2
|
+
def manifests
|
3
|
+
Dir.glob('./**/manifests/**/*.pp')
|
4
|
+
end
|
5
|
+
|
6
|
+
def check
|
7
|
+
m = path.match(%r{.*/[^/]+/lib/puppet/type/(.+)\.rb$})
|
8
|
+
return if m.nil?
|
9
|
+
|
10
|
+
type_name = m.captures[0]
|
11
|
+
|
12
|
+
manifests.each do |manifest|
|
13
|
+
return if File.readlines(manifest).grep(%r{^\s*#{type_name}\s*\{}).size > 0
|
14
|
+
end
|
15
|
+
|
16
|
+
notify :warning, {
|
17
|
+
:message => "Type #{type_name.capitalize} seems unused",
|
18
|
+
:line => 1,
|
19
|
+
:column => 1,
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
data/puppet-ghostbuster.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_development_dependency 'rspec-its', '~> 1.0'
|
22
22
|
s.add_development_dependency 'rspec-collection_matchers', '~> 1.0'
|
23
23
|
s.add_development_dependency 'github_changelog_generator'
|
24
|
+
s.add_development_dependency 'jgrep'
|
24
25
|
s.add_runtime_dependency 'json'
|
25
26
|
s.add_runtime_dependency 'puppet'
|
26
27
|
s.add_dependency 'puppet-lint', '~> 1.0'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"type": "Foo"
|
4
|
+
},
|
5
|
+
{
|
6
|
+
"type": "Foo::Foo"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"type": "Class",
|
10
|
+
"title": "Foo"
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"type": "File",
|
14
|
+
"parameter": {
|
15
|
+
"source": "puppet:///modules/foo/bar"
|
16
|
+
}
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"type": "File",
|
20
|
+
"parameter": {
|
21
|
+
"source": "puppet:///modules/foo/baz",
|
22
|
+
"recurse": "true"
|
23
|
+
}
|
24
|
+
}
|
25
|
+
]
|
@@ -1,16 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'ghostbuster_classes' do
|
4
|
-
#let(:path) { "./manifests/site.pp" }
|
5
4
|
let(:path) { "./modules/foo/manifests/init.pp" }
|
6
5
|
|
7
6
|
context 'with fix disabled' do
|
8
7
|
|
9
|
-
before :each do
|
10
|
-
expect(PuppetGhostbuster::PuppetDB).to \
|
11
|
-
receive(:classes).and_return(['Foo'])
|
12
|
-
end
|
13
|
-
|
14
8
|
context 'when class is used' do
|
15
9
|
let(:code) { "class foo {}" }
|
16
10
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'ghostbuster_defines' do
|
4
|
-
include PuppetGhostbusterSpec
|
5
4
|
|
6
5
|
context 'with fix disabled' do
|
7
6
|
|
@@ -10,7 +9,6 @@ describe 'ghostbuster_defines' do
|
|
10
9
|
let(:path) { "./modules/foo/manifests/init.pp" }
|
11
10
|
|
12
11
|
it 'should not detect any problem' do
|
13
|
-
expect_puppetdb_resources([:'=', 'type', 'Foo'], [{}])
|
14
12
|
expect(problems).to have(0).problems
|
15
13
|
end
|
16
14
|
end
|
@@ -19,10 +17,6 @@ describe 'ghostbuster_defines' do
|
|
19
17
|
let(:code) { "define bar {}" }
|
20
18
|
let(:path) { "./modules/bar/manifests/init.pp" }
|
21
19
|
|
22
|
-
before :each do
|
23
|
-
expect_puppetdb_resources([:'=', 'type', 'Bar'], [])
|
24
|
-
end
|
25
|
-
|
26
20
|
it 'should detect one problem' do
|
27
21
|
expect(problems).to have(1).problems
|
28
22
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'ghostbuster_facts' do
|
4
|
+
let(:code) { "Facter.add('foo')" }
|
5
|
+
|
6
|
+
context 'with fix disabled' do
|
7
|
+
|
8
|
+
context 'when fact is not used' do
|
9
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/facter/multi.rb" }
|
10
|
+
|
11
|
+
it 'should detect one problem' do
|
12
|
+
expect(problems).to have(2).problems
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should create a warning' do
|
16
|
+
expect(problems).to contain_warning("Fact multi1 seems unused")
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should create a warning' do
|
20
|
+
expect(problems).to contain_warning("Fact multi2 seems unused")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when fact is used in a string' do
|
25
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/facter/foo.rb" }
|
26
|
+
|
27
|
+
it 'should not detect any problem' do
|
28
|
+
expect(problems).to have(0).problems
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when fact is used in manifest' do
|
33
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/facter/bar.rb" }
|
34
|
+
|
35
|
+
it 'should not detect any problem' do
|
36
|
+
expect(problems).to have(0).problems
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when fact is used in a template' do
|
41
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/facter/baz.rb" }
|
42
|
+
|
43
|
+
it 'should not detect any problem' do
|
44
|
+
expect(problems).to have(0).problems
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'ghostbuster_files' do
|
4
|
-
include PuppetGhostbusterSpec
|
5
4
|
|
6
5
|
let(:code) { "" }
|
7
6
|
|
@@ -11,30 +10,14 @@ describe 'ghostbuster_files' do
|
|
11
10
|
let(:path) { "./modules/foo/files/bar" }
|
12
11
|
|
13
12
|
it 'should not detect any problem' do
|
14
|
-
expect_puppetdb_resources(
|
15
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/foo/bar"],
|
16
|
-
[{}]
|
17
|
-
)
|
18
13
|
expect(problems).to have(0).problems
|
19
14
|
end
|
20
15
|
end
|
21
16
|
|
22
17
|
context 'when parent directory with recurse => true usage is found in puppetdb' do
|
23
|
-
let(:path) { "./modules/foo/files/
|
18
|
+
let(:path) { "./modules/foo/files/baz/baz" }
|
24
19
|
|
25
20
|
it 'should not detect any problem' do
|
26
|
-
expect_puppetdb_resources(
|
27
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/foo/bar/baz"],
|
28
|
-
[])
|
29
|
-
expect_puppetdb_resources(
|
30
|
-
[:'and',
|
31
|
-
[:'or',
|
32
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/foo/bar"],
|
33
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/foo/bar/"],
|
34
|
-
],
|
35
|
-
[:'=', ['parameter', 'recurse'], true],
|
36
|
-
],
|
37
|
-
[{}])
|
38
21
|
expect(problems).to have(0).problems
|
39
22
|
end
|
40
23
|
end
|
@@ -43,9 +26,6 @@ describe 'ghostbuster_files' do
|
|
43
26
|
let(:path) { "./modules/foo/files/used_with_file" }
|
44
27
|
|
45
28
|
it 'should not detect any problem' do
|
46
|
-
expect_puppetdb_resources(
|
47
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/foo/used_with_file"],
|
48
|
-
[])
|
49
29
|
expect(problems).to have(0).problems
|
50
30
|
end
|
51
31
|
end
|
@@ -54,9 +34,6 @@ describe 'ghostbuster_files' do
|
|
54
34
|
let(:path) { "./modules/foo/files/used_with_file_and_module_name" }
|
55
35
|
|
56
36
|
it 'should not detect any problem' do
|
57
|
-
expect_puppetdb_resources(
|
58
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/foo/used_with_file_and_module_name"],
|
59
|
-
[])
|
60
37
|
expect(problems).to have(0).problems
|
61
38
|
end
|
62
39
|
end
|
@@ -64,12 +41,6 @@ describe 'ghostbuster_files' do
|
|
64
41
|
context 'when file in ROOT is not used' do
|
65
42
|
let(:path) { "./modules/bar/files/foo" }
|
66
43
|
|
67
|
-
before :each do
|
68
|
-
expect_puppetdb_resources(
|
69
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/bar/foo"],
|
70
|
-
[])
|
71
|
-
end
|
72
|
-
|
73
44
|
it 'should detect one problem' do
|
74
45
|
expect(problems).to have(1).problems
|
75
46
|
end
|
@@ -82,21 +53,6 @@ describe 'ghostbuster_files' do
|
|
82
53
|
context 'when file in subdir is not used' do
|
83
54
|
let(:path) { "./modules/bar/files/foo/bar" }
|
84
55
|
|
85
|
-
before :each do
|
86
|
-
expect_puppetdb_resources(
|
87
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/bar/foo/bar"],
|
88
|
-
[])
|
89
|
-
expect_puppetdb_resources(
|
90
|
-
[:'and',
|
91
|
-
[:'or',
|
92
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/bar/foo"],
|
93
|
-
[:'=', ['parameter', 'source'], "puppet:///modules/bar/foo/"],
|
94
|
-
],
|
95
|
-
[:'=', ['parameter', 'recurse'], true],
|
96
|
-
],
|
97
|
-
[])
|
98
|
-
end
|
99
|
-
|
100
56
|
it 'should detect one problem' do
|
101
57
|
expect(problems).to have(1).problems
|
102
58
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'ghostbuster_functions' do
|
4
|
+
let(:code) { '' }
|
5
|
+
|
6
|
+
context 'with fix disabled' do
|
7
|
+
|
8
|
+
context 'when function is not used' do
|
9
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/puppet/parser/functions/foo.rb" }
|
10
|
+
|
11
|
+
it 'should detect one problem' do
|
12
|
+
expect(problems).to have(1).problems
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should create a warning' do
|
16
|
+
expect(problems).to contain_warning("Function foo seems unused")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when function is used in a manifest' do
|
21
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/puppet/parser/functions/bar.rb" }
|
22
|
+
|
23
|
+
it 'should not detect any problem' do
|
24
|
+
expect(problems).to have(0).problems
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when function is used in a template using scope.function_baz()' do
|
29
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/puppet/parser/functions/baz.rb" }
|
30
|
+
|
31
|
+
it 'should not detect any problem' do
|
32
|
+
expect(problems).to have(0).problems
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when function is used in a template using Puppet::Parser::Functions.function(:quux)' do
|
37
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/puppet/parser/functions/quux.rb" }
|
38
|
+
|
39
|
+
it 'should not detect any problem' do
|
40
|
+
expect(problems).to have(0).problems
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -3,7 +3,6 @@ require 'spec_helper'
|
|
3
3
|
ENV['HIERA_YAML_PATH'] = './spec/fixtures/hiera.yaml'
|
4
4
|
|
5
5
|
describe 'ghostbuster_hiera_files' do
|
6
|
-
include PuppetGhostbusterSpec
|
7
6
|
|
8
7
|
let(:code) { "" }
|
9
8
|
|
@@ -12,13 +11,6 @@ describe 'ghostbuster_hiera_files' do
|
|
12
11
|
context 'when a certname file is NOT used' do
|
13
12
|
let(:path) { "./hieradata/nodes/foo.example.com.yaml" }
|
14
13
|
|
15
|
-
before :each do
|
16
|
-
expect_puppetdb_nodes(
|
17
|
-
[:'=', 'certname', 'foo.example.com'],
|
18
|
-
[]
|
19
|
-
)
|
20
|
-
end
|
21
|
-
|
22
14
|
it 'should detect one problem' do
|
23
15
|
expect(problems).to have(1).problems
|
24
16
|
end
|
@@ -32,10 +24,6 @@ describe 'ghostbuster_hiera_files' do
|
|
32
24
|
let(:path) { "./hieradata/nodes/bar.example.com.yaml" }
|
33
25
|
|
34
26
|
it 'should not detect any problem' do
|
35
|
-
expect_puppetdb_nodes(
|
36
|
-
[:'=', 'certname', 'bar.example.com'],
|
37
|
-
[{}]
|
38
|
-
)
|
39
27
|
expect(problems).to have(0).problems
|
40
28
|
end
|
41
29
|
end
|
@@ -43,13 +31,6 @@ describe 'ghostbuster_hiera_files' do
|
|
43
31
|
context 'when an environment file is NOT used' do
|
44
32
|
let(:path) { "./hieradata/environment/foo.yaml" }
|
45
33
|
|
46
|
-
before :each do
|
47
|
-
expect_puppetdb_nodes(
|
48
|
-
[:'=', ['fact', 'environment'], 'foo'],
|
49
|
-
[]
|
50
|
-
)
|
51
|
-
end
|
52
|
-
|
53
34
|
it 'should detect one problem' do
|
54
35
|
expect(problems).to have(1).problems
|
55
36
|
end
|
@@ -63,10 +44,6 @@ describe 'ghostbuster_hiera_files' do
|
|
63
44
|
let(:path) { "./hieradata/environment/production.yaml" }
|
64
45
|
|
65
46
|
it 'should not detect any problem' do
|
66
|
-
expect_puppetdb_nodes(
|
67
|
-
[:'=', ['fact', 'environment'], 'production'],
|
68
|
-
[{}]
|
69
|
-
)
|
70
47
|
expect(problems).to have(0).problems
|
71
48
|
end
|
72
49
|
end
|
@@ -74,13 +51,6 @@ describe 'ghostbuster_hiera_files' do
|
|
74
51
|
context 'when an fact is NOT used' do
|
75
52
|
let(:path) { "./hieradata/virtual/false.yaml" }
|
76
53
|
|
77
|
-
before :each do
|
78
|
-
expect_puppetdb_nodes(
|
79
|
-
[:'=', ['fact', 'is_virtual'], 'false'],
|
80
|
-
[]
|
81
|
-
)
|
82
|
-
end
|
83
|
-
|
84
54
|
it 'should detect one problem' do
|
85
55
|
expect(problems).to have(1).problems
|
86
56
|
end
|
@@ -94,10 +64,6 @@ describe 'ghostbuster_hiera_files' do
|
|
94
64
|
let(:path) { "./hieradata/virtual/true.yaml" }
|
95
65
|
|
96
66
|
it 'should not detect any problem' do
|
97
|
-
expect_puppetdb_nodes(
|
98
|
-
[:'=', ['fact', 'is_virtual'], 'true'],
|
99
|
-
[{}]
|
100
|
-
)
|
101
67
|
expect(problems).to have(0).problems
|
102
68
|
end
|
103
69
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'ghostbuster_types' do
|
4
|
+
let(:code) { '' }
|
5
|
+
|
6
|
+
context 'with fix disabled' do
|
7
|
+
|
8
|
+
context 'when type is not used' do
|
9
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/puppet/type/foo.rb" }
|
10
|
+
|
11
|
+
it 'should detect one problem' do
|
12
|
+
expect(problems).to have(1).problems
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should create a warning' do
|
16
|
+
expect(problems).to contain_warning("Type Foo seems unused")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when type is used in a manifest' do
|
21
|
+
let(:path) { "./spec/fixtures/modules/foo/lib/puppet/type/bar.rb" }
|
22
|
+
|
23
|
+
it 'should not detect any problem' do
|
24
|
+
expect(problems).to have(0).problems
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,20 @@
|
|
1
1
|
require 'puppet-lint'
|
2
|
+
require 'jgrep'
|
2
3
|
|
3
|
-
|
4
|
-
dir = Pathname.new(__FILE__).parent
|
5
|
-
$LOAD_PATH.unshift(dir, File.join(dir, 'lib'), File.join(dir, '..', 'lib'))
|
4
|
+
PuppetLint::Plugins.load_spec_helper
|
6
5
|
|
7
|
-
|
6
|
+
class PuppetDB::Client
|
7
|
+
def puppetdb_to_jgrep(query)
|
8
|
+
if query[0] == :'and' || query[0] == :'or'
|
9
|
+
"(#{puppetdb_to_jgrep(query[1])} #{query[0]} #{puppetdb_to_jgrep(query[2])})"
|
10
|
+
else
|
11
|
+
"#{[query[1]].flatten.join('.')}#{query[0]}#{query[2]}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def request(endpoint, query, opts={})
|
16
|
+
ret = JGrep.jgrep(File.read("spec/fixtures/#{endpoint}.json"), puppetdb_to_jgrep(query))
|
17
|
+
PuppetDB::Response.new(ret, ret.size)
|
18
|
+
end
|
19
|
+
end
|
8
20
|
|
9
|
-
PuppetLint::Plugins.load_spec_helper
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-ghostbuster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Camptocamp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coveralls
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: jgrep
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: json
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,19 +181,36 @@ files:
|
|
167
181
|
- lib/puppet-ghostbuster/version.rb
|
168
182
|
- lib/puppet-lint/plugins/check_ghostbuster_classes.rb
|
169
183
|
- lib/puppet-lint/plugins/check_ghostbuster_defines.rb
|
184
|
+
- lib/puppet-lint/plugins/check_ghostbuster_facts.rb
|
170
185
|
- lib/puppet-lint/plugins/check_ghostbuster_files.rb
|
186
|
+
- lib/puppet-lint/plugins/check_ghostbuster_functions.rb
|
171
187
|
- lib/puppet-lint/plugins/check_ghostbuster_hiera_files.rb
|
172
188
|
- lib/puppet-lint/plugins/check_ghostbuster_templates.rb
|
189
|
+
- lib/puppet-lint/plugins/check_ghostbuster_types.rb
|
173
190
|
- puppet-ghostbuster.gemspec
|
174
191
|
- spec/fixtures/hiera.yaml
|
192
|
+
- spec/fixtures/modules/foo/lib/facter/bar.rb
|
193
|
+
- spec/fixtures/modules/foo/lib/facter/baz.rb
|
194
|
+
- spec/fixtures/modules/foo/lib/facter/foo.rb
|
195
|
+
- spec/fixtures/modules/foo/lib/facter/multi.rb
|
196
|
+
- spec/fixtures/modules/foo/lib/puppet/parser/functions/bar.rb
|
197
|
+
- spec/fixtures/modules/foo/lib/puppet/parser/functions/baz.rb
|
198
|
+
- spec/fixtures/modules/foo/lib/puppet/parser/functions/foo.rb
|
199
|
+
- spec/fixtures/modules/foo/lib/puppet/parser/functions/quux.rb
|
200
|
+
- spec/fixtures/modules/foo/lib/puppet/type/bar.rb
|
201
|
+
- spec/fixtures/modules/foo/lib/puppet/type/foo.rb
|
175
202
|
- spec/fixtures/modules/foo/manifests/bar.pp
|
176
203
|
- spec/fixtures/modules/foo/templates/foo.erb
|
177
|
-
- spec/
|
204
|
+
- spec/fixtures/nodes.json
|
205
|
+
- spec/fixtures/resources.json
|
178
206
|
- spec/puppet-lint/plugins/ghostbuster_classes_spec.rb
|
179
207
|
- spec/puppet-lint/plugins/ghostbuster_defines_spec.rb
|
208
|
+
- spec/puppet-lint/plugins/ghostbuster_facts_spec.rb
|
180
209
|
- spec/puppet-lint/plugins/ghostbuster_files_spec.rb
|
210
|
+
- spec/puppet-lint/plugins/ghostbuster_functions_spec.rb
|
181
211
|
- spec/puppet-lint/plugins/ghostbuster_hiera_files_spec.rb
|
182
212
|
- spec/puppet-lint/plugins/ghostbuster_templates_spec.rb
|
213
|
+
- spec/puppet-lint/plugins/ghostbuster_types_spec.rb
|
183
214
|
- spec/spec_helper.rb
|
184
215
|
homepage: http://github.com/camptocamp/puppet-ghostbuster
|
185
216
|
licenses:
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module PuppetGhostbusterSpec
|
2
|
-
class PuppetDBRequest
|
3
|
-
def initialize(data)
|
4
|
-
@data = data
|
5
|
-
end
|
6
|
-
|
7
|
-
def data
|
8
|
-
@data
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def expect_puppetdb_nodes(request, data)
|
13
|
-
expect_any_instance_of(PuppetDB::Client).to \
|
14
|
-
receive(:request).with('nodes', request)
|
15
|
-
.and_return(PuppetDBRequest.new(data))
|
16
|
-
end
|
17
|
-
|
18
|
-
def expect_puppetdb_resources(request, data)
|
19
|
-
expect_any_instance_of(PuppetDB::Client).to \
|
20
|
-
receive(:request).with('resources', request)
|
21
|
-
.and_return(PuppetDBRequest.new(data))
|
22
|
-
end
|
23
|
-
end
|