summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2016-03-21 16:15:38 -0700
committerTim Smith <tsmith@chef.io>2016-03-21 16:15:38 -0700
commit218d894fb17fd638ee7c0d75184a314f67c9552c (patch)
tree295ede60ec055a8f57e127aff3d1d2b8e039d76d
parentf8522ea9ca3b1252af6a03a4c58057d320e8343c (diff)
parentcfa740ba9fba923b70bec7e393293b8efee097be (diff)
downloadohai-218d894fb17fd638ee7c0d75184a314f67c9552c.tar.gz
Merge pull request #524 from cmluciano/cml/addscala
Add language scala
-rw-r--r--lib/ohai/plugins/scala.rb43
-rw-r--r--spec/unit/plugins/scala_spec.rb83
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