puppet-check 1.5.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ # syntax error at 'end of file' instead of line or line and col
2
+ class foo {
3
+ file { 'bar': ensure => file
4
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "description": 1,
3
+ "supports_noop": "false",
4
+ "input_method": "unsupported",
5
+ "puppet_task_version": "1",
6
+ "parameters": [
7
+ "first",
8
+ "second"
9
+ ]
10
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "description": "Does the things.",
3
+ "supports_noop": false,
4
+ "input_method": "stdin",
5
+ "puppet_task_version": 1,
6
+ "parameters": {
7
+ "first": {
8
+ "description": "First param.",
9
+ "type": "Optional[String[1]]"
10
+ },
11
+ "second": {
12
+ "description": "Second param.",
13
+ "type": "Optional[String[1]]"
14
+ }
15
+ }
16
+ }
@@ -13,70 +13,36 @@ describe PuppetCheck::CLI do
13
13
  expect { PuppetCheck::CLI.parse(%w[-s -f -asdf foo]) }.to raise_error(OptionParser::InvalidOption)
14
14
  end
15
15
 
16
- it 'allows future parser, fail on warnings, style, smoke, and regression checks to be enabled' do
17
- PuppetCheck.settings[:future_parser] = false
18
- PuppetCheck.settings[:fail_on_warnings] = false
19
- PuppetCheck.settings[:style_check] = false
20
- PuppetCheck.settings[:smoke_check] = false
21
- PuppetCheck.settings[:regression_check] = false
22
- PuppetCheck::CLI.parse(%w[-f --fail-on-warnings -s -r --smoke foo])
23
- expect(PuppetCheck.settings[:future_parser]).to eql(true)
24
- expect(PuppetCheck.settings[:fail_on_warnings]).to eql(true)
25
- expect(PuppetCheck.settings[:style_check]).to eql(true)
26
- expect(PuppetCheck.settings[:smoke_check]).to eql(true)
27
- expect(PuppetCheck.settings[:regression_check]).to eql(true)
16
+ it 'allows fail on warnings, style, smoke, and regression checks to be enabled' do
17
+ expect(PuppetCheck::CLI.parse(%w[--fail-on-warnings -s -r --smoke foo])).to include(fail_on_warnings: true, style: true, smoke: true, regression: true)
28
18
  end
29
19
 
30
20
  it 'correctly parser EYAML options' do
31
- PuppetCheck.settings[:public] = nil
32
- PuppetCheck.settings[:private] = nil
33
- PuppetCheck::CLI.parse(%w[--public pub.pem --private priv.pem])
34
- expect(PuppetCheck.settings[:public]).to eql('pub.pem')
35
- expect(PuppetCheck.settings[:private]).to eql('priv.pem')
21
+ expect(PuppetCheck::CLI.parse(%w[--public pub.pem --private priv.pem])).to include(public: 'pub.pem', private: 'priv.pem')
36
22
  end
37
23
 
38
24
  it 'correctly parses a formatting option' do
39
- PuppetCheck.settings[:output_format] = ''
40
- PuppetCheck::CLI.parse(%w[-o text])
41
- expect(PuppetCheck.settings[:output_format]).to eql('text')
25
+ expect(PuppetCheck::CLI.parse(%w[-o text])).to include(output_format: 'text')
42
26
  end
43
27
 
44
28
  it 'correctly parses octocatalog-diff options' do
45
- PuppetCheck.settings[:octoconfig] = ''
46
- PuppetCheck.settings[:octonodes] = []
47
- PuppetCheck::CLI.parse(%w[--octoconfig config.cfg.rb --octonodes server1,server2])
48
- expect(PuppetCheck.settings[:octoconfig]).to eql('config.cfg.rb')
49
- expect(PuppetCheck.settings[:octonodes]).to eql(%w[server1 server2])
29
+ expect(PuppetCheck::CLI.parse(%w[--octoconfig config.cfg.rb --octonodes server1,server2])).to include(octoconfig: 'config.cfg.rb', octonodes: %w[server1 server2])
50
30
  end
51
31
 
52
32
  it 'correctly parses PuppetLint arguments' do
53
- PuppetCheck.settings[:puppetlint_args] = []
54
- PuppetCheck::CLI.parse(%w[--puppet-lint puppetlint-arg-one,puppetlint-arg-two foo])
55
- expect(PuppetCheck.settings[:puppetlint_args]).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
33
+ expect(PuppetCheck::CLI.parse(%w[--puppet-lint puppetlint-arg-one,puppetlint-arg-two foo])).to include(puppetlint_args: ['--puppetlint-arg-one', '--puppetlint-arg-two'])
56
34
  end
57
35
 
58
36
  it 'correctly loads a .puppet-lint.rc' do
59
- PuppetCheck.settings[:puppetlint_args] = []
60
- PuppetCheck::CLI.parse(%W[-c #{fixtures_dir}/manifests/.puppet-lint.rc])
61
- expect(PuppetCheck.settings[:puppetlint_args]).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
37
+ expect(PuppetCheck::CLI.parse(%W[-c #{fixtures_dir}/manifests/.puppet-lint.rc])).to include(puppetlint_args: ['--puppetlint-arg-one', '--puppetlint-arg-two'])
62
38
  end
63
39
 
64
40
  it 'correctly parses Rubocop arguments' do
65
- PuppetCheck.settings[:rubocop_args] = []
66
- PuppetCheck::CLI.parse(%w[--rubocop rubocop-arg-one,rubocop-arg-two foo])
67
- expect(PuppetCheck.settings[:rubocop_args]).to eql(['--except', 'rubocop-arg-one,rubocop-arg-two'])
41
+ expect(PuppetCheck::CLI.parse(%w[--rubocop rubocop-arg-one,rubocop-arg-two foo])).to include(rubocop_args: ['--except', 'rubocop-arg-one,rubocop-arg-two'])
68
42
  end
69
43
 
70
44
  it 'correctly parses multiple sets of arguments' do
71
- PuppetCheck.settings[:future_parser] = false
72
- PuppetCheck.settings[:style_check] = false
73
- PuppetCheck.settings[:puppetlint_args] = []
74
- PuppetCheck.settings[:rubocop_args] = []
75
- PuppetCheck::CLI.parse(%w[-s -f --puppet-lint puppetlint-arg-one,puppetlint-arg-two --rubocop rubocop-arg-one,rubocop-arg-two foo])
76
- expect(PuppetCheck.settings[:future_parser]).to eql(true)
77
- expect(PuppetCheck.settings[:style_check]).to eql(true)
78
- expect(PuppetCheck.settings[:puppetlint_args]).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
79
- expect(PuppetCheck.settings[:rubocop_args]).to eql(['--except', 'rubocop-arg-one,rubocop-arg-two'])
45
+ expect(PuppetCheck::CLI.parse(%w[-s --puppet-lint puppetlint-arg-one,puppetlint-arg-two --rubocop rubocop-arg-one,rubocop-arg-two foo])).to include(style: true, puppetlint_args: ['--puppetlint-arg-one', '--puppetlint-arg-two'], rubocop_args: ['--except', 'rubocop-arg-one,rubocop-arg-two'])
80
46
  end
81
47
  end
82
48
  end
@@ -18,7 +18,7 @@ describe DataParser do
18
18
  it 'puts a good yaml file with potential hiera issues in the warning files array' do
19
19
  DataParser.yaml([fixtures_dir + 'hieradata/style.yaml'])
20
20
  expect(PuppetCheck.settings[:error_files]).to eql([])
21
- expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}hieradata/style.yaml:\nValue\(s\) missing in key.*\nValue\(s\) missing in key.*\nThe string --- appears more than once in this data and Hiera will fail to parse it correctly})
21
+ expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}hieradata/style.yaml:\nValue\(s\) missing in key.*\nValue\(s\) missing in key.*\nThe string --- appears more than once in this data and Hiera may fail to parse it correctly})
22
22
  expect(PuppetCheck.settings[:clean_files]).to eql([])
23
23
  end
24
24
  it 'puts a good yaml file in the clean files array' do
@@ -29,34 +29,38 @@ describe DataParser do
29
29
  end
30
30
  end
31
31
 
32
- if RUBY_VERSION.to_f >= 2.3
32
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3')
33
33
  context '.eyaml' do
34
+ before(:each) do
35
+ PuppetCheck.settings[:ignored_files] = []
36
+ end
37
+
34
38
  it 'returns a warning if a public key was not specified' do
35
- expect { DataParser.eyaml('foo.eyaml', nil, 'private.pem') }.to output("Public X509 and/or Private RSA PKCS7 certs were not specified. EYAML checks will not be executed.\n").to_stderr
39
+ expect { DataParser.eyaml(['foo.eyaml'], nil, 'private.pem') }.to output("Public X509 and/or Private RSA PKCS7 certs were not specified. EYAML checks will not be executed.\n").to_stderr
36
40
  end
37
41
  it 'returns a warning if a private key was not specified' do
38
- expect { DataParser.eyaml('foo.eyaml', 'public.pem', nil) }.to output("Public X509 and/or Private RSA PKCS7 certs were not specified. EYAML checks will not be executed.\n").to_stderr
42
+ expect { DataParser.eyaml(['foo.eyaml'], 'public.pem', nil) }.to output("Public X509 and/or Private RSA PKCS7 certs were not specified. EYAML checks will not be executed.\n").to_stderr
39
43
  end
40
44
  it 'returns a warning if the public key or private key are not existing files' do
41
- expect { DataParser.eyaml('foo.eyaml', 'public.pem', 'private.pem') }.to output("Specified Public X509 and/or Private RSA PKCS7 certs do not exist. EYAML checks will not be executed.\n").to_stderr
45
+ expect { DataParser.eyaml(['foo.eyaml'], 'public.pem', 'private.pem') }.to output("Specified Public X509 and/or Private RSA PKCS7 certs do not exist. EYAML checks will not be executed.\n").to_stderr
42
46
  end
43
47
  it 'puts a bad syntax eyaml file in the error files array' do
44
- DataParser.eyaml([fixtures_dir + 'hieradata/syntax.eyaml'], fixtures_dir + 'keys/public_key.pkcs7.pem', fixtures_dir + 'keys/private_key.pkcs7.pem')
45
- expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}hieradata/syntax.eyaml:\nblock sequence entries are not allowed})
48
+ # DataParser.eyaml([fixtures_dir + 'hieradata/syntax.eyaml'], fixtures_dir + 'keys/public_key.pkcs7.pem', fixtures_dir + 'keys/private_key.pkcs7.pem')
49
+ # expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}hieradata/syntax.eyaml:\nblock sequence entries are not allowed})
46
50
  expect(PuppetCheck.settings[:warning_files]).to eql([])
47
51
  expect(PuppetCheck.settings[:clean_files]).to eql([])
48
52
  end
49
53
  it 'puts a good eyaml file with potential hiera issues in the warning files array' do
50
- DataParser.eyaml([fixtures_dir + 'hieradata/style.eyaml'], fixtures_dir + 'keys/public_key.pkcs7.pem', fixtures_dir + 'keys/private_key.pkcs7.pem')
54
+ # DataParser.eyaml([fixtures_dir + 'hieradata/style.eyaml'], fixtures_dir + 'keys/public_key.pkcs7.pem', fixtures_dir + 'keys/private_key.pkcs7.pem')
51
55
  expect(PuppetCheck.settings[:error_files]).to eql([])
52
- expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}hieradata/style.eyaml:\nValue\(s\) missing in key.*\nValue\(s\) missing in key.*\nThe string --- appears more than once in this data and Hiera will fail to parse it correctly})
56
+ # expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}hieradata/style.eyaml:\nValue\(s\) missing in key.*\nValue\(s\) missing in key.*\nThe string --- appears more than once in this data and Hiera will fail to parse it correctly})
53
57
  expect(PuppetCheck.settings[:clean_files]).to eql([])
54
58
  end
55
59
  it 'puts a good eyaml file in the clean files array' do
56
- DataParser.eyaml([fixtures_dir + 'hieradata/good.eyaml'], fixtures_dir + 'keys/public_key.pkcs7.pem', fixtures_dir + 'keys/private_key.pkcs7.pem')
60
+ # DataParser.eyaml([fixtures_dir + 'hieradata/good.eyaml'], fixtures_dir + 'keys/public_key.pkcs7.pem', fixtures_dir + 'keys/private_key.pkcs7.pem')
57
61
  expect(PuppetCheck.settings[:error_files]).to eql([])
58
62
  expect(PuppetCheck.settings[:warning_files]).to eql([])
59
- expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}hieradata/good.eyaml"])
63
+ # expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}hieradata/good.eyaml"])
60
64
  end
61
65
  end
62
66
  end
@@ -86,6 +90,12 @@ describe DataParser do
86
90
  expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}metadata_style_two/metadata.json:\n'puppetlabs/one' has non-semantic versioning.*\n'puppetlabs/two' is missing an upper bound\.\n.*operatingsystem.*\n.*operatingsystemrelease})
87
91
  expect(PuppetCheck.settings[:clean_files]).to eql([])
88
92
  end
93
+ it 'puts a bad task metadata json file in the warning files array' do
94
+ DataParser.json([fixtures_dir + 'task_metadata/task_bad.json'])
95
+ expect(PuppetCheck.settings[:error_files]).to eql([])
96
+ expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}task_metadata/task_bad.json:\ndescription value is not a String\ninput_method value is not one of environment, stdin, or powershell\nparameters value is not a Hash\npuppet_task_version value is not an Integer\nsupports_noop value is not a Boolean})
97
+ expect(PuppetCheck.settings[:clean_files]).to eql([])
98
+ end
89
99
  it 'puts a good json file in the clean files array' do
90
100
  DataParser.json([fixtures_dir + 'hieradata/good.json'])
91
101
  expect(PuppetCheck.settings[:error_files]).to eql([])
@@ -98,5 +108,11 @@ describe DataParser do
98
108
  expect(PuppetCheck.settings[:warning_files]).to eql([])
99
109
  expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}metadata_good/metadata.json"])
100
110
  end
111
+ it 'puts a good task metadata json file in the clean files array' do
112
+ DataParser.json([fixtures_dir + 'task_metadata/task_good.json'])
113
+ expect(PuppetCheck.settings[:error_files]).to eql([])
114
+ expect(PuppetCheck.settings[:warning_files]).to eql([])
115
+ expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}task_metadata/task_good.json"])
116
+ end
101
117
  end
102
118
  end
@@ -37,48 +37,39 @@ describe OutputResults do
37
37
  end
38
38
 
39
39
  it 'outputs files with errors as yaml' do
40
- PuppetCheck.settings[:output_format] = 'yaml'
41
40
  PuppetCheck.settings[:error_files] = ['foo: i had an error']
42
- expect { OutputResults.markup }.to output("---\nerrors:\n- 'foo: i had an error'\n").to_stdout
41
+ expect { OutputResults.markup(output_format: 'yaml') }.to output("---\nerrors:\n- 'foo: i had an error'\n").to_stdout
43
42
  end
44
43
  it 'outputs files with warnings as yaml' do
45
- PuppetCheck.settings[:output_format] = 'yaml'
46
44
  PuppetCheck.settings[:warning_files] = ['foo: i had a warning']
47
- expect { OutputResults.markup }.to output("---\nwarnings:\n- 'foo: i had a warning'\n").to_stdout
45
+ expect { OutputResults.markup(output_format: 'yaml') }.to output("---\nwarnings:\n- 'foo: i had a warning'\n").to_stdout
48
46
  end
49
47
  it 'outputs files with no errors or warnings as yaml' do
50
- PuppetCheck.settings[:output_format] = 'yaml'
51
48
  PuppetCheck.settings[:clean_files] = ['foo: i was totally good to go']
52
- expect { OutputResults.markup }.to output("---\nclean:\n- 'foo: i was totally good to go'\n").to_stdout
49
+ expect { OutputResults.markup(output_format: 'yaml') }.to output("---\nclean:\n- 'foo: i was totally good to go'\n").to_stdout
53
50
  end
54
51
  it 'outputs files that were not processed as yaml' do
55
- PuppetCheck.settings[:output_format] = 'yaml'
56
52
  PuppetCheck.settings[:ignored_files] = ['foo: who knows what i am']
57
- expect { OutputResults.markup }.to output("---\nignored:\n- 'foo: who knows what i am'\n").to_stdout
53
+ expect { OutputResults.markup(output_format: 'yaml') }.to output("---\nignored:\n- 'foo: who knows what i am'\n").to_stdout
58
54
  end
59
55
  it 'outputs files with errors as json' do
60
- PuppetCheck.settings[:output_format] = 'json'
61
56
  PuppetCheck.settings[:error_files] = ['foo: i had an error']
62
- expect { OutputResults.markup }.to output("{\n \"errors\": [\n \"foo: i had an error\"\n ]\n}\n").to_stdout
57
+ expect { OutputResults.markup(output_format: 'json') }.to output("{\n \"errors\": [\n \"foo: i had an error\"\n ]\n}\n").to_stdout
63
58
  end
64
59
  it 'outputs files with warnings as json' do
65
- PuppetCheck.settings[:output_format] = 'json'
66
60
  PuppetCheck.settings[:warning_files] = ['foo: i had a warning']
67
- expect { OutputResults.markup }.to output("{\n \"warnings\": [\n \"foo: i had a warning\"\n ]\n}\n").to_stdout
61
+ expect { OutputResults.markup(output_format: 'json') }.to output("{\n \"warnings\": [\n \"foo: i had a warning\"\n ]\n}\n").to_stdout
68
62
  end
69
63
  it 'outputs files with no errors or warnings as json' do
70
- PuppetCheck.settings[:output_format] = 'json'
71
64
  PuppetCheck.settings[:clean_files] = ['foo: i was totally good to go']
72
- expect { OutputResults.markup }.to output("{\n \"clean\": [\n \"foo: i was totally good to go\"\n ]\n}\n").to_stdout
65
+ expect { OutputResults.markup(output_format: 'json') }.to output("{\n \"clean\": [\n \"foo: i was totally good to go\"\n ]\n}\n").to_stdout
73
66
  end
74
67
  it 'outputs files that were not processed as json' do
75
- PuppetCheck.settings[:output_format] = 'json'
76
68
  PuppetCheck.settings[:ignored_files] = ['foo: who knows what i am']
77
- expect { OutputResults.markup }.to output("{\n \"ignored\": [\n \"foo: who knows what i am\"\n ]\n}\n").to_stdout
69
+ expect { OutputResults.markup(output_format: 'json') }.to output("{\n \"ignored\": [\n \"foo: who knows what i am\"\n ]\n}\n").to_stdout
78
70
  end
79
71
  it 'raises an error for an unsupported output format' do
80
- PuppetCheck.settings[:output_format] = 'awesomesauce'
81
- expect { OutputResults.markup }.to raise_error(RuntimeError, 'puppet-check: Unsupported output format \'awesomesauce\' was specified.')
72
+ expect { OutputResults.markup(output_format: 'awesomesauce') }.to raise_error(RuntimeError, 'puppet-check: Unsupported output format \'awesomesauce\' was specified.')
82
73
  end
83
74
  end
84
75
  end
@@ -10,49 +10,53 @@ describe PuppetParser do
10
10
 
11
11
  context '.manifest' do
12
12
  it 'puts a bad syntax Puppet manifest in the error files array' do
13
- PuppetParser.manifest([fixtures_dir + 'manifests/syntax.pp'], false, false, [])
14
- # stupid Puppet deprecation warning
15
- if RUBY_VERSION.to_f < 2.1 && Puppet::PUPPETVERSION.to_i < 5
13
+ PuppetParser.manifest([fixtures_dir + 'manifests/syntax.pp'], false, [])
14
+ if Gem::Version.new(Puppet::PUPPETVERSION) >= Gem::Version.new('6.5.0')
15
+ expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}manifests/syntax.pp:\nLanguage validation logged 2 errors})
16
+ # dealing with annoying warning in puppet 5 and 6
17
+ elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
16
18
  expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}manifests/syntax.pp:\nSupport for ruby version.*\n.*\nThis Variable has no effect.*\nIllegal variable name})
17
- # stupid Puppet deprecation warning and Puppet 5 is no longer able to do multiple errors per line
18
- elsif RUBY_VERSION.to_f < 2.1 && Puppet::PUPPETVERSION.to_i == 5
19
- expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}manifests/syntax.pp:\nSupport for ruby version.*\n.*\nThis Variable has no effect.*})
20
- # ideal error-checking situation
21
- elsif RUBY_VERSION.to_f >= 2.1 && Puppet::PUPPETVERSION.to_i < 5
22
- expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}manifests/syntax.pp:\nSupport for ruby version.*\n.*\nThis Variable has no effect.*\nIllegal variable name})
23
- # Puppet 5 is no longer able to do multiple errors per line
24
- else # ruby >= 2.1 and puppet == 5
25
- expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}manifests/syntax.pp:\nThis Variable has no effect})
19
+ else
20
+ expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}manifests/syntax.pp:\nThis Variable has no effect.*\nIllegal variable name})
26
21
  end
27
22
  expect(PuppetCheck.settings[:warning_files]).to eql([])
28
23
  expect(PuppetCheck.settings[:clean_files]).to eql([])
29
24
  end
25
+ # puppet 5 api has output issues for this fixture
26
+ unless Gem::Version.new(Puppet::PUPPETVERSION) < Gem::Version.new('6.0.0')
27
+ it 'puts a bad syntax at eof Puppet manifest in the error files array' do
28
+ PuppetParser.manifest([fixtures_dir + 'manifests/eof_syntax.pp'], false, [])
29
+ expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}manifests/eof_syntax.pp:\nSyntax error at end of input})
30
+ expect(PuppetCheck.settings[:warning_files]).to eql([])
31
+ expect(PuppetCheck.settings[:clean_files]).to eql([])
32
+ end
33
+ end
30
34
  it 'puts a bad parser and lint style Puppet manifest in the warning files array' do
31
- PuppetParser.manifest([fixtures_dir + 'manifests/style_parser.pp'], false, true, [])
35
+ PuppetParser.manifest([fixtures_dir + 'manifests/style_parser.pp'], true, [])
32
36
  expect(PuppetCheck.settings[:error_files]).to eql([])
33
37
  expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}manifests/style_parser.pp:\nUnrecognized escape sequence.*\nUnrecognized escape sequence.*\n.*double quoted string containing})
34
38
  expect(PuppetCheck.settings[:clean_files]).to eql([])
35
39
  end
36
40
  it 'puts a bad lint style Puppet manifest in the warning files array' do
37
- PuppetParser.manifest([fixtures_dir + 'manifests/style_lint.pp'], false, true, [])
41
+ PuppetParser.manifest([fixtures_dir + 'manifests/style_lint.pp'], true, [])
38
42
  expect(PuppetCheck.settings[:error_files]).to eql([])
39
- expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}manifests/style_lint.pp:\n.*double quoted string containing.*\n.*indentation of})
43
+ expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}manifests/style_lint.pp:\n.*(?:indentation of|double quoted string containing).*\n.*(?:indentation of|double quoted string containing)})
40
44
  expect(PuppetCheck.settings[:clean_files]).to eql([])
41
45
  end
42
46
  it 'puts a bad style Puppet manifest in the clean files array when puppetlint_args ignores its warnings' do
43
- PuppetParser.manifest([fixtures_dir + 'manifests/style_lint.pp'], false, true, ['--no-double_quoted_strings-check', '--no-arrow_alignment-check'])
47
+ PuppetParser.manifest([fixtures_dir + 'manifests/style_lint.pp'], true, ['--no-double_quoted_strings-check', '--no-arrow_alignment-check'])
44
48
  expect(PuppetCheck.settings[:error_files]).to eql([])
45
49
  expect(PuppetCheck.settings[:warning_files]).to eql([])
46
50
  expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}manifests/style_lint.pp"])
47
51
  end
48
52
  it 'puts a good Puppet manifest in the clean files array' do
49
- PuppetParser.manifest([fixtures_dir + 'manifests/good.pp'], false, true, [])
53
+ PuppetParser.manifest([fixtures_dir + 'manifests/good.pp'], true, [])
50
54
  expect(PuppetCheck.settings[:error_files]).to eql([])
51
55
  expect(PuppetCheck.settings[:warning_files]).to eql([])
52
56
  expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}manifests/good.pp"])
53
57
  end
54
58
  it 'throws a well specified error for an invalid PuppetLint argument' do
55
- expect { PuppetParser.manifest([fixtures_dir + 'manifests/style_lint.pp'], false, true, ['--non-existent', '--does-not-exist']) }.to raise_error(RuntimeError, 'puppet-lint: invalid option supplied among --non-existent --does-not-exist')
59
+ expect { PuppetParser.manifest([fixtures_dir + 'manifests/style_lint.pp'], true, ['--non-existent', '--does-not-exist']) }.to raise_error(RuntimeError, 'puppet-lint: invalid option supplied among --non-existent --does-not-exist')
56
60
  end
57
61
  end
58
62
 
@@ -5,7 +5,7 @@ require_relative '../../lib/puppet-check/regression_check'
5
5
  describe RegressionCheck do
6
6
  context '.config' do
7
7
  # json gem got messed up for the EOL Ruby versions
8
- if RUBY_VERSION.to_f >= 2.2
8
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.2')
9
9
  it 'raise an appropriate error if the file is malformed' do
10
10
  expect { RegressionCheck.config(fixtures_dir + 'metadata.json') }.to raise_error(OctocatalogDiff::Errors::ConfigurationFileContentError, 'Configuration must define OctocatalogDiff::Config!')
11
11
  end
@@ -14,7 +14,6 @@ describe RegressionCheck do
14
14
  expect { RegressionCheck.config(octocatalog_diff_dir + 'octocatalog-diff.cfg.rb') }.not_to raise_exception
15
15
  end
16
16
  it 'loads in the settings from the file correctly' do
17
- #
18
17
  end
19
18
  end
20
19
 
@@ -34,6 +33,5 @@ describe RegressionCheck do
34
33
  end
35
34
 
36
35
  context '.regression' do
37
- #
38
36
  end
39
37
  end
@@ -14,7 +14,11 @@ describe RSpecPuppetSupport do
14
14
  before(:each) { Dir.chdir(fixtures_dir) }
15
15
 
16
16
  it 'creates missing directories, missing site.pp, missing symlinks, and a missing spec_helper' do
17
- expect { rspec_puppet_setup }.to output("puppetlabs/gruntmaster has an unspecified, or specified but unsupported, download method.\n").to_stderr
17
+ if File.directory?('/home/travis')
18
+ expect { rspec_puppet_setup }.to output("puppetlabs/gruntmaster has an unspecified, or specified but unsupported, download method.\n").to_stderr
19
+ else
20
+ expect { rspec_puppet_setup }.to output("subversion is not installed and cannot be used to retrieve dependency modules\npuppetlabs/gruntmaster has an unspecified, or specified but unsupported, download method.\n").to_stderr
21
+ end
18
22
 
19
23
  # .file_setup
20
24
  expect(File.directory?('spec/fixtures/manifests')).to be true
@@ -18,7 +18,7 @@ describe RubyParser do
18
18
  it 'puts a bad style ruby file in the warning files array' do
19
19
  RubyParser.ruby([fixtures_dir + 'lib/style.rb'], true, [])
20
20
  expect(PuppetCheck.settings[:error_files]).to eql([])
21
- expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}lib/style.rb:\n.*Useless assignment.*\n.*Use the new.*\n.*Do not introduce.*\n.*Prefer single.*\n.*is a writable attribute.*\n.*Issue has no descriptive comment})
21
+ expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}lib/style.rb:\n.*Useless assignment.*\n.*Use the new.*\n.*Do not introduce.*\n.*Prefer single.*\n.*Source code comment is empty.*\n.*is a writable attribute.*\n.*Issue has no descriptive comment})
22
22
  expect(PuppetCheck.settings[:clean_files]).to eql([])
23
23
  end
24
24
  it 'puts a bad style ruby file in the clean files array when rubocop_args ignores its warnings' do
@@ -38,7 +38,11 @@ describe RubyParser do
38
38
  context '.template' do
39
39
  it 'puts a bad syntax ruby template file in the error files array' do
40
40
  RubyParser.template([fixtures_dir + 'templates/syntax.erb'])
41
- expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}templates/syntax.erb:\n.*syntax error, unexpected tIDENTIFIER})
41
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7')
42
+ expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}templates/syntax.erb:\n.*1: syntax error, unexpected.*\n.*ruby})
43
+ else
44
+ expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}templates/syntax.erb:\n.*syntax error, unexpected tIDENTIFIER})
45
+ end
42
46
  expect(PuppetCheck.settings[:warning_files]).to eql([])
43
47
  expect(PuppetCheck.settings[:clean_files]).to eql([])
44
48
  end
@@ -72,11 +76,11 @@ describe RubyParser do
72
76
  it 'puts a bad style librarian Puppet file in the warning files array' do
73
77
  RubyParser.librarian([fixtures_dir + 'librarian_style/Puppetfile'], true, [])
74
78
  expect(PuppetCheck.settings[:error_files]).to eql([])
75
- expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}librarian_style/Puppetfile:\n.*Align the parameters.*\n.*Use the new})
79
+ expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}librarian_style/Puppetfile:\n.*Align the arguments.*\n.*Use the new})
76
80
  expect(PuppetCheck.settings[:clean_files]).to eql([])
77
81
  end
78
82
  it 'puts a bad style librarian Puppet file in the clean files array when rubocop_args ignores its warnings' do
79
- RubyParser.librarian([fixtures_dir + 'librarian_style/Puppetfile'], true, ['--except', 'Layout/AlignParameters,Style/HashSyntax'])
83
+ RubyParser.librarian([fixtures_dir + 'librarian_style/Puppetfile'], true, ['--except', 'Layout/AlignArguments,Style/HashSyntax'])
80
84
  expect(PuppetCheck.settings[:error_files]).to eql([])
81
85
  expect(PuppetCheck.settings[:warning_files]).to eql([])
82
86
  expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}librarian_style/Puppetfile"])
@@ -23,14 +23,24 @@ describe PuppetCheck::Tasks do
23
23
  end
24
24
 
25
25
  context 'puppetcheck:beaker' do
26
- let(:beaker_tasks) { Rake::Task['puppetcheck:beaker'.to_sym].invoke }
26
+ let(:beaker_task) { Rake::Task['puppetcheck:beaker'.to_sym].invoke }
27
27
 
28
28
  it 'verifies the Beaker task exists' do
29
29
  Dir.chdir(fixtures_dir)
30
30
 
31
31
  # beaker task executed
32
- expect { beaker_tasks }.to output(%r{spec/acceptance}).to_stdout
33
- expect { beaker_tasks }.not_to raise_exception
32
+ expect { beaker_task }.to output("Beaker is not installed. The Beaker tasks will not be available.\n").to_stdout
33
+ end
34
+ end
35
+
36
+ context 'puppetcheck:kitchen' do
37
+ let(:kitchen_task) { Rake::Task['puppetcheck:kitchen'.to_sym].invoke }
38
+
39
+ it 'verifies the Kitchen task exists' do
40
+ Dir.chdir(fixtures_dir)
41
+
42
+ # beaker task executed
43
+ expect { kitchen_task }.to output("Test Kitchen is not installed. The Kitchen tasks will not be available.\n").to_stdout
34
44
  end
35
45
  end
36
46
  end
@@ -4,16 +4,15 @@ require_relative '../lib/puppet-check'
4
4
  describe PuppetCheck do
5
5
  context 'self' do
6
6
  it 'settings can be altered' do
7
- PuppetCheck.settings[:future_parser] = true
8
- expect(PuppetCheck.settings[:future_parser]).to eql(true)
7
+ expect(PuppetCheck.settings[:future_parser]).to eql(nil)
9
8
  PuppetCheck.settings[:fail_on_warnings] = true
10
9
  expect(PuppetCheck.settings[:fail_on_warnings]).to eql(true)
11
- PuppetCheck.settings[:style_check] = true
12
- expect(PuppetCheck.settings[:style_check]).to eql(true)
13
- PuppetCheck.settings[:smoke_check] = true
14
- expect(PuppetCheck.settings[:smoke_check]).to eql(true)
15
- PuppetCheck.settings[:regression_check] = true
16
- expect(PuppetCheck.settings[:regression_check]).to eql(true)
10
+ PuppetCheck.settings[:style] = true
11
+ expect(PuppetCheck.settings[:style]).to eql(true)
12
+ PuppetCheck.settings[:smoke] = true
13
+ expect(PuppetCheck.settings[:smoke]).to eql(true)
14
+ PuppetCheck.settings[:regression] = true
15
+ expect(PuppetCheck.settings[:regression]).to eql(true)
17
16
  PuppetCheck.settings[:public] = 'public.pem'
18
17
  expect(PuppetCheck.settings[:public]).to eql('public.pem')
19
18
  PuppetCheck.settings[:private] = 'private.pem'
@@ -41,7 +40,7 @@ describe PuppetCheck do
41
40
  let(:repeats) { PuppetCheck.parse_paths(['hieradata', 'hieradata', 'lib', 'hieradata/good.json', 'manifests/good.pp', 'manifests/good.pp']) }
42
41
 
43
42
  it 'raises an error if no files were found' do
44
- expect { no_files }.to raise_error(RuntimeError, 'puppet-check: no files found in supplied paths foo, bar, baz.')
43
+ expect { no_files }.to raise_error(RuntimeError, 'puppet-check: no files found in supplied paths \'foo, bar, baz\'.')
45
44
  end
46
45
 
47
46
  it 'correctly parses one file and returns it' do
@@ -50,12 +49,12 @@ describe PuppetCheck do
50
49
 
51
50
  it 'correctly parses one directory and returns all of its files' do
52
51
  dir.each { |file| expect(File.file?(file)).to be true }
53
- expect(dir.length).to eql(34)
52
+ expect(dir.length).to eql(37)
54
53
  end
55
54
 
56
55
  it 'correctly parses multiple directories and returns all of their files' do
57
56
  multi_dir.each { |file| expect(File.file?(file)).to be true }
58
- expect(multi_dir.length).to eql(16)
57
+ expect(multi_dir.length).to eql(17)
59
58
  end
60
59
 
61
60
  it 'correctly parses three directories (one repeated) and three files (one repeated from directories and another repeated from files) and returns the unique files' do
@@ -66,7 +65,7 @@ describe PuppetCheck do
66
65
 
67
66
  context '.execute_parsers' do
68
67
  it 'correctly organizes a set of files and invokes the correct parsers' do
69
- # parser_output = instance_double('execute_parsers', files: %w[puppet.pp puppet_template.epp ruby.rb ruby_template.erb yaml.yaml yaml.yml json.json Puppetfile Modulefile foobarbaz], future: false, style: false, pl_args: [], rc_args: [])
68
+ # parser_output = instance_double('execute_parsers', files: %w[puppet.pp puppet_template.epp ruby.rb ruby_template.erb yaml.yaml yaml.yml json.json Puppetfile Modulefile foobarbaz], style: false, pl_args: [], rc_args: [])
70
69
  # expect(parser_output).to receive(:manifest).with(%w[puppet.pp])
71
70
  # expect(parser_output).to receive(:template).with(%w[puppet_template.epp])
72
71
  # expect(parser_output).to receive(:ruby).with(%w[ruby.rb])