summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/mixlib/shellout/windows.rb8
-rw-r--r--spec/mixlib/shellout/windows_spec.rb2
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/mixlib/shellout/windows.rb b/lib/mixlib/shellout/windows.rb
index bcda96a..6003ae8 100644
--- a/lib/mixlib/shellout/windows.rb
+++ b/lib/mixlib/shellout/windows.rb
@@ -301,14 +301,18 @@ module Mixlib
# The OS will search through valid the extensions and look
# for a binary there.
def self.find_executable(path)
- return path if File.executable? path
+ return path if executable? path
pathext.each do |ext|
exe = "#{path}#{ext}"
- return exe if File.executable? exe
+ return exe if executable? exe
end
return nil
end
+
+ def self.executable?(path)
+ File.executable?(path) && !File.directory?(path)
+ end
end
end # class
end
diff --git a/spec/mixlib/shellout/windows_spec.rb b/spec/mixlib/shellout/windows_spec.rb
index 118be75..dd8a80b 100644
--- a/spec/mixlib/shellout/windows_spec.rb
+++ b/spec/mixlib/shellout/windows_spec.rb
@@ -170,6 +170,7 @@ describe 'Mixlib::ShellOut::Windows', :windows_only do
allow(ENV).to receive(:[]).with('COMSPEC').and_return('C:\Windows\system32\cmd.exe')
allow(File).to receive(:executable?).and_return(false)
allow(File).to receive(:executable?).with(executable_path).and_return(true)
+ allow(File).to receive(:directory?).and_return(false)
end
it 'should return with full path with extension' do
@@ -180,6 +181,7 @@ describe 'Mixlib::ShellOut::Windows', :windows_only do
before do
# File.executable? returns true for directories
allow(File).to receive(:executable?).with(cmd).and_return(true)
+ allow(File).to receive(:directory?).with(cmd).and_return(true)
end
it 'should return with full path with extension' do