diff --git a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs.cs b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs.cs index bfe5e508d760..c3e0adfe3045 100644 --- a/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs.cs +++ b/src/System.IO.FileSystem/tests/FileStream/ctor_str_fm_fa_fs.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.IO; using Xunit; namespace System.IO.Tests @@ -117,5 +118,26 @@ public void FileShareOpenOrCreate() } } } + + [Theory] + [InlineData(FileMode.Create)] + [InlineData(FileMode.Truncate)] + public void NoTruncateOnFileShareViolation(FileMode fileMode) + { + string fileName = GetTestFilePath(); + + using (FileStream fs = CreateFileStream(fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) + { + fs.Write(new byte[] { 42 }, 0, 1); + fs.Flush(); + FSAssert.ThrowsSharingViolation(() => CreateFileStream(fileName, fileMode, FileAccess.Write, FileShare.None).Dispose()); + } + using (FileStream reader = CreateFileStream(fileName, FileMode.Open, FileAccess.Read)) + { + byte[] buf = new byte[1]; + Assert.Equal(1, reader.Read(buf, 0, 1)); + Assert.Equal(42, buf[0]); + } + } } }