Details
-
Task
-
Status: Closed
-
Normal
-
Resolution: Won't Do
-
None
-
None
-
None
-
Night's Watch
-
Needs Assessment
Description
Puppet::Util::Execution.execute checks for the existence of the cwd specified when the :cwd option is given using Puppet::FileSystem.directory?
However, Puppet::FileSystem.directory? currently can return a false negative with reparse points (symlinks) in windows. We should refactor that function so it works with reparse points.
A change to refactor Puppet::FileSystem.dirctory? is likely too risky to introduce in a Z release, so we'll need to introduce two fixes: one that's safer for Z releases and one to actually fix Puppet::FileSystem.directory?
Note that Puppet::Util::Windows::File.exist? works for directories as well (the underlying windows API used in that function is for files or directories), so that's likely the solution here:
For the Z release streams we can simply have the check cwd use Puppet::Util::Windows::File.exist? on windows and directory? everywhere else. Then the change to the master branch should be to actually leverage Puppet::Util::Windows::File.exist? inside the windows specific Puppet::FileSystem.dirctory?