summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Murawski <steven.murawski@gmail.com>2016-06-21 12:38:19 -0500
committerGitHub <noreply@github.com>2016-06-21 12:38:19 -0500
commitbcff227735417f78184ddad70771d369d62bbc5d (patch)
treee30becb06484324fe1459faf57acda447de50a80
parentb9d6f54fe82752f3a803c124c3887cb6061bbfbf (diff)
parent78f8c06100f1b121b0139d7209680548bb88fdbd (diff)
downloadohai-bcff227735417f78184ddad70771d369d62bbc5d.tar.gz
Merge pull request #832 from chef/smurawski/unbreak_appveyor
Update PowerShell Version Compat Detection / Unblock bundler on Appveyor
-rw-r--r--Gemfile6
-rw-r--r--lib/ohai/plugins/powershell.rb30
-rw-r--r--spec/unit/plugins/powershell_spec.rb2
3 files changed, 29 insertions, 9 deletions
diff --git a/Gemfile b/Gemfile
index 07e29482..79f252e7 100644
--- a/Gemfile
+++ b/Gemfile
@@ -6,6 +6,8 @@ group :development do
gem "sigar", :platform => "ruby"
gem "chefstyle", "= 0.3.1"
- # gem 'pry-byebug'
- # gem 'pry-stack_explorer'
+ gem "overcommit", ">= 0.34.1"
+ gem "pry-byebug"
+ gem "pry-stack_explorer"
+ gem "rb-readline"
end
diff --git a/lib/ohai/plugins/powershell.rb b/lib/ohai/plugins/powershell.rb
index 59365b65..af8da75d 100644
--- a/lib/ohai/plugins/powershell.rb
+++ b/lib/ohai/plugins/powershell.rb
@@ -46,7 +46,7 @@ Ohai.plugin(:Powershell) do
powershell[:serialization_version] = version_info["SerializationVersion"]
powershell[:clr_version] = version_info["CLRVersion"]
powershell[:build_version] = version_info["BuildVersion"]
- powershell[:compatible_versions] = parse_compatible_versions(version_info["PSCompatibleVersions"])
+ powershell[:compatible_versions] = parse_compatible_versions
powershell[:remoting_protocol_version] = version_info["PSRemotingProtocolVersion"]
languages[:powershell] = powershell unless powershell.empty?
end
@@ -55,12 +55,28 @@ Ohai.plugin(:Powershell) do
end
end
- def parse_compatible_versions(versions_str)
- if versions_str
- if versions_str.strip.start_with?("{") && versions_str.end_with?("}")
- versions = versions_str.gsub(/[{}\s]+/, "").split(",")
- versions if versions.length
- end
+ def version_command
+ [
+ "$progresspreference = 'silentlycontinue'",
+ "$PSVersionTable.PSCompatibleVersions | foreach {$_.tostring()}",
+ ].join("; ")
+ end
+
+ def powershell_command
+ ["powershell.exe",
+ "-NoLogo",
+ "-NonInteractive",
+ "-NoProfile",
+ "-Command",
+ ].join(" ")
+ end
+
+ def parse_compatible_versions
+ so = shell_out("#{powershell_command} \"#{version_command}\"")
+ versions = []
+ so.stdout.strip.each_line do |line|
+ versions << line.strip
end
+ versions
end
end
diff --git a/spec/unit/plugins/powershell_spec.rb b/spec/unit/plugins/powershell_spec.rb
index d96d1622..43ecbee9 100644
--- a/spec/unit/plugins/powershell_spec.rb
+++ b/spec/unit/plugins/powershell_spec.rb
@@ -43,8 +43,10 @@ PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
END
+ compat_version_array = ["1.0", "2.0", "3.0", "4.0"]
allow(plugin).to receive(:shell_out).with(anything()).and_return(mock_shell_out(0, v4_output, ""))
+ allow(plugin).to receive(:parse_compatible_versions).and_return(compat_version_array)
plugin.run
expect(plugin.languages[:powershell][:version]).to eql("4.0")
expect(plugin.languages[:powershell][:ws_man_stack_version]).to eql("3.0")