diff --git a/System.IO.Abstractions.TestingHelpers.Tests/MockFileReadAllLinesTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/MockFileReadAllLinesTests.cs index f4e642dae..19ce4b86f 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/MockFileReadAllLinesTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/MockFileReadAllLinesTests.cs @@ -70,6 +70,22 @@ public void MockFile_ReadAllLines_NotExistingFile_ThrowsCorrectFileNotFoundExcep Assert.That(exception.Message, Is.EqualTo("Could not find file '" + absentFileNameFullPath + "'.")); } + [Test] + public void MockFile_ReadAllLines_ShouldNotReturnBom() + { + // Arrange + var testFilePath = XFS.Path(@"c:\a test file.txt"); + const string testText = "Hello World"; + var fileSystem = new MockFileSystem(); + fileSystem.File.WriteAllLines(testFilePath, new[] { testText }, Encoding.UTF8); + + // Act + var result = fileSystem.File.ReadAllLines(testFilePath, Encoding.UTF8); + + // Assert + Assert.That(result.Length, Is.EqualTo(1)); + Assert.That(result[0], Is.EqualTo(testText)); + } #if FEATURE_ASYNC_FILE [Test] public async Task MockFile_ReadAllLinesAsync_ShouldReturnOriginalTextData() diff --git a/System.IO.Abstractions.TestingHelpers/MockFile.cs b/System.IO.Abstractions.TestingHelpers/MockFile.cs index 5547459a5..9fe452392 100644 --- a/System.IO.Abstractions.TestingHelpers/MockFile.cs +++ b/System.IO.Abstractions.TestingHelpers/MockFile.cs @@ -487,9 +487,12 @@ public override string[] ReadAllLines(string path, Encoding encoding) } mockFileDataAccessor.GetFile(path).CheckFileAccess(path, FileAccess.Read); - return encoding - .GetString(mockFileDataAccessor.GetFile(path).Contents) - .SplitLines(); + + using (var ms = new MemoryStream(mockFileDataAccessor.GetFile(path).Contents)) + using (var sr = new StreamReader(ms, encoding)) + { + return sr.ReadToEnd().SplitLines(); + } } public override string ReadAllText(string path)