diff options
author | Tim Smith <tsmith@chef.io> | 2016-03-21 16:15:38 -0700 |
---|---|---|
committer | Tim Smith <tsmith@chef.io> | 2016-03-21 16:15:38 -0700 |
commit | 218d894fb17fd638ee7c0d75184a314f67c9552c (patch) | |
tree | 295ede60ec055a8f57e127aff3d1d2b8e039d76d | |
parent | f8522ea9ca3b1252af6a03a4c58057d320e8343c (diff) | |
parent | cfa740ba9fba923b70bec7e393293b8efee097be (diff) | |
download | ohai-218d894fb17fd638ee7c0d75184a314f67c9552c.tar.gz |
Merge pull request #524 from cmluciano/cml/addscala
Add language scala
-rw-r--r-- | lib/ohai/plugins/scala.rb | 43 | ||||
-rw-r--r-- | spec/unit/plugins/scala_spec.rb | 83 |
2 files changed, 126 insertions, 0 deletions
diff --git a/lib/ohai/plugins/scala.rb b/lib/ohai/plugins/scala.rb new file mode 100644 index 00000000..2666b66b --- /dev/null +++ b/lib/ohai/plugins/scala.rb @@ -0,0 +1,43 @@ +# 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 + 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 + + # Check for sbt + 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 diff --git a/spec/unit/plugins/scala_spec.rb b/spec/unit/plugins/scala_spec.rb new file mode 100644 index 00000000..3fbfff69 --- /dev/null +++ b/spec/unit/plugins/scala_spec.rb @@ -0,0 +1,83 @@ +# 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_raise( Errno::ENOENT) + + allow(plugin).to receive(:shell_out) + .with("sbt --version") + .and_raise( Errno::ENOENT) + 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][:sbt] if sbt command fails" do + expect(plugin.languages).not_to have_key(:sbt) + end + end +end |