summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorClaire McQuin <claire@getchef.com>2015-10-06 12:44:48 -0700
committerClaire McQuin <claire@getchef.com>2015-10-06 13:19:28 -0700
commit9b57fbf80828747699695119a354f51dbb7fa4b2 (patch)
tree32c5d2f3317c6cabaa1338ba9dabcbf6d3119fa4 /spec
parent0053c17bba34090083a34395657ff1ba1616e213 (diff)
downloadchef-9b57fbf80828747699695119a354f51dbb7fa4b2.tar.gz
Quote paths.mcquin/chef-3883
Diffstat (limited to 'spec')
-rw-r--r--spec/support/shared/functional/windows_script.rb23
-rw-r--r--spec/unit/provider/powershell_script_spec.rb14
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