From 9e091c0e10aeac2d65dad373d2e65205c762ac8a Mon Sep 17 00:00:00 2001
From: Balazs Tihanyi <155494815+Blaisor@users.noreply.github.com>
Date: Fri, 12 Jul 2024 18:36:39 +0200
Subject: [PATCH 1/3] feat: Added GetFileNameWithoutExtension() extension
method to IFileInfo
---
.../IFileInfoExtensions.cs | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/System.IO.Abstractions.Extensions/IFileInfoExtensions.cs b/src/System.IO.Abstractions.Extensions/IFileInfoExtensions.cs
index cbd58b2..7464946 100644
--- a/src/System.IO.Abstractions.Extensions/IFileInfoExtensions.cs
+++ b/src/System.IO.Abstractions.Extensions/IFileInfoExtensions.cs
@@ -165,6 +165,12 @@ public static void WriteAllText(this IFileInfo file, string contents)
file.FileSystem.File.WriteAllText(file.FullName, contents);
}
+ ///
+ public static string GetFileNameWithoutExtension(this IFileInfo file)
+ {
+ return file.FileSystem.Path.GetFileNameWithoutExtension(file.Name);
+ }
+
private static FileMode GetWriteFileMode(IFileInfo info, bool overwrite)
{
if (!overwrite && info.Exists)
From a02b139a64d35e8bbd3a0e8cdf19b3f9ee865629 Mon Sep 17 00:00:00 2001
From: Balazs Tihanyi <155494815+Blaisor@users.noreply.github.com>
Date: Sat, 6 Sep 2025 17:02:11 +0200
Subject: [PATCH 2/3] feat: Added tests for
IFileInfoExtensions.GetFileNameWithoutExtension
---
.../FileInfoExtensionsTests.cs | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/tests/System.IO.Abstractions.Extensions.Tests/FileInfoExtensionsTests.cs b/tests/System.IO.Abstractions.Extensions.Tests/FileInfoExtensionsTests.cs
index 57aacf3..ad5ff4b 100644
--- a/tests/System.IO.Abstractions.Extensions.Tests/FileInfoExtensionsTests.cs
+++ b/tests/System.IO.Abstractions.Extensions.Tests/FileInfoExtensionsTests.cs
@@ -290,5 +290,22 @@ public void AppendText_FileExistsAndHasText_LinesAreAppended(params string[] app
Assert.AreEqual(expected[i], actual[i]);
}
}
+
+ [TestCase("test.extension", "test")]
+ [TestCase("noextension", "noextension")]
+ [TestCase(".extensiononly", "")]
+ public void GetFileNameWithoutExtension_WithValidFileName_ReturnsNameWithoutExtension(string fileName, string expectedName)
+ {
+ //arrange
+ var fs = new FileSystem();
+ var current = fs.DirectoryInfo.New(fs.Directory.GetCurrentDirectory());
+ var file = current.File(fileName);
+
+ //act
+ var name = file.GetFileNameWithoutExtension();
+
+ //assert
+ Assert.AreEqual(expectedName, name);
+ }
}
}
\ No newline at end of file
From 3348c3632da9052cdd14c93623c12903f14d5ffb Mon Sep 17 00:00:00 2001
From: Blaisor <155494815+Blaisor@users.noreply.github.com>
Date: Sat, 17 Jan 2026 05:10:45 +0100
Subject: [PATCH 3/3] Added extra test case to FileInfoExtensionsTests.cs
Co-authored-by: Luigi Grilli
---
.../FileInfoExtensionsTests.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/System.IO.Abstractions.Extensions.Tests/FileInfoExtensionsTests.cs b/tests/System.IO.Abstractions.Extensions.Tests/FileInfoExtensionsTests.cs
index ad5ff4b..b26f47d 100644
--- a/tests/System.IO.Abstractions.Extensions.Tests/FileInfoExtensionsTests.cs
+++ b/tests/System.IO.Abstractions.Extensions.Tests/FileInfoExtensionsTests.cs
@@ -294,6 +294,7 @@ public void AppendText_FileExistsAndHasText_LinesAreAppended(params string[] app
[TestCase("test.extension", "test")]
[TestCase("noextension", "noextension")]
[TestCase(".extensiononly", "")]
+ [TestCase("double.dot.ext", "double.dot")]
public void GetFileNameWithoutExtension_WithValidFileName_ReturnsNameWithoutExtension(string fileName, string expectedName)
{
//arrange