diff options
author | Tim Smith <tsmith84@gmail.com> | 2016-04-14 10:37:35 -0700 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2016-04-14 11:26:25 -0700 |
commit | a266d63e8baa7399782160af41ac88f8e287f9ef (patch) | |
tree | 11f0a7e060ff9b5fe2029fddb231287397cc0844 | |
parent | 73b09610eafc554b57754fff89352013656f6ef3 (diff) | |
download | ohai-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.rb | 25 | ||||
-rw-r--r-- | spec/unit/plugins/mono_spec.rb | 39 |
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 |