From 992c3a8deddfc02c648daa52eae6bfcf6eac562b Mon Sep 17 00:00:00 2001 From: Jens Weiermann Date: Wed, 19 Dec 2018 16:15:50 +0100 Subject: [PATCH 1/2] Fix (and test) for #429 --- .../DirectoryInfoTests.cs | 21 +++++++++++++++++++ .../DirectoryInfoWrapper.cs | 8 ++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 System.IO.Abstractions.TestingHelpers.Tests/DirectoryInfoTests.cs diff --git a/System.IO.Abstractions.TestingHelpers.Tests/DirectoryInfoTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/DirectoryInfoTests.cs new file mode 100644 index 000000000..423b9565f --- /dev/null +++ b/System.IO.Abstractions.TestingHelpers.Tests/DirectoryInfoTests.cs @@ -0,0 +1,21 @@ +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Text; + +namespace System.IO.Abstractions.TestingHelpers.Tests +{ + [TestFixture] + public class DirectoryInfoTests + { + [Test] + public void Parent_ForRootDirectory_ShouldReturnNull() + { + var wrapperFilesystem = new FileSystem(); + + var directoryInfo = wrapperFilesystem.DirectoryInfo.FromDirectoryName("C:\\"); + var rootsParent = directoryInfo.Parent; + Assert.IsNull(rootsParent); + } + } +} diff --git a/System.IO.Abstractions/DirectoryInfoWrapper.cs b/System.IO.Abstractions/DirectoryInfoWrapper.cs index ec7e4d5e8..6eaa8db85 100644 --- a/System.IO.Abstractions/DirectoryInfoWrapper.cs +++ b/System.IO.Abstractions/DirectoryInfoWrapper.cs @@ -227,7 +227,13 @@ public override void SetAccessControl(DirectorySecurity directorySecurity) public override DirectoryInfoBase Parent { - get { return new DirectoryInfoWrapper(FileSystem, instance.Parent); } + get + { + if (instance.Parent == null) + return null; + else + return new DirectoryInfoWrapper(FileSystem, instance.Parent); + } } public override DirectoryInfoBase Root From 9d716b7bba692115611ae8d5b8d31642c0be0758 Mon Sep 17 00:00:00 2001 From: Jens Weiermann Date: Wed, 19 Dec 2018 16:30:05 +0100 Subject: [PATCH 2/2] Updated test to (hopfully) also work on linux machines --- .../DirectoryInfoTests.cs | 5 +++-- System.IO.Abstractions/DirectoryInfoWrapper.cs | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/System.IO.Abstractions.TestingHelpers.Tests/DirectoryInfoTests.cs b/System.IO.Abstractions.TestingHelpers.Tests/DirectoryInfoTests.cs index 423b9565f..820b2d66a 100644 --- a/System.IO.Abstractions.TestingHelpers.Tests/DirectoryInfoTests.cs +++ b/System.IO.Abstractions.TestingHelpers.Tests/DirectoryInfoTests.cs @@ -13,8 +13,9 @@ public void Parent_ForRootDirectory_ShouldReturnNull() { var wrapperFilesystem = new FileSystem(); - var directoryInfo = wrapperFilesystem.DirectoryInfo.FromDirectoryName("C:\\"); - var rootsParent = directoryInfo.Parent; + var current = wrapperFilesystem.Directory.GetCurrentDirectory(); + var root = wrapperFilesystem.DirectoryInfo.FromDirectoryName(current).Root; + var rootsParent = root.Parent; Assert.IsNull(rootsParent); } } diff --git a/System.IO.Abstractions/DirectoryInfoWrapper.cs b/System.IO.Abstractions/DirectoryInfoWrapper.cs index 6eaa8db85..2fe120a22 100644 --- a/System.IO.Abstractions/DirectoryInfoWrapper.cs +++ b/System.IO.Abstractions/DirectoryInfoWrapper.cs @@ -230,9 +230,13 @@ public override DirectoryInfoBase Parent get { if (instance.Parent == null) + { return null; + } else + { return new DirectoryInfoWrapper(FileSystem, instance.Parent); + } } }