diff options
author | Claire McQuin <claire@getchef.com> | 2015-10-06 12:44:48 -0700 |
---|---|---|
committer | Claire McQuin <claire@getchef.com> | 2015-10-06 13:19:28 -0700 |
commit | 9b57fbf80828747699695119a354f51dbb7fa4b2 (patch) | |
tree | 32c5d2f3317c6cabaa1338ba9dabcbf6d3119fa4 /spec | |
parent | 0053c17bba34090083a34395657ff1ba1616e213 (diff) | |
download | chef-9b57fbf80828747699695119a354f51dbb7fa4b2.tar.gz |
Quote paths.mcquin/chef-3883
Diffstat (limited to 'spec')
-rw-r--r-- | spec/support/shared/functional/windows_script.rb | 23 | ||||
-rw-r--r-- | spec/unit/provider/powershell_script_spec.rb | 14 |
2 files changed, 34 insertions, 3 deletions
diff --git a/spec/support/shared/functional/windows_script.rb b/spec/support/shared/functional/windows_script.rb index 70fb2d8578..d84c06c86b 100644 --- a/spec/support/shared/functional/windows_script.rb +++ b/spec/support/shared/functional/windows_script.rb @@ -128,7 +128,28 @@ shared_context Chef::Resource::WindowsScript do describe "when the run action is invoked on Windows" do it "executes the script code" do - resource.code("whoami > #{script_output_path}") + resource.code("whoami > \"#{script_output_path}\"") + resource.returns(0) + resource.run_action(:run) + end + end + + context "when $env:TMP has a space" do + before(:each) do + @dir = Dir.mktmpdir("Jerry Smith") + @original_env = ENV.to_hash.dup + ENV.delete('TMP') + ENV['TMP'] = @dir + end + + after(:each) do + FileUtils.remove_entry_secure(@dir) + ENV.clear + ENV.update(@original_env) + end + + it "executes the script code" do + resource.code("whoami > \"#{script_output_path}\"") resource.returns(0) resource.run_action(:run) end diff --git a/spec/unit/provider/powershell_script_spec.rb b/spec/unit/provider/powershell_script_spec.rb index d06d2762be..121973763d 100644 --- a/spec/unit/provider/powershell_script_spec.rb +++ b/spec/unit/provider/powershell_script_spec.rb @@ -41,20 +41,30 @@ describe Chef::Provider::PowershellScript, "action_run" do context 'on nano' do before(:each) do allow(Chef::Platform).to receive(:windows_nano_server?).and_return(true) + allow(provider).to receive(:is_forced_32bit).and_return(false) + os_info_double = double("os_info") + allow(provider.run_context.node.kernel).to receive(:os_info).and_return(os_info_double) + allow(os_info_double).to receive(:system_directory).and_return("C:\\Windows\\system32") end it "sets the -Command flag as the last flag" do - expect(provider.flags.split(' ').pop).to eq("-Command") + flags = provider.command.split(' ').keep_if { |flag| flag =~ /^-/ } + expect(flags.pop).to eq("-Command") end end context 'not on nano' do before(:each) do allow(Chef::Platform).to receive(:windows_nano_server?).and_return(false) + allow(provider).to receive(:is_forced_32bit).and_return(false) + os_info_double = double("os_info") + allow(provider.run_context.node.kernel).to receive(:os_info).and_return(os_info_double) + allow(os_info_double).to receive(:system_directory).and_return("C:\\Windows\\system32") end it "sets the -File flag as the last flag" do - expect(provider.flags.split(' ').pop).to eq("-File") + flags = provider.command.split(' ').keep_if { |flag| flag =~ /^-/ } + expect(flags.pop).to eq("-File") end let(:execution_policy_flag) do |