diff --git a/src/System.IO.Abstractions.TestingHelpers/MockFile.cs b/src/System.IO.Abstractions.TestingHelpers/MockFile.cs index 0c6244fa4..69799d133 100644 --- a/src/System.IO.Abstractions.TestingHelpers/MockFile.cs +++ b/src/System.IO.Abstractions.TestingHelpers/MockFile.cs @@ -126,9 +126,9 @@ public override Stream Create(string path, int bufferSize) => Create(path, bufferSize, FileOptions.None); public override Stream Create(string path, int bufferSize, FileOptions options) => - CreateInternal(path, options); + CreateInternal(path, FileAccess.Write, options); - private Stream CreateInternal(string path, FileOptions options) + private Stream CreateInternal(string path, FileAccess access, FileOptions options) { if (path == null) { @@ -140,7 +140,7 @@ private Stream CreateInternal(string path, FileOptions options) var mockFileData = new MockFileData(new byte[0]); mockFileDataAccessor.AddFile(path, mockFileData); - return OpenWriteInternal(path, options); + return OpenInternal(path, FileMode.Open, access, options); } public override StreamWriter CreateText(string path) @@ -442,13 +442,13 @@ private Stream OpenInternal( if (!exists || mode == FileMode.CreateNew) { - return Create(path); + return CreateInternal(path, access, options); } if (mode == FileMode.Create || mode == FileMode.Truncate) { Delete(path); - return Create(path); + return CreateInternal(path, access, options); } var mockFileData = mockFileDataAccessor.GetFile(path); diff --git a/tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileOpenTests.cs b/tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileOpenTests.cs index 2042f1b34..7e0f9bd95 100644 --- a/tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileOpenTests.cs +++ b/tests/System.IO.Abstractions.TestingHelpers.Tests/MockFileOpenTests.cs @@ -51,6 +51,19 @@ public void MockFile_Open_CreatesNewFileFileOnCreate() Assert.That(stream.Length, Is.EqualTo(0)); } + [Test] + public void MockFile_Open_AllowsReadWriteOnCreate() + { + string filepath = XFS.Path(@"c:\something\doesnt\exist.txt"); + var filesystem = new MockFileSystem(new Dictionary()); + filesystem.AddDirectory(XFS.Path(@"c:\something\doesnt")); + + var stream = filesystem.File.Open(filepath, FileMode.Create); + + Assert.True(stream.CanRead); + Assert.True(stream.CanWrite); + } + [Test] public void MockFile_Open_CreatesNewFileFileOnCreateNew() {