diff options
author | Steven Murawski <steven.murawski@gmail.com> | 2016-06-21 12:38:19 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-21 12:38:19 -0500 |
commit | bcff227735417f78184ddad70771d369d62bbc5d (patch) | |
tree | e30becb06484324fe1459faf57acda447de50a80 | |
parent | b9d6f54fe82752f3a803c124c3887cb6061bbfbf (diff) | |
parent | 78f8c06100f1b121b0139d7209680548bb88fdbd (diff) | |
download | ohai-bcff227735417f78184ddad70771d369d62bbc5d.tar.gz |
Merge pull request #832 from chef/smurawski/unbreak_appveyor
Update PowerShell Version Compat Detection / Unblock bundler on Appveyor
-rw-r--r-- | Gemfile | 6 | ||||
-rw-r--r-- | lib/ohai/plugins/powershell.rb | 30 | ||||
-rw-r--r-- | spec/unit/plugins/powershell_spec.rb | 2 |
3 files changed, 29 insertions, 9 deletions
@@ -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") |