From a0b29567134d40d5a092493aa9c47b1ca19c6d86 Mon Sep 17 00:00:00 2001 From: rameel Date: Sat, 21 Mar 2026 19:28:54 +0500 Subject: [PATCH] Fix inconsistent time's offset in PhysicalFile/PhysicalDirectory properties --- .../PhysicalDirectory.cs | 4 +-- .../PhysicalFile.cs | 4 +-- .../WriteablePhysicalFileSystemTests.cs | 36 +++++++++++++++++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/Ramstack.FileSystem.Physical/PhysicalDirectory.cs b/src/Ramstack.FileSystem.Physical/PhysicalDirectory.cs index fe646d8..acf9fd2 100644 --- a/src/Ramstack.FileSystem.Physical/PhysicalDirectory.cs +++ b/src/Ramstack.FileSystem.Physical/PhysicalDirectory.cs @@ -44,9 +44,9 @@ public PhysicalDirectory(PhysicalFileSystem fileSystem, string path, string phys var properties = info.Exists ? VirtualNodeProperties.CreateDirectoryProperties( - creationTime: info.CreationTimeUtc, + creationTime: info.CreationTime, lastAccessTime: info.LastAccessTime, - lastWriteTime: info.LastWriteTimeUtc) + lastWriteTime: info.LastWriteTime) : null; return new ValueTask(properties); diff --git a/src/Ramstack.FileSystem.Physical/PhysicalFile.cs b/src/Ramstack.FileSystem.Physical/PhysicalFile.cs index 1839201..776c92a 100644 --- a/src/Ramstack.FileSystem.Physical/PhysicalFile.cs +++ b/src/Ramstack.FileSystem.Physical/PhysicalFile.cs @@ -31,9 +31,9 @@ internal PhysicalFile(PhysicalFileSystem fileSystem, string path, string physica var file = new FileInfo(_physicalPath); var properties = file.Exists ? VirtualNodeProperties.CreateFileProperties( - creationTime: file.CreationTimeUtc, + creationTime: file.CreationTime, lastAccessTime: file.LastAccessTime, - lastWriteTime: file.LastWriteTimeUtc, + lastWriteTime: file.LastWriteTime, length: file.Length) : null; diff --git a/tests/Ramstack.FileSystem.Physical.Tests/WriteablePhysicalFileSystemTests.cs b/tests/Ramstack.FileSystem.Physical.Tests/WriteablePhysicalFileSystemTests.cs index 104114b..fde8a9a 100644 --- a/tests/Ramstack.FileSystem.Physical.Tests/WriteablePhysicalFileSystemTests.cs +++ b/tests/Ramstack.FileSystem.Physical.Tests/WriteablePhysicalFileSystemTests.cs @@ -8,6 +8,42 @@ public class WriteablePhysicalFileSystemTests : VirtualFileSystemSpecificationTe { private readonly TempFileStorage _storage = new TempFileStorage(); + [Test] + public async Task Directory_GetProperties_ReturnsConsistentTimezones() + { + using var fs = GetFileSystem(); + + var directory = await fs + .GetDirectory("/project") + .GetPropertiesAsync(); + + Assert.That( + directory.LastAccessTime.Offset, + Is.EqualTo(directory.LastWriteTime.Offset)); + + Assert.That( + directory.CreationTime.Offset, + Is.EqualTo(directory.LastWriteTime.Offset)); + } + + [Test] + public async Task File_GetProperties_ReturnsConsistentTimezones() + { + using var fs = GetFileSystem(); + + var file = await fs + .GetFile("/project/docs/api_reference.md") + .GetPropertiesAsync(); + + Assert.That( + file.LastAccessTime.Offset, + Is.EqualTo(file.LastWriteTime.Offset)); + + Assert.That( + file.CreationTime.Offset, + Is.EqualTo(file.LastWriteTime.Offset)); + } + [OneTimeTearDown] public void Cleanup() => _storage.Dispose();