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

Fix mono builddate capture and add debug logging #800

Merged
merged 3 commits into from
Apr 14, 2016
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
35 changes: 22 additions & 13 deletions lib/ohai/plugins/mono.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,33 @@

Ohai.plugin(:Mono) do
provides "languages/mono"

depends "languages"

collect_data do
output = nil

mono = Mash.new

so = shell_out("mono -V")
if so.exitstatus == 0
output = so.stdout.split
if output.length >= 4
mono[:version] = output[4]
end
if output.length >= 11
mono[:builddate] = "%s %s %s %s" % [output[6], output[7], output[8], output[11].delete!(")")]
begin
# Mono JIT compiler version 4.2.3 (Stable 4.2.3.4/832de4b Wed Mar 30 13:57:48 PDT 2016)
# Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
# TLS: normal
# SIGSEGV: altstack
# Notification: kqueue
# Architecture: amd64
# Disabled: none
# Misc: softdebug
# LLVM: supported, not enabled.
# GC: sgen
so = shell_out("mono -V")
if so.exitstatus == 0
mono = Mash.new
output = so.stdout.split
mono[:version] = output[4] unless output[4].nil?
if output.length >= 12
mono[:builddate] = "%s %s %s %s %s %s" % [output[7], output[8], output[9], output[10], output[11], output[12].delete!(")")]
end
languages[:mono] = mono unless mono.empty?
end
languages[:mono] = mono if mono[:version]
rescue Ohai::Exceptions::Exec
Ohai::Log.debug('Mono plugin: Could not shell_out "mono -V". Skipping plugin')
end
end
end
39 changes: 27 additions & 12 deletions spec/unit/plugins/mono_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,29 +19,44 @@
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "/spec_helper.rb"))

describe Ohai::System, "plugin mono" do
let(:plugin) { get_plugin("mono") }

before(:each) do
@plugin = get_plugin("mono")
@plugin[:languages] = Mash.new
@stdout = "Mono JIT compiler version 1.2.6 (tarball)\nCopyright (C) 2002-2007 Novell, Inc and Contributors. www.mono-project.com\n"
allow(@plugin).to receive(:shell_out).with("mono -V").and_return(mock_shell_out(0, @stdout, ""))
plugin[:languages] = Mash.new
@stdout = <<-OUT
Mono JIT compiler version 4.2.3 (Stable 4.2.3.4/832de4b Wed Mar 30 13:57:48 PDT 2016)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: normal
SIGSEGV: altstack
Notification: kqueue
Architecture: amd64
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgen
OUT
allow(plugin).to receive(:shell_out).with("mono -V").and_return(mock_shell_out(0, @stdout, ""))
end

it "should get the mono version from running mono -V" do
expect(@plugin).to receive(:shell_out).with("mono -V").and_return(mock_shell_out(0, @stdout, ""))
@plugin.run
expect(plugin).to receive(:shell_out).with("mono -V").and_return(mock_shell_out(0, @stdout, ""))
plugin.run
end

it "should set languages[:mono][:version]" do
@plugin.run
expect(@plugin.languages[:mono][:version]).to eql("1.2.6")
plugin.run
expect(plugin.languages[:mono][:version]).to eql("4.2.3")
end

it "should set languages[:mono][:builddate]" do
plugin.run
expect(plugin.languages[:mono][:builddate]).to eql("Wed Mar 30 13:57:48 PDT 2016")
end

it "should not set the languages[:mono] tree up if mono command fails" do
@stdout = "Mono JIT compiler version 1.2.6 (tarball)\nCopyright (C) 2002-2007 Novell, Inc and Contributors. www.mono-project.com\n"
allow(@plugin).to receive(:shell_out).with("mono -V").and_return(mock_shell_out(1, @stdout, ""))
@plugin.run
expect(@plugin.languages).not_to have_key(:mono)
allow(plugin).to receive(:shell_out).with("mono -V").and_return(mock_shell_out(1, @stdout, ""))
plugin.run
expect(plugin.languages).not_to have_key(:mono)
end

end