summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2016-04-14 10:37:35 -0700
committerTim Smith <tsmith84@gmail.com>2016-04-14 11:26:25 -0700
commita266d63e8baa7399782160af41ac88f8e287f9ef (patch)
tree11f0a7e060ff9b5fe2029fddb231287397cc0844
parent73b09610eafc554b57754fff89352013656f6ef3 (diff)
downloadohai-a266d63e8baa7399782160af41ac88f8e287f9ef.tar.gz
Correctly poll mono build date
Things seems to have changed in the output in the last billion years. Include the full standard out and add a spec.
-rw-r--r--lib/ohai/plugins/mono.rb25
-rw-r--r--spec/unit/plugins/mono_spec.rb39
2 files changed, 42 insertions, 22 deletions
diff --git a/lib/ohai/plugins/mono.rb b/lib/ohai/plugins/mono.rb
index f5bb8bcd..e8daea43 100644
--- a/lib/ohai/plugins/mono.rb
+++ b/lib/ohai/plugins/mono.rb
@@ -18,24 +18,29 @@
Ohai.plugin(:Mono) do
provides "languages/mono"
-
depends "languages"
collect_data do
- output = nil
-
- mono = Mash.new
-
+ # 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
+ output = nil
+ mono = Mash.new
output = so.stdout.split
- if output.length >= 4
- mono[:version] = output[4]
- end
+ mono[:version] = output[4] if output.length >= 4
if output.length >= 11
- mono[:builddate] = "%s %s %s %s" % [output[6], output[7], output[8], output[11].delete!(")")]
+ 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 if mono[:version]
+ languages[:mono] = mono unless mono.empty?
end
end
end
diff --git a/spec/unit/plugins/mono_spec.rb b/spec/unit/plugins/mono_spec.rb
index 6d4a3534..846fb4ff 100644
--- a/spec/unit/plugins/mono_spec.rb
+++ b/spec/unit/plugins/mono_spec.rb
@@ -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