diff --git a/lib/bundles/inspec-compliance/cli.rb b/lib/bundles/inspec-compliance/cli.rb index 92720d22a..87d5c1396 100644 --- a/lib/bundles/inspec-compliance/cli.rb +++ b/lib/bundles/inspec-compliance/cli.rb @@ -78,11 +78,20 @@ module Compliance def exec(*tests) config = Compliance::Configuration.new return if !loggedin(config) + o = opts(:exec).dup + diagnose(o) + configure_logger(o) + # iterate over tests and add compliance scheme tests = tests.map { |t| 'compliance://' + Compliance::API.sanitize_profile_name(t) } - # execute profile from inspec exec implementation - diagnose - run_tests(tests, opts) + + runner = Inspec::Runner.new(o) + tests.each { |target| runner.add_target(target) } + + exit runner.run + rescue ArgumentError, RuntimeError, Train::UserError => e + $stderr.puts e.message + exit 1 end desc 'download PROFILE', 'downloads a profile from Chef Compliance' diff --git a/lib/bundles/inspec-supermarket/cli.rb b/lib/bundles/inspec-supermarket/cli.rb index 753bd4687..b2ee67ae9 100644 --- a/lib/bundles/inspec-supermarket/cli.rb +++ b/lib/bundles/inspec-supermarket/cli.rb @@ -29,12 +29,20 @@ module Supermarket desc 'exec PROFILE', 'execute a Supermarket profile' exec_options def exec(*tests) + o = opts(:exec).dup + diagnose(o) + configure_logger(o) + # iterate over tests and add compliance scheme tests = tests.map { |t| 'supermarket://' + t } - # execute profile from inspec exec implementation - diagnose - run_tests(tests, opts) + runner = Inspec::Runner.new(o) + tests.each { |target| runner.add_target(target) } + + exit runner.run + rescue ArgumentError, RuntimeError, Train::UserError => e + $stderr.puts e.message + exit 1 end desc 'info PROFILE', 'display Supermarket profile details' diff --git a/test/functional/inspec_supermakert_test.rb b/test/functional/inspec_supermakert_test.rb new file mode 100644 index 000000000..d1540ec55 --- /dev/null +++ b/test/functional/inspec_supermakert_test.rb @@ -0,0 +1,28 @@ +# encoding: utf-8 + +require 'functional/helper' + +describe 'inspec supermakert' do + include FunctionalHelper + + it 'help' do + out = inspec('supermarket help') + out.exit_status.must_equal 0 + out.stdout.must_include 'inspec supermarket exec PROFILE' + end + + it 'info' do + out = inspec('supermarket info dev-sec/ssh-baseline') + out.exit_status.must_equal 0 + out.stderr.must_equal '' + out.stdout.must_include "name: \e[0m ssh-baseline" + end + + it 'supermarket exec' do + out = inspec('supermarket exec dev-sec/ssh-baseline') + out.exit_status.wont_equal 1 + out.stderr.must_equal '' + out.stdout.must_include 'Profile Summary' + out.stdout.must_include 'Test Summary' + end +end