Raise Errno::EISDIR when opening a directory for reading on Windows#4818
Merged
enebo merged 2 commits intojruby:masterfrom Jan 24, 2018
Merged
Raise Errno::EISDIR when opening a directory for reading on Windows#4818enebo merged 2 commits intojruby:masterfrom
enebo merged 2 commits intojruby:masterfrom
Conversation
enebo
reviewed
Jan 10, 2018
| } | ||
|
|
||
| if (file.isDirectory() && flags.isWritable()) { | ||
| if (file.isDirectory()) { |
Member
There was a problem hiding this comment.
@philr Should this happen on all platforms and not just windows? Sorry this PR got lost in the cracks.
Contributor
Author
There was a problem hiding this comment.
@enebo On platforms other than Windows (with both MRI and JRuby), File.open(directory) succeeds and an Errno::EISDIR exception is raised when calling File#read.
On Windows, File.open(directory) raises an exception. MRI raises Errno::EISDIR, but JRuby raises Errno::EACCES.
To replicate the behaviour of MRI, it is just this code that handles Windows in the openChannel() method that needs to be changed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On Windows, MRI 2.0.0 and later raises
Errno::EISDIRwhen attempting to open a directory for reading:However, JRuby 9.1.13.0 raises
Errno::EACCESinstead:This pull request modifies
RegularFileResource.openChannel()to throwResourceException.FileIsDirectoryin all cases when opening a directory instead of just for writes.