diff options
author | cmluciano <cmlucian@us.ibm.com> | 2015-04-14 11:21:24 -0400 |
---|---|---|
committer | cmluciano <cmlucian@us.ibm.com> | 2015-06-22 14:29:47 -0400 |
commit | 3c5841ccee64e0bd7056d209760baed34b1ebe47 (patch) | |
tree | a704450887c7cb146af8385348405513560e8a1e | |
parent | 8aea6701b5680b146a3f5a94eb34f9caf5c861b6 (diff) | |
download | ohai-3c5841ccee64e0bd7056d209760baed34b1ebe47.tar.gz |
Add language scala
-rw-r--r-- | lib/ohai/plugins/scala.rb | 47 | ||||
-rw-r--r-- | spec/unit/plugins/scala_spec.rb | 84 |
2 files changed, 131 insertions, 0 deletions
diff --git a/lib/ohai/plugins/scala.rb b/lib/ohai/plugins/scala.rb new file mode 100644 index 00000000..dd809a92 --- /dev/null +++ b/lib/ohai/plugins/scala.rb @@ -0,0 +1,47 @@ +# Author:: Christopher M Luciano (<cmlucian@us.ibm.com>) +# © Copyright IBM Corporation 2015. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +Ohai.plugin(:Scala) do + provides "languages/scala", "languages/scala/sbt" + + depends "languages" + + collect_data(:default) do + # Check for scala + begin + output = nil + + scala = Mash.new + so = shell_out("scala -version") + if so.exitstatus == 0 + output = so.stdout.split + scala[:version] = output[4] + languages[:scala] = scala if scala[:version] + end + end + + # Check for sbt + begin + output = nil + + so = shell_out("sbt --version") + if so.exitstatus == 0 + output = so.stdout.split + scala[:sbt] = output[3] if scala[:version] + end + end + end +end diff --git a/spec/unit/plugins/scala_spec.rb b/spec/unit/plugins/scala_spec.rb new file mode 100644 index 00000000..85775b5d --- /dev/null +++ b/spec/unit/plugins/scala_spec.rb @@ -0,0 +1,84 @@ +# Author:: Christopher M Luciano (<cmlucian@us.ibm.com>) +# © Copyright IBM Corporation 2015. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '/spec_helper.rb')) + +describe Ohai::System, "plugin scala" do + + let(:plugin) do + plugin = get_plugin("scala").tap do |plugin| + plugin[:languages] = Mash.new + end + end + + let(:scala_out) {"Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL"} + let(:sbt_out) { "sbt launcher version 0.13.8" } + + def setup_plugin + allow(plugin).to receive(:shell_out) + .with("scala -version") + .and_return(mock_shell_out(0, scala_out, "")) + allow(plugin).to receive(:shell_out) + .with("sbt --version") + .and_return(mock_shell_out(0, sbt_out, "")) + end + + context " if scala is installed" do + before(:each) do + setup_plugin + plugin.run + end + + it "should set languages[:scala][:version]" do + expect(plugin.languages[:scala][:version]).to eql("2.11.6") + end + end + + context "if sbt is installed" do + + before(:each) do + setup_plugin + plugin.run + end + + + it "should set languages[:sbt][:version]" do + expect(plugin.languages[:scala][:sbt]).to eql("0.13.8") + end + end + + context "if scala is not installed" do + + before(:each) do + allow(plugin).to receive(:shell_out) + .with("scala -version") + .and_return(mock_shell_out(1, scala_out, "")) + allow(plugin).to receive(:shell_out) + .with("sbt --version") + .and_return(mock_shell_out(1, sbt_out, "")) + plugin.run + end + + it "should not set the languages[:scala] if scala command fails" do + expect(plugin.languages).not_to have_key(:scala) + end + + it "should not set the languages[:scala] if scala command fails" do + expect(plugin.languages).not_to have_key(:scala) + end + end +end |