-
Notifications
You must be signed in to change notification settings - Fork 453
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add language scala #524
Add language scala #524
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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| | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think you can drop the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you mean to drop the whole let or just a specific part? |
||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd suggest removing the test above in favor of this one. It appears they test the same thing. |
||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd suggest removing the test above in favor of this one. It appears they test the same thing. |
||
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) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unless we've done something special in Ohai, this isn't what happens when scala isn't installed. On my machine:
I think ohai still catches all failures and ignores them, but it'd be nice to rescue that instead. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Huh. I assumed shellout caught these errors, appears that is not the case. Good to know, taking note. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should I just remove this context? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No, don't remove this context. Dan's comment shows |
||
.with("scala -version") | ||
.and_raise( Errno::ENOENT) | ||
|
||
allow(plugin).to receive(:shell_out) | ||
.with("sbt --version") | ||
.and_raise( Errno::ENOENT) | ||
end | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It looks like you could throw the |
||
|
||
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to go after the check for the exist status. Otherwise we get an empty hash when scala isn't around.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ohai won't add
attribute
to its data until you doattribute Mash.new
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ignore me