summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcmluciano <cmlucian@us.ibm.com>2015-04-14 11:21:24 -0400
committercmluciano <cmlucian@us.ibm.com>2015-06-22 14:29:47 -0400
commit3c5841ccee64e0bd7056d209760baed34b1ebe47 (patch)
treea704450887c7cb146af8385348405513560e8a1e
parent8aea6701b5680b146a3f5a94eb34f9caf5c861b6 (diff)
downloadohai-3c5841ccee64e0bd7056d209760baed34b1ebe47.tar.gz
Add language scala
-rw-r--r--lib/ohai/plugins/scala.rb47
-rw-r--r--spec/unit/plugins/scala_spec.rb84
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