Implementing MockDirectoryInfo.CreationTime #316
Closed
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.
Implemented
MockDirectoryInfo.CreationTimeby having the property look up theMockFileDatafor the directory on the instance fieldmockFileDataAccessor, like other properties and methods in the same class do.Added unit tests to confirm date is assignable, retained and correctly translates between local time and UTC, so it can be assigned in either time zone and retrieved in either time zone and stay accurate.
Potential Bug Identified
The test
MockDirectoryInfo_CreationTime_ShouldWorkIfPathIsActuallyAFileis currently failing. In the BCL, it is possible to create anew DirectoryInfofor a path to a file and theCreationTimeis accessible and accurate, even though it's aDirectoryInfopointing to a file (on Windows in .NET Framework anyway).I wrote a sanity test to confirm the BCL exhibits this behavior:
This doesn't work in System.IO.Abstractions because the
MockFileSystemdisambiguates file and directory paths by looking for a trailing slash.MockDirectoryInfoadds a ensures there is a trailing slash on the path soMockFileSystemcan make this distinction.A separate issue can be opened for this if we want to deal with it. The test currently has the
Ignoreattribute. We could leave it there as a reminder or just remove it.