diff --git a/lib/inspec/resources/service.rb b/lib/inspec/resources/service.rb index 012a51bd1..29f5298b7 100644 --- a/lib/inspec/resources/service.rb +++ b/lib/inspec/resources/service.rb @@ -273,6 +273,10 @@ module Inspec::Resources info[:startname] end + def resource_id + @service_name || "Service" + end + def to_s "Service #{@service_name}" end @@ -605,7 +609,7 @@ module Inspec::Resources return nil if srv.nil? || srv[0].nil? # extract values from service - parsed_srv = /^(?[0-9-]+)\t(?[0-9]+)\t(?\S*)$/.match(srv[0]) + parsed_srv = /^(?[0-9-]+)\t(?[\-0-9]+)\t(?\S*)$/.match(srv[0]) enabled = !parsed_srv["name"].nil? # it's in the list # check if the service is running diff --git a/test/fixtures/cmd/launchctl-list b/test/fixtures/cmd/launchctl-list index 3ec818769..fcf22ea54 100644 --- a/test/fixtures/cmd/launchctl-list +++ b/test/fixtures/cmd/launchctl-list @@ -1,3 +1,4 @@ PID Status Label 2892 0 org.openbsd.ssh-agent - 0 com.apple.FilesystemUI +- -15 org.example.killed-agent diff --git a/test/unit/resources/service_test.rb b/test/unit/resources/service_test.rb index 105762d14..40aa0fdfa 100644 --- a/test/unit/resources/service_test.rb +++ b/test/unit/resources/service_test.rb @@ -463,6 +463,21 @@ describe "Inspec::Resources::Service" do _(resource.params).must_equal params end + it "verify mac osx service parsing with negative status launchd_service" do + resource = MockLoader.new(:macos10_10).load_resource( + "launchd_service", "org.example.killed-agent" + ) + params = Hashie::Mash.new({}) + _(resource.type).must_equal "darwin" + _(resource.name).must_equal "org.example.killed-agent" + _(resource.description).must_be_nil + _(resource.installed?).must_equal true + _(resource.enabled?).must_equal true + _(resource.running?).must_equal false + _(resource.params).must_equal params + _(resource.resource_id).must_equal "org.example.killed-agent" + end + # wrlinux it "verify wrlinux service parsing" do resource = MockLoader.new(:wrlinux).load_resource("service", "sshd")