puppet-syntax 2.4.3 → 3.0.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/.gitignore +2 -1
- data/.travis.yml +11 -1
- data/CHANGELOG.md +59 -0
- data/Gemfile +3 -5
- data/README.md +67 -47
- data/lib/puppet-syntax.rb +9 -9
- data/lib/puppet-syntax/hiera.rb +1 -1
- data/lib/puppet-syntax/manifests.rb +9 -8
- data/lib/puppet-syntax/tasks/puppet-syntax.rb +2 -30
- data/lib/puppet-syntax/templates.rb +0 -4
- data/lib/puppet-syntax/version.rb +1 -1
- data/puppet-syntax.gemspec +3 -0
- data/spec/fixtures/test_module/manifests/schedule_notice.pp +5 -0
- data/spec/puppet-syntax/manifests_spec.rb +23 -180
- data/spec/puppet-syntax/tasks/puppet-syntax_spec.rb +1 -1
- data/spec/puppet-syntax/templates_spec.rb +40 -57
- data/spec/puppet-syntax_spec.rb +8 -15
- metadata +20 -5
- data/jenkins.sh +0 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: db77920a61d0b8ea3ccbc521c7dad372f382fe897f7cabb6532acb7a154ae49a
|
|
4
|
+
data.tar.gz: c61d81fc4bb5eb0a655c951c849d0124e3123253ca2fa5de2ecabbe1b524f9e7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d51df8b8a2975e90d44fa9fad4892609b331a95bd459e226af0a7d80589458e059e06149da6412aae6d32de0e0ab058a0517e552be3ab9edf07670c712c3bba7
|
|
7
|
+
data.tar.gz: 8aa88875e46d83c30eac88b28219f1daef4e905782c6997cb0fe8973c84bbbaec6d891d171ecd66930e1e6ab4a9e7154db63a87f4eef99317f000e7ffcf3667c
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
+
dist: bionic
|
|
2
3
|
language: ruby
|
|
3
4
|
# Workaround https://github.com/bundler/bundler/issues/3558
|
|
4
5
|
before_install: gem install bundler
|
|
5
|
-
install: bundle install --jobs 4 --retry 2 --without development
|
|
6
|
+
install: bundle install --jobs 4 --retry 2 --without development release
|
|
6
7
|
script: bundle exec rake
|
|
7
8
|
rvm:
|
|
8
9
|
- 2.4.4
|
|
9
10
|
- 2.5.1
|
|
11
|
+
- 2.6.5
|
|
10
12
|
env:
|
|
11
13
|
- PUPPET_VERSION="~> 5.5.10"
|
|
12
14
|
- PUPPET_VERSION="~> 6.1.0"
|
|
13
15
|
- PUPPET_VERSION="~> 6.2.0"
|
|
16
|
+
- PUPPET_VERSION="~> 6.5.0"
|
|
14
17
|
- PUPPET_VERSION=">= 0"
|
|
15
18
|
- PUPPET_VERSION="git://github.com/puppetlabs/puppet.git#master"
|
|
16
19
|
matrix:
|
|
@@ -28,3 +31,10 @@ deploy:
|
|
|
28
31
|
tags: true
|
|
29
32
|
all_branches: true
|
|
30
33
|
repo: voxpupuli/puppet-syntax
|
|
34
|
+
notifications:
|
|
35
|
+
email: false
|
|
36
|
+
irc:
|
|
37
|
+
on_success: always
|
|
38
|
+
on_failure: always
|
|
39
|
+
channels:
|
|
40
|
+
- "chat.freenode.org#voxpupuli-notifications"
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,65 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [v3.0.1](https://github.com/voxpupuli/puppet-syntax/tree/v3.0.1) (2020-05-27)
|
|
6
|
+
|
|
7
|
+
[Full Changelog](https://github.com/voxpupuli/puppet-syntax/compare/v3.0.0...v3.0.1)
|
|
8
|
+
|
|
9
|
+
**Merged pull requests:**
|
|
10
|
+
|
|
11
|
+
- Avoid failure on schedule metaparameter warning [\#122](https://github.com/voxpupuli/puppet-syntax/pull/122) ([ffapitalle](https://github.com/ffapitalle))
|
|
12
|
+
|
|
13
|
+
## [v3.0.0](https://github.com/voxpupuli/puppet-syntax/tree/v3.0.0) (2020-05-09)
|
|
14
|
+
|
|
15
|
+
[Full Changelog](https://github.com/voxpupuli/puppet-syntax/compare/v2.6.1...v3.0.0)
|
|
16
|
+
|
|
17
|
+
**Breaking changes:**
|
|
18
|
+
|
|
19
|
+
- Drop legacy code to support Puppet \< 5 and Ruby \< 2.4 [\#120](https://github.com/voxpupuli/puppet-syntax/pull/120) ([ekohl](https://github.com/ekohl))
|
|
20
|
+
|
|
21
|
+
**Implemented enhancements:**
|
|
22
|
+
|
|
23
|
+
- Migrate Changelog to GCG [\#93](https://github.com/voxpupuli/puppet-syntax/issues/93)
|
|
24
|
+
|
|
25
|
+
**Merged pull requests:**
|
|
26
|
+
|
|
27
|
+
- cleanup README.md / fix markdown linter warnings [\#119](https://github.com/voxpupuli/puppet-syntax/pull/119) ([bastelfreak](https://github.com/bastelfreak))
|
|
28
|
+
|
|
29
|
+
## [v2.6.1](https://github.com/voxpupuli/puppet-syntax/tree/v2.6.1) (2020-01-11)
|
|
30
|
+
|
|
31
|
+
[Full Changelog](https://github.com/voxpupuli/puppet-syntax/compare/v2.6.0...v2.6.1)
|
|
32
|
+
|
|
33
|
+
**Fixed bugs:**
|
|
34
|
+
|
|
35
|
+
- Add `puppet` gem as runtime dependency [\#116](https://github.com/voxpupuli/puppet-syntax/pull/116) ([bastelfreak](https://github.com/bastelfreak))
|
|
36
|
+
|
|
37
|
+
**Merged pull requests:**
|
|
38
|
+
|
|
39
|
+
- traivs: run tests on Ubuntu 18.04 [\#117](https://github.com/voxpupuli/puppet-syntax/pull/117) ([bastelfreak](https://github.com/bastelfreak))
|
|
40
|
+
- travis: enable irc / disable email notifications [\#114](https://github.com/voxpupuli/puppet-syntax/pull/114) ([bastelfreak](https://github.com/bastelfreak))
|
|
41
|
+
|
|
42
|
+
## [v2.6.0](https://github.com/voxpupuli/puppet-syntax/tree/v2.6.0) (2019-10-05)
|
|
43
|
+
|
|
44
|
+
[Full Changelog](https://github.com/voxpupuli/puppet-syntax/compare/v2.5.0...v2.6.0)
|
|
45
|
+
|
|
46
|
+
**Implemented enhancements:**
|
|
47
|
+
|
|
48
|
+
- add support for validating puppet plans \(fixes \#95, fixes \#96\) [\#97](https://github.com/voxpupuli/puppet-syntax/pull/97) ([slauger](https://github.com/slauger))
|
|
49
|
+
- Allow specifying file paths for manifests and templates too [\#87](https://github.com/voxpupuli/puppet-syntax/pull/87) ([lavagetto](https://github.com/lavagetto))
|
|
50
|
+
|
|
51
|
+
**Merged pull requests:**
|
|
52
|
+
|
|
53
|
+
- Test on ruby 2.6 [\#111](https://github.com/voxpupuli/puppet-syntax/pull/111) ([alexjfisher](https://github.com/alexjfisher))
|
|
54
|
+
- Adding KMS tags to allowed EYAML methods [\#105](https://github.com/voxpupuli/puppet-syntax/pull/105) ([craigwatson](https://github.com/craigwatson))
|
|
55
|
+
|
|
56
|
+
## [v2.5.0](https://github.com/voxpupuli/puppet-syntax/tree/v2.5.0) (2019-07-07)
|
|
57
|
+
|
|
58
|
+
[Full Changelog](https://github.com/voxpupuli/puppet-syntax/compare/v2.4.3...v2.5.0)
|
|
59
|
+
|
|
60
|
+
**Implemented enhancements:**
|
|
61
|
+
|
|
62
|
+
- Support puppet 6.5 [\#106](https://github.com/voxpupuli/puppet-syntax/pull/106) ([alexjfisher](https://github.com/alexjfisher))
|
|
63
|
+
|
|
5
64
|
## [v2.4.3](https://github.com/voxpupuli/puppet-syntax/tree/v2.4.3) (2019-02-09)
|
|
6
65
|
|
|
7
66
|
[Full Changelog](https://github.com/voxpupuli/puppet-syntax/compare/v2.4.2...v2.4.3)
|
data/Gemfile
CHANGED
|
@@ -18,15 +18,13 @@ end
|
|
|
18
18
|
gemspec
|
|
19
19
|
|
|
20
20
|
# Override gemspec for CI matrix builds.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# older version required for ruby 1.9 compat, as it is pulled in as dependency of puppet, this has to be carried by the module
|
|
24
|
-
gem 'json_pure', '<= 2.0.1'
|
|
21
|
+
# But only if the environment variable is set
|
|
22
|
+
gem 'puppet', *location_for(ENV['PUPPET_VERSION'] || '>= 5') if ENV['PUPPET_VERSION']
|
|
25
23
|
|
|
26
24
|
group :test do
|
|
27
25
|
gem 'rspec'
|
|
28
26
|
end
|
|
29
27
|
|
|
30
28
|
group :release do
|
|
31
|
-
gem 'github_changelog_generator', :require => false, :git => 'https://github.com/github-changelog-generator/github-changelog-generator'
|
|
29
|
+
gem 'github_changelog_generator', :require => false, :git => 'https://github.com/github-changelog-generator/github-changelog-generator'
|
|
32
30
|
end
|
data/README.md
CHANGED
|
@@ -4,36 +4,40 @@
|
|
|
4
4
|
|
|
5
5
|
# Puppet::Syntax
|
|
6
6
|
|
|
7
|
-
Puppet::Syntax checks for correct syntax in Puppet manifests, templates, and
|
|
7
|
+
Puppet::Syntax checks for correct syntax in Puppet manifests, templates, and
|
|
8
|
+
Hiera YAML.
|
|
8
9
|
|
|
9
10
|
## Version support
|
|
10
11
|
|
|
11
12
|
Puppet::Syntax is supported with:
|
|
12
13
|
|
|
13
|
-
- Puppet >=
|
|
14
|
-
- Ruby >=
|
|
14
|
+
- Puppet >= 5.0 that provides the `validate` face.
|
|
15
|
+
- Ruby >= 2.4
|
|
15
16
|
|
|
16
17
|
For the specific versions that we test against, see the [TravisCI config](.travis.yml).
|
|
17
18
|
|
|
18
|
-
If you're using `puppetlabs_spec_helper/rake_tasks` and getting unexpected non-zero exit codes, upgrade to [puppetlabs_spec_helper][psh] version 0.8.0 or greater. Versions of `puppetlabs_spec_helper` prior to 0.8.0 conflicted with Puppet::Syntax.
|
|
19
|
-
|
|
20
|
-
[psh]: https://github.com/puppetlabs/puppetlabs_spec_helper
|
|
21
|
-
|
|
22
19
|
## Installation
|
|
23
20
|
|
|
24
|
-
To install Puppet::Syntax, either add it to your module's Gemfile or install
|
|
21
|
+
To install Puppet::Syntax, either add it to your module's Gemfile or install
|
|
22
|
+
the gem manually.
|
|
25
23
|
|
|
26
24
|
* To install with the Gemfile, add:
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
```ruby
|
|
27
|
+
gem 'puppet-syntax'
|
|
28
|
+
```
|
|
29
29
|
|
|
30
30
|
And then execute:
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
```sh
|
|
33
|
+
bundle install
|
|
34
|
+
```
|
|
33
35
|
|
|
34
36
|
* To install the gem yourself, run:
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
```sh
|
|
39
|
+
gem install puppet-syntax
|
|
40
|
+
```
|
|
37
41
|
|
|
38
42
|
## Configuration
|
|
39
43
|
|
|
@@ -41,70 +45,85 @@ To configure Puppet::Syntax, add any of the following settings to your `Rakefile
|
|
|
41
45
|
|
|
42
46
|
* To exclude certain paths from the syntax checks, set:
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
PuppetSyntax.future_parser = true
|
|
48
|
+
```ruby
|
|
49
|
+
PuppetSyntax.exclude_paths = ["vendor/**/*"]
|
|
50
|
+
```
|
|
49
51
|
|
|
50
52
|
* To configure specific paths for the Hiera syntax check, specify `hieradata_paths`. This is useful if you use Hiera data inside your module.
|
|
51
53
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
```ruby
|
|
55
|
+
PuppetSyntax.hieradata_paths = ["**/data/**/*.yaml", "hieradata/**/*.yaml", "hiera*.yaml"]
|
|
56
|
+
```
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
* To configure specific paths for the Puppet syntax checks or for the templates checks, specify `manifests_paths` or `templates_paths` respectively. This is useful if you want to check specific paths only.
|
|
57
59
|
|
|
58
|
-
|
|
60
|
+
```ruby
|
|
61
|
+
PuppetSyntax.manifests_paths = ["**/environments/future/*.pp"]
|
|
62
|
+
PuppetSyntax.templates_paths = ["**/modules/**/templates/*.erb"]
|
|
63
|
+
```
|
|
59
64
|
|
|
60
65
|
* To ignore deprecation warnings, disable `fail_on_deprecation_notices`. By default, `puppet-syntax` fails if it encounters Puppet deprecation notices. If you are working with a legacy code base and want to ignore such non-fatal warnings, you might want to override the default behavior.
|
|
61
66
|
|
|
62
|
-
|
|
67
|
+
```ruby
|
|
68
|
+
PuppetSyntax.fail_on_deprecation_notices = false
|
|
69
|
+
```
|
|
63
70
|
|
|
64
71
|
* To enable a syntax check on Hiera keys, set:
|
|
65
72
|
|
|
66
|
-
|
|
73
|
+
```ruby
|
|
74
|
+
PuppetSyntax.check_hiera_keys = true
|
|
75
|
+
```
|
|
67
76
|
|
|
68
|
-
|
|
77
|
+
This reports common mistakes in key names in Hiera files, such as:
|
|
69
78
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
79
|
+
* Leading `::` in keys, such as: `::notsotypical::warning2: true`.
|
|
80
|
+
* Single colon scope separators, such as: `:picky::warning5: true`.
|
|
81
|
+
* Invalid camel casing, such as: `noCamelCase::warning3: true`.
|
|
82
|
+
* Use of hyphens, such as: `no-hyphens::warning4: true`.
|
|
74
83
|
|
|
75
84
|
## Usage
|
|
76
85
|
|
|
77
86
|
* To enable Puppet::Syntax, include the following in your module's `Rakefile`:
|
|
78
87
|
|
|
79
|
-
|
|
88
|
+
```ruby
|
|
89
|
+
require 'puppet-syntax/tasks/puppet-syntax'
|
|
90
|
+
```
|
|
80
91
|
|
|
81
|
-
|
|
92
|
+
For Continuous Integration, use Puppet::Syntax in conjunction with `puppet-lint`
|
|
93
|
+
and spec tests. Add the following to your module's `Rakefile`:
|
|
82
94
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
```ruby
|
|
96
|
+
task :test => [
|
|
97
|
+
:syntax,
|
|
98
|
+
:lint,
|
|
99
|
+
:spec,
|
|
100
|
+
]
|
|
101
|
+
```
|
|
88
102
|
|
|
89
103
|
* To test all manifests and templates, relative to the location of the `Rakefile`, run:
|
|
90
104
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
105
|
+
```
|
|
106
|
+
$ bundle exec rake syntax
|
|
107
|
+
---> syntax:manifests
|
|
108
|
+
---> syntax:templates
|
|
109
|
+
---> syntax:hiera:yaml
|
|
110
|
+
```
|
|
95
111
|
|
|
96
112
|
* To return a non-zero exit code and an error message on any failures, run:
|
|
97
113
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
114
|
+
```
|
|
115
|
+
$ bundle exec rake syntax
|
|
116
|
+
---> syntax:manifests
|
|
117
|
+
rake aborted!
|
|
118
|
+
Could not parse for environment production: Syntax error at end of file at demo.pp:2
|
|
119
|
+
Tasks: TOP => syntax => syntax:manifests
|
|
120
|
+
(See full trace by running task with --trace)
|
|
121
|
+
```
|
|
104
122
|
|
|
105
123
|
## Checks
|
|
106
124
|
|
|
107
|
-
Puppet::Syntax makes the following checks in the directories and subdirectories
|
|
125
|
+
Puppet::Syntax makes the following checks in the directories and subdirectories
|
|
126
|
+
of the module, relative to the location of the `Rakefile`.
|
|
108
127
|
|
|
109
128
|
### Hiera
|
|
110
129
|
|
|
@@ -130,7 +149,8 @@ Checks `.erb` files in the module for syntax errors.
|
|
|
130
149
|
|
|
131
150
|
Checks `.epp` files in the module for syntax errors.
|
|
132
151
|
|
|
133
|
-
EPP checks are supported in Puppet 4 or greater, or in Puppet 3 with the future
|
|
152
|
+
EPP checks are supported in Puppet 4 or greater, or in Puppet 3 with the future
|
|
153
|
+
parser enabled.
|
|
134
154
|
|
|
135
155
|
## Contributing
|
|
136
156
|
|
data/lib/puppet-syntax.rb
CHANGED
|
@@ -6,28 +6,28 @@ require "puppet/version"
|
|
|
6
6
|
|
|
7
7
|
module PuppetSyntax
|
|
8
8
|
@exclude_paths = []
|
|
9
|
-
@future_parser = false
|
|
10
9
|
@hieradata_paths = [
|
|
11
10
|
"**/data/**/*.*{yaml,yml}",
|
|
12
11
|
"hieradata/**/*.*{yaml,yml}",
|
|
13
12
|
"hiera*.*{yaml,yml}"
|
|
14
13
|
]
|
|
14
|
+
@manifests_paths = [
|
|
15
|
+
'**/*.pp'
|
|
16
|
+
]
|
|
17
|
+
@templates_paths = [
|
|
18
|
+
'**/templates/**/*.erb',
|
|
19
|
+
'**/templates/**/*.epp'
|
|
20
|
+
]
|
|
15
21
|
@fail_on_deprecation_notices = true
|
|
16
|
-
@app_management = Puppet.version.to_i >= 5 ? true : false
|
|
17
22
|
@check_hiera_keys = false
|
|
18
23
|
|
|
19
24
|
class << self
|
|
20
25
|
attr_accessor :exclude_paths,
|
|
21
|
-
:future_parser,
|
|
22
26
|
:hieradata_paths,
|
|
27
|
+
:manifests_paths,
|
|
28
|
+
:templates_paths,
|
|
23
29
|
:fail_on_deprecation_notices,
|
|
24
30
|
:epp_only,
|
|
25
31
|
:check_hiera_keys
|
|
26
|
-
attr_reader :app_management
|
|
27
|
-
|
|
28
|
-
def app_management=(app_management)
|
|
29
|
-
raise 'app_management cannot be disabled on Puppet 5 or higher' if Puppet.version.to_i >= 5 && !app_management
|
|
30
|
-
@app_management = app_management
|
|
31
|
-
end
|
|
32
32
|
end
|
|
33
33
|
end
|
data/lib/puppet-syntax/hiera.rb
CHANGED
|
@@ -56,7 +56,7 @@ module PuppetSyntax
|
|
|
56
56
|
method = 'PKCS7'
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
return "has unknown eyaml method #{method}" unless ['PKCS7','GPG'].include? method
|
|
59
|
+
return "has unknown eyaml method #{method}" unless ['PKCS7','GPG','GKMS','KMS'].include? method
|
|
60
60
|
return "has unpadded or truncated base64 data" unless base64.length % 4 == 0
|
|
61
61
|
|
|
62
62
|
# Base64#decode64 will silently ignore characters outside the alphabet,
|
|
@@ -8,9 +8,7 @@ module PuppetSyntax
|
|
|
8
8
|
|
|
9
9
|
output = []
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
Puppet::Test::TestHelper.initialize
|
|
13
|
-
end
|
|
11
|
+
Puppet::Test::TestHelper.initialize
|
|
14
12
|
Puppet::Test::TestHelper.before_all_tests
|
|
15
13
|
called_before_all_tests = true
|
|
16
14
|
|
|
@@ -21,9 +19,13 @@ module PuppetSyntax
|
|
|
21
19
|
filelist.each do |puppet_file|
|
|
22
20
|
Puppet::Test::TestHelper.before_each_test
|
|
23
21
|
begin
|
|
24
|
-
validate_manifest(puppet_file)
|
|
22
|
+
error = validate_manifest(puppet_file)
|
|
23
|
+
if error.is_a?(Hash) # Puppet 6.5.0 onwards
|
|
24
|
+
output << error.values.first unless error.empty?
|
|
25
|
+
end
|
|
25
26
|
rescue SystemExit
|
|
26
27
|
# Disregard exit(1) from face.
|
|
28
|
+
# This is how puppet < 6.5.0 `validate_manifest` worked.
|
|
27
29
|
rescue => error
|
|
28
30
|
output << error
|
|
29
31
|
ensure
|
|
@@ -39,9 +41,9 @@ module PuppetSyntax
|
|
|
39
41
|
e =~ /^You cannot collect( exported resources)? without storeconfigs being set/
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
# tag
|
|
44
|
+
# tag and schedule parameters in class raise warnings notice in output that prevent from succeed
|
|
43
45
|
output.reject! { |e|
|
|
44
|
-
e =~ /^tag is a metaparam; this value will inherit to all contained resources in the /
|
|
46
|
+
e =~ /^(tag|schedule) is a metaparam; this value will inherit to all contained resources in the /
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
deprecations = output.select { |e|
|
|
@@ -58,8 +60,7 @@ module PuppetSyntax
|
|
|
58
60
|
|
|
59
61
|
private
|
|
60
62
|
def validate_manifest(file)
|
|
61
|
-
Puppet[:
|
|
62
|
-
Puppet[:app_management] = true if PuppetSyntax.app_management && (Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') >= 0 && Puppet.version.to_i < 5)
|
|
63
|
+
Puppet[:tasks] = true if Puppet::Util::Package.versioncmp(Puppet.version, '5.4.0') >= 0 and file.match(/.*plans\/.*\.pp$/)
|
|
63
64
|
Puppet::Face[:parser, :current].validate(file)
|
|
64
65
|
end
|
|
65
66
|
end
|
|
@@ -13,11 +13,11 @@ module PuppetSyntax
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def filelist_manifests
|
|
16
|
-
filelist(
|
|
16
|
+
filelist(PuppetSyntax.manifests_paths)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def filelist_templates
|
|
20
|
-
filelist(
|
|
20
|
+
filelist(PuppetSyntax.templates_paths)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def filelist_hiera_yaml
|
|
@@ -27,42 +27,14 @@ module PuppetSyntax
|
|
|
27
27
|
def initialize(*args)
|
|
28
28
|
desc 'Syntax check Puppet manifests and templates'
|
|
29
29
|
task :syntax => [
|
|
30
|
-
'syntax:check_puppetlabs_spec_helper',
|
|
31
30
|
'syntax:manifests',
|
|
32
31
|
'syntax:templates',
|
|
33
32
|
'syntax:hiera',
|
|
34
33
|
]
|
|
35
34
|
|
|
36
35
|
namespace :syntax do
|
|
37
|
-
task :check_puppetlabs_spec_helper do
|
|
38
|
-
psh_present = task(:syntax).actions.any? { |a|
|
|
39
|
-
a.inspect.match(/puppetlabs_spec_helper\/rake_tasks\.rb:\d+/)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if psh_present
|
|
43
|
-
$stderr.puts <<-EOS
|
|
44
|
-
[WARNING] A conflicting :syntax rake task has been defined by
|
|
45
|
-
puppetlabs_spec_helper/rake_tasks. You should either disable this or upgrade
|
|
46
|
-
to puppetlabs_spec_helper >= 0.8.0 which now uses puppet-syntax.
|
|
47
|
-
EOS
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
36
|
desc 'Syntax check Puppet manifests'
|
|
52
37
|
task :manifests do |t|
|
|
53
|
-
if Puppet.version.to_i >= 4 and PuppetSyntax.future_parser
|
|
54
|
-
$stderr.puts <<-EOS
|
|
55
|
-
[INFO] Puppet 4 has been detected and `future_parser` has been set to
|
|
56
|
-
'true'. The `future_parser setting will be ignored.
|
|
57
|
-
EOS
|
|
58
|
-
end
|
|
59
|
-
if Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') < 0 and PuppetSyntax.app_management
|
|
60
|
-
$stderr.puts <<-EOS
|
|
61
|
-
[WARNING] Puppet `app_management` has been detected but the Puppet
|
|
62
|
-
version is less then 4.3. The `app_management` setting will be ignored.
|
|
63
|
-
EOS
|
|
64
|
-
end
|
|
65
|
-
|
|
66
38
|
$stderr.puts "---> #{t.name}"
|
|
67
39
|
|
|
68
40
|
c = PuppetSyntax::Manifests.new
|
data/puppet-syntax.gemspec
CHANGED
|
@@ -18,7 +18,10 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
+
spec.required_ruby_version = ">= 2.4"
|
|
22
|
+
|
|
21
23
|
spec.add_dependency "rake"
|
|
24
|
+
spec.add_dependency "puppet", ">= 5"
|
|
22
25
|
|
|
23
26
|
spec.add_development_dependency "pry"
|
|
24
27
|
spec.add_development_dependency "rb-readline"
|
|
@@ -24,19 +24,21 @@ describe PuppetSyntax::Manifests do
|
|
|
24
24
|
expect(has_errors).to eq(false)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
it 'should return nothing from a valid file with a class using schedule parameter' do
|
|
28
|
+
files = fixture_manifests('schedule_notice.pp')
|
|
29
|
+
output, has_errors = subject.check(files)
|
|
30
|
+
|
|
31
|
+
expect(output).to eq([])
|
|
32
|
+
expect(has_errors).to eq(false)
|
|
33
|
+
end
|
|
34
|
+
|
|
27
35
|
it 'should return an error from an invalid file' do
|
|
28
36
|
files = fixture_manifests('fail_error.pp')
|
|
29
37
|
output, has_errors = subject.check(files)
|
|
30
38
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
expect(has_errors).to eq(true)
|
|
35
|
-
else
|
|
36
|
-
expect(output.size).to eq(1)
|
|
37
|
-
expect(output[0]).to match(/Syntax error at .*:3$/)
|
|
38
|
-
expect(has_errors).to eq(true)
|
|
39
|
-
end
|
|
39
|
+
expect(output.size).to eq(3)
|
|
40
|
+
expect(output[2]).to match(/2 errors. Giving up/)
|
|
41
|
+
expect(has_errors).to eq(true)
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
it 'should return a warning from an invalid file' do
|
|
@@ -72,181 +74,22 @@ describe PuppetSyntax::Manifests do
|
|
|
72
74
|
output, has_errors = subject.check(files)
|
|
73
75
|
|
|
74
76
|
expect(has_errors).to eq(true)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
expect(output[4]).to match(/Unrecogni(s|z)ed escape sequence '\\\]'/)
|
|
82
|
-
else
|
|
83
|
-
expect(output.size).to eq(3)
|
|
84
|
-
expect(output[0]).to match(/Syntax error at '\}' .*:3$/)
|
|
85
|
-
expect(output[1]).to match(/Unrecogni(s|z)ed escape sequence '\\\['/)
|
|
86
|
-
expect(output[2]).to match(/Unrecogni(s|z)ed escape sequence '\\\]'/)
|
|
87
|
-
end
|
|
77
|
+
expect(output.size).to eq(5)
|
|
78
|
+
expect(output[0]).to match(/This Name has no effect. A Host Class Definition can not end with a value-producing expression without other effect \(file: \S*\/fail_error.pp, line: 2, column: 32\)$/)
|
|
79
|
+
expect(output[1]).to match(/This Name has no effect. A value was produced and then forgotten \(one or more preceding expressions may have the wrong form\) \(file: \S*\/fail_error.pp, line: 2, column: 3\)$/)
|
|
80
|
+
expect(output[2]).to match('2 errors. Giving up')
|
|
81
|
+
expect(output[3]).to match(/Unrecogni(s|z)ed escape sequence '\\\['/)
|
|
82
|
+
expect(output[4]).to match(/Unrecogni(s|z)ed escape sequence '\\\]'/)
|
|
88
83
|
end
|
|
89
84
|
|
|
90
85
|
describe 'deprecation notices' do
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
it 'should instead be failures' do
|
|
95
|
-
files = fixture_manifests('deprecation_notice.pp')
|
|
96
|
-
output, has_errors = subject.check(files)
|
|
97
|
-
|
|
98
|
-
expect(has_errors).to eq(true)
|
|
99
|
-
expect(output.size).to eq(1)
|
|
100
|
-
expect(output[0]).to match (/Node inheritance is not supported in Puppet >= 4.0.0/)
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
when 3.7, 3.8
|
|
104
|
-
context 'on puppet 3.7 and 3.8' do
|
|
105
|
-
it 'should return deprecation notices as warnings' do
|
|
106
|
-
files = fixture_manifests('deprecation_notice.pp')
|
|
107
|
-
output, has_errors = subject.check(files)
|
|
108
|
-
|
|
109
|
-
expect(has_errors).to eq(false)
|
|
110
|
-
expect(output.size).to eq(2)
|
|
111
|
-
expect(output[0]).to match(/The use of 'import' is deprecated/)
|
|
112
|
-
expect(output[1]).to match(/Deprecation notice:/)
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
when 3.5, 3.6
|
|
116
|
-
context 'on puppet 3.5 and 3.6' do
|
|
117
|
-
it 'should return deprecation notices as warnings' do
|
|
118
|
-
files = fixture_manifests('deprecation_notice.pp')
|
|
119
|
-
output, has_errors = subject.check(files)
|
|
120
|
-
|
|
121
|
-
expect(has_errors).to eq(false)
|
|
122
|
-
expect(output.size).to eq(1)
|
|
123
|
-
expect(output[0]).to match(/The use of 'import' is deprecated/)
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
when 3.0..3.4
|
|
127
|
-
context 'on puppet 3.0 to 3.4' do
|
|
128
|
-
it 'should not print deprecation notices' do
|
|
129
|
-
files = fixture_manifests('deprecation_notice.pp')
|
|
130
|
-
output, has_errors = subject.check(files)
|
|
131
|
-
|
|
132
|
-
expect(output).to eq([])
|
|
133
|
-
expect(has_errors).to eq(false)
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
describe 'app_management' do
|
|
140
|
-
after do
|
|
141
|
-
PuppetSyntax.app_management = false if Puppet.version.to_i < 5
|
|
142
|
-
end
|
|
86
|
+
it 'should instead be failures' do
|
|
87
|
+
files = fixture_manifests('deprecation_notice.pp')
|
|
88
|
+
output, has_errors = subject.check(files)
|
|
143
89
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
files = fixture_manifests(['test_app.pp'])
|
|
148
|
-
output,has_errors = subject.check(files)
|
|
149
|
-
|
|
150
|
-
expect(has_errors).to eq(true)
|
|
151
|
-
expect(output).to include(/error/)
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
context 'app_management = true' do
|
|
155
|
-
before(:each) {
|
|
156
|
-
PuppetSyntax.app_management = true
|
|
157
|
-
}
|
|
158
|
-
if Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') >= 0
|
|
159
|
-
it 'should successfully parse an application manifest on Puppet >= 4.3.0' do
|
|
160
|
-
expect(PuppetSyntax.app_management).to eq(true)
|
|
161
|
-
|
|
162
|
-
files = fixture_manifests(['test_app.pp'])
|
|
163
|
-
output,has_errors = subject.check(files)
|
|
164
|
-
|
|
165
|
-
expect(output.size).to eq(0)
|
|
166
|
-
expect(has_errors).to eq(false)
|
|
167
|
-
end
|
|
168
|
-
else
|
|
169
|
-
it 'should fail to parse an application manifest on Puppet < 4.3.0' do
|
|
170
|
-
expect(PuppetSyntax.app_management).to eq(true)
|
|
171
|
-
|
|
172
|
-
files = fixture_manifests(['test_app.pp'])
|
|
173
|
-
output,has_errors = subject.check(files)
|
|
174
|
-
|
|
175
|
-
expect(output).to include(/error/)
|
|
176
|
-
expect(has_errors).to eq(true)
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
describe 'future_parser' do
|
|
184
|
-
context 'future_parser = false (default)' do
|
|
185
|
-
if Puppet::Util::Package.versioncmp(Puppet.version, '4.0') < 0
|
|
186
|
-
it 'should fail without setting future option to true on future manifest on Puppet < 4.0.0' do
|
|
187
|
-
expect(PuppetSyntax.future_parser).to eq(false)
|
|
188
|
-
|
|
189
|
-
files = fixture_manifests(['future_syntax.pp'])
|
|
190
|
-
output, has_errors = subject.check(files)
|
|
191
|
-
|
|
192
|
-
expect(output.size).to eq(1)
|
|
193
|
-
expect(output[0]).to match(/Syntax error at '='; expected '\}' .*:2$/)
|
|
194
|
-
expect(has_errors).to eq(true)
|
|
195
|
-
end
|
|
196
|
-
else
|
|
197
|
-
it 'should succeed on Puppet >= 4.0.0' do
|
|
198
|
-
expect(PuppetSyntax.future_parser).to eq(false)
|
|
199
|
-
|
|
200
|
-
files = fixture_manifests(['future_syntax.pp'])
|
|
201
|
-
output, has_errors = subject.check(files)
|
|
202
|
-
|
|
203
|
-
expect(output.size).to eq(0)
|
|
204
|
-
expect(has_errors).to eq(false)
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
context 'future_parser = true' do
|
|
210
|
-
before(:each) {
|
|
211
|
-
PuppetSyntax.future_parser = true
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
if Puppet::Util::Package.versioncmp(Puppet.version, '3.2') >= 0 and Puppet.version.to_i < 4
|
|
215
|
-
context 'Puppet >= 3.2 < 4' do
|
|
216
|
-
it 'should pass with future option set to true on future manifest' do
|
|
217
|
-
files = fixture_manifests(['future_syntax.pp'])
|
|
218
|
-
output, has_errors = subject.check(files)
|
|
219
|
-
|
|
220
|
-
expect(output).to eq([])
|
|
221
|
-
expect(has_errors).to eq(false)
|
|
222
|
-
end
|
|
223
|
-
end
|
|
224
|
-
context 'Puppet >= 3.7 < 4' do
|
|
225
|
-
# Certain elements of the future parser weren't added until 3.7
|
|
226
|
-
if Puppet::Util::Package.versioncmp(Puppet.version, '3.7') >= 0
|
|
227
|
-
it 'should fail on what were deprecation notices in the non-future parser' do
|
|
228
|
-
files = fixture_manifests('deprecation_notice.pp')
|
|
229
|
-
output, has_errors = subject.check(files)
|
|
230
|
-
|
|
231
|
-
expect(output.size).to eq(1)
|
|
232
|
-
expect(output[0]).to match(/Node inheritance is not supported/)
|
|
233
|
-
expect(has_errors).to eq(true)
|
|
234
|
-
end
|
|
235
|
-
end
|
|
236
|
-
end
|
|
237
|
-
elsif Puppet::Util::Package.versioncmp(Puppet.version, '3.2') < 0
|
|
238
|
-
context 'Puppet < 3.2' do
|
|
239
|
-
it 'should return an error that the parser option is not supported' do
|
|
240
|
-
files = fixture_manifests(['future_syntax.pp'])
|
|
241
|
-
output, has_errors = subject.check(files)
|
|
242
|
-
|
|
243
|
-
expect(output.size).to eq(1)
|
|
244
|
-
expect(output[0]).to match("Attempt to assign a value to unknown configuration parameter :parser")
|
|
245
|
-
expect(has_errors).to eq(true)
|
|
246
|
-
end
|
|
247
|
-
end
|
|
248
|
-
end
|
|
90
|
+
expect(has_errors).to eq(true)
|
|
91
|
+
expect(output.size).to eq(1)
|
|
92
|
+
expect(output[0]).to match (/Node inheritance is not supported in Puppet >= 4.0.0/)
|
|
249
93
|
end
|
|
250
94
|
end
|
|
251
|
-
|
|
252
95
|
end
|
|
@@ -18,7 +18,7 @@ describe 'PuppetSyntax rake tasks' do
|
|
|
18
18
|
it 'should generate FileList of manifests relative to Rakefile' do
|
|
19
19
|
list = PuppetSyntax::RakeTask.new.filelist_manifests
|
|
20
20
|
expect(list).to include(known_pp)
|
|
21
|
-
expect(list.count).to eq
|
|
21
|
+
expect(list.count).to eq 9
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it 'should generate FileList of templates relative to Rakefile' do
|
|
@@ -2,6 +2,13 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
describe PuppetSyntax::Templates do
|
|
4
4
|
let(:subject) { PuppetSyntax::Templates.new }
|
|
5
|
+
let(:conditional_warning_regex) do
|
|
6
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6.0')
|
|
7
|
+
%r{2: warning: found `= literal' in conditional}
|
|
8
|
+
else
|
|
9
|
+
%r{2: warning: found = in conditional}
|
|
10
|
+
end
|
|
11
|
+
end
|
|
5
12
|
|
|
6
13
|
it 'should expect an array of files' do
|
|
7
14
|
expect { subject.check(nil) }.to raise_error(/Expected an array of files/)
|
|
@@ -34,7 +41,7 @@ describe PuppetSyntax::Templates do
|
|
|
34
41
|
res = subject.check(files)
|
|
35
42
|
|
|
36
43
|
expect(res.size).to eq(1)
|
|
37
|
-
expect(res[0]).to match(
|
|
44
|
+
expect(res[0]).to match(conditional_warning_regex)
|
|
38
45
|
end
|
|
39
46
|
|
|
40
47
|
it 'should read more than one valid file' do
|
|
@@ -50,7 +57,7 @@ describe PuppetSyntax::Templates do
|
|
|
50
57
|
|
|
51
58
|
expect(res.size).to eq(2)
|
|
52
59
|
expect(res[0]).to match(/2: syntax error, unexpected/)
|
|
53
|
-
expect(res[1]).to match(
|
|
60
|
+
expect(res[1]).to match(conditional_warning_regex)
|
|
54
61
|
end
|
|
55
62
|
|
|
56
63
|
it 'should ignore a TypeError' do
|
|
@@ -67,71 +74,47 @@ describe PuppetSyntax::Templates do
|
|
|
67
74
|
expect(res).to match([])
|
|
68
75
|
end
|
|
69
76
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
file = fixture_templates('pass.epp')
|
|
74
|
-
expect{ subject.check(file) }.to raise_error(/Cannot validate EPP without Puppet 4/)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
context "when the 'epp_only' options is set" do
|
|
78
|
-
before(:each) {
|
|
79
|
-
PuppetSyntax.epp_only = true
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
it 'should throw an exception for any file' do
|
|
83
|
-
file = fixture_templates('pass.erb')
|
|
84
|
-
expect{ subject.check(file) }.to raise_error(/Cannot validate EPP without Puppet 4/)
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
if Puppet.version.to_f >= 3.7
|
|
91
|
-
context 'on Puppet >= 3.7' do
|
|
92
|
-
it 'should return nothing from a valid file' do
|
|
93
|
-
files = fixture_templates('pass.epp')
|
|
94
|
-
res = subject.check(files)
|
|
77
|
+
it 'should return nothing from a valid file' do
|
|
78
|
+
files = fixture_templates('pass.epp')
|
|
79
|
+
res = subject.check(files)
|
|
95
80
|
|
|
96
|
-
|
|
97
|
-
|
|
81
|
+
expect(res).to match([])
|
|
82
|
+
end
|
|
98
83
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
84
|
+
it 'should catch SyntaxError' do
|
|
85
|
+
files = fixture_templates('fail_error.epp')
|
|
86
|
+
res = subject.check(files)
|
|
102
87
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
88
|
+
expect(res.size).to eq(1)
|
|
89
|
+
expect(res[0]).to match(/This Type-Name has no effect/)
|
|
90
|
+
end
|
|
106
91
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
92
|
+
it 'should read more than one valid file' do
|
|
93
|
+
files = fixture_templates(['pass.epp', 'pass_also.epp'])
|
|
94
|
+
res = subject.check(files)
|
|
110
95
|
|
|
111
|
-
|
|
112
|
-
|
|
96
|
+
expect(res).to match([])
|
|
97
|
+
end
|
|
113
98
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
99
|
+
it 'should continue after finding an error in the first file' do
|
|
100
|
+
files = fixture_templates(['fail_error.epp', 'fail_error_also.epp'])
|
|
101
|
+
res = subject.check(files)
|
|
117
102
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
103
|
+
expect(res.size).to eq(2)
|
|
104
|
+
expect(res[0]).to match(/This Type-Name has no effect/)
|
|
105
|
+
expect(res[1]).to match(/Syntax error at '}' \(file: \S*\/fail_error_also.epp, line: 2, column: 4\)/)
|
|
106
|
+
end
|
|
122
107
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
108
|
+
context "when the 'epp_only' options is set" do
|
|
109
|
+
before(:each) {
|
|
110
|
+
PuppetSyntax.epp_only = true
|
|
111
|
+
}
|
|
127
112
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
113
|
+
it 'should process an ERB as EPP and find an error' do
|
|
114
|
+
files = fixture_templates('pass.erb')
|
|
115
|
+
res = subject.check(files)
|
|
131
116
|
|
|
132
|
-
|
|
133
|
-
end
|
|
134
|
-
end
|
|
117
|
+
expect(res.size).to eq(1)
|
|
135
118
|
end
|
|
136
119
|
end
|
|
137
120
|
end
|
data/spec/puppet-syntax_spec.rb
CHANGED
|
@@ -3,7 +3,6 @@ require 'spec_helper'
|
|
|
3
3
|
describe PuppetSyntax do
|
|
4
4
|
after do
|
|
5
5
|
PuppetSyntax.exclude_paths = []
|
|
6
|
-
PuppetSyntax.app_management = false if Puppet.version.to_i < 5
|
|
7
6
|
end
|
|
8
7
|
|
|
9
8
|
it 'should default exclude_paths to include the pkg directory' do
|
|
@@ -20,20 +19,6 @@ describe PuppetSyntax do
|
|
|
20
19
|
expect(PuppetSyntax.exclude_paths).to eq(["foo"])
|
|
21
20
|
end
|
|
22
21
|
|
|
23
|
-
it 'should support future parser setting' do
|
|
24
|
-
PuppetSyntax.future_parser = true
|
|
25
|
-
expect(PuppetSyntax.future_parser).to eq(true)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it 'should support app_management setting setting' do
|
|
29
|
-
PuppetSyntax.app_management = true
|
|
30
|
-
expect(PuppetSyntax.app_management).to eq(true)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it 'should raise error when app_management is disabled on 5.x', :if => (Puppet.version.to_i >= 5) do
|
|
34
|
-
expect { PuppetSyntax.app_management = false }.to raise_error(/app_management cannot be disabled on Puppet 5 or higher/)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
22
|
it 'should support a fail_on_deprecation_notices setting' do
|
|
38
23
|
PuppetSyntax.fail_on_deprecation_notices = false
|
|
39
24
|
expect(PuppetSyntax.fail_on_deprecation_notices).to eq(false)
|
|
@@ -44,4 +29,12 @@ describe PuppetSyntax do
|
|
|
44
29
|
expect(PuppetSyntax.epp_only).to eq(true)
|
|
45
30
|
end
|
|
46
31
|
|
|
32
|
+
it 'should support setting paths for manifests, templates and hiera' do
|
|
33
|
+
PuppetSyntax.hieradata_paths = []
|
|
34
|
+
expect(PuppetSyntax.hieradata_paths).to eq([])
|
|
35
|
+
PuppetSyntax.manifests_paths = ["**/environments/production/**/*.pp"]
|
|
36
|
+
expect(PuppetSyntax.manifests_paths).to eq(["**/environments/production/**/*.pp"])
|
|
37
|
+
PuppetSyntax.templates_paths = []
|
|
38
|
+
expect(PuppetSyntax.templates_paths).to eq([])
|
|
39
|
+
end
|
|
47
40
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: puppet-syntax
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vox Pupuli
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-05-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -24,6 +24,20 @@ dependencies:
|
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: puppet
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '5'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '5'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: pry
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -81,7 +95,6 @@ files:
|
|
|
81
95
|
- LICENSE.txt
|
|
82
96
|
- README.md
|
|
83
97
|
- Rakefile
|
|
84
|
-
- jenkins.sh
|
|
85
98
|
- lib/puppet-syntax.rb
|
|
86
99
|
- lib/puppet-syntax/hiera.rb
|
|
87
100
|
- lib/puppet-syntax/manifests.rb
|
|
@@ -105,6 +118,7 @@ files:
|
|
|
105
118
|
- spec/fixtures/test_module/manifests/future_syntax.pp
|
|
106
119
|
- spec/fixtures/test_module/manifests/pass.pp
|
|
107
120
|
- spec/fixtures/test_module/manifests/pass_storeconfigs.pp
|
|
121
|
+
- spec/fixtures/test_module/manifests/schedule_notice.pp
|
|
108
122
|
- spec/fixtures/test_module/manifests/tag_notice.pp
|
|
109
123
|
- spec/fixtures/test_module/manifests/test_app.pp
|
|
110
124
|
- spec/fixtures/test_module/templates/fail_error.epp
|
|
@@ -135,14 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
135
149
|
requirements:
|
|
136
150
|
- - ">="
|
|
137
151
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: '
|
|
152
|
+
version: '2.4'
|
|
139
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
154
|
requirements:
|
|
141
155
|
- - ">="
|
|
142
156
|
- !ruby/object:Gem::Version
|
|
143
157
|
version: '0'
|
|
144
158
|
requirements: []
|
|
145
|
-
rubygems_version: 3.0.
|
|
159
|
+
rubygems_version: 3.0.6
|
|
146
160
|
signing_key:
|
|
147
161
|
specification_version: 4
|
|
148
162
|
summary: Syntax checks for Puppet manifests, templates, and Hiera YAML
|
|
@@ -163,6 +177,7 @@ test_files:
|
|
|
163
177
|
- spec/fixtures/test_module/manifests/future_syntax.pp
|
|
164
178
|
- spec/fixtures/test_module/manifests/pass.pp
|
|
165
179
|
- spec/fixtures/test_module/manifests/pass_storeconfigs.pp
|
|
180
|
+
- spec/fixtures/test_module/manifests/schedule_notice.pp
|
|
166
181
|
- spec/fixtures/test_module/manifests/tag_notice.pp
|
|
167
182
|
- spec/fixtures/test_module/manifests/test_app.pp
|
|
168
183
|
- spec/fixtures/test_module/templates/fail_error.epp
|
data/jenkins.sh
DELETED