inspec/test/functional/inspec_exec_junit_test.rb
jkerry 944040fcf9 adding functional tests for the junit rspec formatter
Signed-off-by: jkerry <john@kerryhouse.net>
2016-11-22 14:45:34 -05:00

76 lines
2.3 KiB
Ruby

# encoding: utf-8
# author: John Kerry
require 'functional/helper'
require 'nokogiri'
describe 'inspec exec with junit formatter' do
include FunctionalHelper
it 'can execute a simple file with the junit formatter' do
out = inspec('exec ' + example_control + ' --format junit --no-create-lockfile')
out.stderr.must_equal ''
out.exit_status.must_equal 0
doc = Nokogiri::XML(out.stdout)
doc.errors.length.must_equal 0
end
it 'can execute the profile with the junit formatter' do
out = inspec('exec ' + example_profile + ' --format junit --no-create-lockfile')
out.stderr.must_equal ''
out.exit_status.must_equal 0
doc = Nokogiri::XML(out.stdout)
doc.errors.length.must_equal 0
end
describe 'execute a profile with junit formatting' do
let(:doc) { Nokogiri::XML(inspec('exec ' + example_profile + ' --format junit --no-create-lockfile').stdout) }
describe 'the document' do
it 'has only one testsuite' do
doc.xpath("//testsuite").length.must_equal 1
end
end
describe 'the test suite' do
let(:suite) { doc.xpath("//testsuite").first}
it 'has a single properties element with no children' do
suite.xpath("//properties").length.must_equal 1
suite.xpath("//properties").children.length.must_equal 0
end
it 'must have 5 testcase children' do
suite.xpath("//testcase").length.must_equal 5
end
it 'has the tests attribute with 5 total tests' do
suite["tests"].must_equal "5"
end
it 'has the failures attribute with 0 total tests' do
suite["failures"].must_equal "0"
end
it 'has the errors attribute with 0 total tests' do
suite["errors"].must_equal "0"
end
it 'has 2 elements named "File /tmp should be directory"' do
suite.xpath("//testcase[@name='File /tmp should be directory']").length.must_equal 2
end
describe 'the testcase named "gordon_config Can\'t find file ..."' do
let(:gordon_yml_tests) { suite.xpath("//testcase[@classname='lib.inspec.runner']") }
let(:first_gordon_test) {gordon_yml_tests.first}
it 'should be unique' do
gordon_yml_tests.length.must_equal 1
end
it 'should be skipped' do
first_gordon_test.xpath("//skipped").length.must_equal 1
end
end
end
end
end