Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(CAT-2121) Update tests to account for pdk validate changes #1409

Merged
merged 4 commits into from
Oct 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion pdk.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ Gem::Specification.new do |spec|
# Other deps
spec.add_runtime_dependency 'deep_merge', '~> 1.2.2'
spec.add_runtime_dependency 'diff-lcs', '>= 1.5.0'
spec.add_runtime_dependency 'json', '~> 2.6.3'
spec.add_runtime_dependency 'json_pure', '~> 2.6.3'
spec.add_runtime_dependency 'pathspec', '~> 1.1'
spec.add_runtime_dependency 'puppet_forge', '~> 5.0'
Expand Down
20 changes: 10 additions & 10 deletions spec/acceptance/report_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
before(:all) do
File.open(init_pp, 'w') do |f|
f.puts <<~EOS
class report {}
class report
EOS
end
end
Expand All @@ -18,24 +18,24 @@ class report {}
include_context 'with a fake TTY'
# Tests writing reports to a file
describe command('pdk validate puppet manifests/init.pp --format=text:report.txt') do
its(:exit_status) { is_expected.to eq(0) }
its(:exit_status) { is_expected.to eq(1) | eq(256) }
its(:stdout) { is_expected.to have_no_output }
its(:stderr) { is_expected.to match(/Checking Puppet manifest syntax/i) }
its(:stderr) { is_expected.to match(/Checking Puppet manifest style/i) }

describe file('report.txt') do
it { is_expected.to exist }
# pdk (WARNING): puppet-lint: class not documented (manifests/init.pp:1:1)
its(:content) { is_expected.to match(/\(warning\):.*class not documented.*\(#{Regexp.escape(init_pp)}.*\)/i) }
# pdk (ERROR): puppet-syntax: Could not parse for environment production: Syntax error at end of input (manifests/init.pp)
its(:content) { is_expected.to match(/\(ERROR\):.*Could not parse for environment production.*\(#{Regexp.escape(init_pp)}.*\)/i) }
end
end

# Tests writing reports to stdout doesn't actually write a file named stdout
describe command('pdk validate puppet manifests/init.pp --format=text:stdout') do
its(:exit_status) { is_expected.to eq(0) }
its(:exit_status) { is_expected.to eq(1) | eq(256) }
its(:stderr) { is_expected.to match(/Checking Puppet manifest syntax/i) }
its(:stderr) { is_expected.to match(/Checking Puppet manifest style/i) }
its(:stdout) { is_expected.to match(/\(warning\):.*class not documented.*\(#{Regexp.escape(init_pp)}.*\)/i) }
its(:stdout) { is_expected.to match(/\(ERROR\):.*Could not parse for environment production.*\(#{Regexp.escape(init_pp)}.*\)/i) }

describe file('stdout') do
it { is_expected.not_to exist }
Expand All @@ -44,15 +44,15 @@ class report {}

# Tests writing reports to stderr doesn't actually write a file named stderr
describe command('pdk validate puppet manifests/init.pp --format=text:stderr') do
its(:exit_status) { is_expected.to eq(0) }
its(:exit_status) { is_expected.to eq(1) | eq(256) }
its(:stdout) { is_expected.to have_no_output }
its(:stderr) { is_expected.to match(/Checking Puppet manifest syntax/i) }
its(:stderr) { is_expected.to match(/Checking Puppet manifest style/i) }

its(:stderr) do
# Due to spinners writing at arbitrary cursor locations, we can't depend on the text
# being at a the beginning of a line.
is_expected.to match(/\(warning\):.*class not documented.*\(#{Regexp.escape(init_pp)}.*\)/i)
is_expected.to match(/\(ERROR\):.*Could not parse for environment production.*\(#{Regexp.escape(init_pp)}.*\)/i)
end

describe file('stderr') do
Expand All @@ -63,10 +63,10 @@ class report {}

context 'when not run interactively' do
describe command('pdk validate puppet manifests/init.pp') do
its(:exit_status) { is_expected.to eq(0) }
its(:exit_status) { is_expected.to eq(1) | eq(256) }
its(:stderr) { is_expected.to match(/using ruby \d+\.\d+\.\d+/i) }
its(:stderr) { is_expected.to match(/using puppet \d+\.\d+\.\d+/i) }
its(:stdout) { is_expected.to match(/\(warning\):.*class not documented.*\(#{Regexp.escape(init_pp)}.*\)/i) }
its(:stdout) { is_expected.to match(/\(ERROR\):.*Could not parse for environment production.*\(#{Regexp.escape(init_pp)}.*\)/i) }
end
end
end
Expand Down
3 changes: 2 additions & 1 deletion spec/acceptance/validate_all_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,13 @@ class pdk_in_gemfile {}
end

describe command('pdk validate') do
its(:exit_status) { is_expected.to eq(0) }
its(:exit_status) { is_expected.to eq(1) | eq(256) }
its(:stderr) { is_expected.to match(/Running all available validators/i) }
its(:stderr) { is_expected.to match(/Checking metadata syntax/i) }
its(:stderr) { is_expected.to match(/Checking module metadata style/i) }
its(:stderr) { is_expected.to match(/Checking Puppet manifest syntax/i) }
its(:stderr) { is_expected.to match(/Checking Ruby code style/i) }
its(:stdout) { is_expected.to match(/\(warning\):.*indent should be 0 chars and is 2/i) }
end
end
end
Expand Down
38 changes: 20 additions & 18 deletions spec/acceptance/validate_puppet_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class foo {
end

describe command('pdk validate puppet --format text:stdout --format junit:report.xml') do
its(:exit_status) { is_expected.to eq(0) }
its(:exit_status) { is_expected.to eq(1) | eq(256) }
its(:stderr) { is_expected.not_to match(epp_spinner_text) }
its(:stderr) { is_expected.to match(syntax_spinner_text) }
its(:stderr) { is_expected.to match(lint_spinner_text) }
Expand Down Expand Up @@ -153,7 +153,6 @@ class foo {

describe command('pdk validate puppet manifests\test') do
its(:exit_status) { is_expected.to eq(0) }
its(:stdout) { is_expected.to match(/\(warning\):.*class not documented.*\(#{Regexp.escape(File.join('manifests', 'test', 'test.pp'))}.+\)/i) }
end
end

Expand All @@ -180,7 +179,10 @@ class foo {
context 'with a parsable file and some style warnings' do
before(:all) do
File.open(init_pp, 'w') do |f|
f.puts 'class foo {}'
f.puts <<-EOS.gsub(/^ {10}/, '')
# pdk_in_gemfile
class pdk_in_gemfile {}
EOS
end
end

Expand All @@ -189,8 +191,8 @@ class foo {
end

describe command('pdk validate puppet --format text:stdout --format junit:report.xml') do
its(:exit_status) { is_expected.to eq(0) }
its(:stdout) { is_expected.to match(/\(warning\):.*class not documented.*\(#{Regexp.escape(init_pp)}.+\)/i) }
its(:exit_status) { is_expected.to eq(1) | eq(256) }
its(:stdout) { is_expected.to match(/\(warning\):.*indent should be 0 chars and is 2.*\(#{Regexp.escape(init_pp)}.+\)/i) }
its(:stderr) { is_expected.not_to match(epp_spinner_text) }
its(:stderr) { is_expected.to match(syntax_spinner_text) }
its(:stderr) { is_expected.to match(lint_spinner_text) }
Expand Down Expand Up @@ -221,7 +223,7 @@ class foo {

its(:content) do
is_expected.to have_junit_testcase.in_testsuite('puppet-lint').with_attributes(
'classname' => 'puppet-lint.documentation',
'classname' => 'puppet-lint.strict_indent',
'name' => a_string_starting_with(init_pp)
).that_failed
end
Expand Down Expand Up @@ -289,11 +291,11 @@ class foo {
end
end

context 'with a parsable file and some style errors' do
context 'with a parsable file and some errors' do
before(:all) do
File.open(example_pp, 'w') do |f|
f.puts '# some documentation'
f.puts 'class foo::bar {}'
f.puts 'class foo::bar'
end
end

Expand All @@ -303,7 +305,7 @@ class foo {

describe command('pdk validate puppet --format text:stdout --format junit:report.xml') do
its(:exit_status) { is_expected.not_to eq(0) }
its(:stdout) { is_expected.to match(/autoload module layout.*\(#{Regexp.escape(example_pp)}.+\)/i) }
its(:stdout) { is_expected.to match(/Syntax error at end of input/i) }
its(:stderr) { is_expected.not_to match(epp_spinner_text) }
its(:stderr) { is_expected.to match(syntax_spinner_text) }
its(:stderr) { is_expected.to match(lint_spinner_text) }
Expand All @@ -312,15 +314,15 @@ class foo {
its(:content) { is_expected.to contain_valid_junit_xml }

its(:content) do
is_expected.to have_junit_testsuite('puppet-lint').with_attributes(
is_expected.to have_junit_testsuite('puppet-syntax').with_attributes(
'failures' => eq(1),
'tests' => eq(1)
)
end

its(:content) do
is_expected.to have_junit_testcase.in_testsuite('puppet-lint').with_attributes(
'classname' => 'puppet-lint.autoloader_layout',
is_expected.to have_junit_testcase.in_testsuite('puppet-syntax').with_attributes(
'classname' => 'puppet-syntax',
'name' => a_string_starting_with(example_pp)
).that_failed
end
Expand Down Expand Up @@ -388,7 +390,7 @@ class foo {
before(:all) do
FileUtils.mkdir_p(another_problem_dir)
File.open(another_problem_pp, 'w') do |f|
f.puts 'class foo::bar::whoops {}'
f.puts 'class foo::bar::whoops'
end
end

Expand All @@ -408,15 +410,15 @@ class foo {
its(:content) { is_expected.to contain_valid_junit_xml }

its(:content) do
is_expected.to have_junit_testsuite('puppet-lint').with_attributes(
'failures' => eq(2),
'tests' => eq(2)
is_expected.to have_junit_testsuite('puppet-syntax').with_attributes(
'failures' => eq(1),
'tests' => eq(1)
)
end

its(:content) do
is_expected.to have_junit_testcase.in_testsuite('puppet-lint').with_attributes(
'classname' => a_string_starting_with('puppet-lint'),
is_expected.to have_junit_testcase.in_testsuite('puppet-syntax').with_attributes(
'classname' => a_string_starting_with('puppet-syntax'),
'name' => a_string_starting_with(another_problem_pp)
).that_failed
end
Expand Down
Loading