[skip ci] Fix unit tests on macOS (And probably Unix) (#3647)

This commit is contained in:
Fesaa 2025-03-19 11:13:05 +00:00 committed by GitHub
parent e897fb9a12
commit 98a2b9d3ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 154 additions and 172 deletions

View file

@ -1,8 +1,10 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.IO.Abstractions.TestingHelpers;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using API.Services;
@ -10,12 +12,19 @@ using Kavita.Common.Helpers;
using Microsoft.Extensions.Logging;
using NSubstitute;
using Xunit;
using Xunit.Abstractions;
namespace API.Tests.Services;
public class DirectoryServiceTests
public class DirectoryServiceTests: AbstractFsTest
{
private readonly ILogger<DirectoryService> _logger = Substitute.For<ILogger<DirectoryService>>();
private readonly ITestOutputHelper _testOutputHelper;
public DirectoryServiceTests(ITestOutputHelper testOutputHelper)
{
_testOutputHelper = testOutputHelper;
}
#region TraverseTreeParallelForEach
@ -373,9 +382,16 @@ public class DirectoryServiceTests
#endregion
#region IsDriveMounted
// The root directory (/) is always mounted on non windows
[Fact]
public void IsDriveMounted_DriveIsNotMounted()
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
_testOutputHelper.WriteLine("Skipping test on non Windows platform");
return;
}
const string testDirectory = "c:/manga/";
var fileSystem = new MockFileSystem();
fileSystem.AddFile($"{testDirectory}data-0.txt", new MockFileData("abc"));
@ -387,6 +403,12 @@ public class DirectoryServiceTests
[Fact]
public void IsDriveMounted_DriveIsMounted()
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
_testOutputHelper.WriteLine("Skipping test on non Windows platform");
return;
}
const string testDirectory = "c:/manga/";
var fileSystem = new MockFileSystem();
fileSystem.AddFile($"{testDirectory}data-0.txt", new MockFileData("abc"));
@ -900,12 +922,14 @@ public class DirectoryServiceTests
#region GetHumanReadableBytes
[Theory]
[InlineData(1200, "1.17 KB")]
[InlineData(1, "1 B")]
[InlineData(10000000, "9.54 MB")]
[InlineData(10000000000, "9.31 GB")]
public void GetHumanReadableBytesTest(long bytes, string expected)
[InlineData(1200, 1.17, " KB")]
[InlineData(1, 1, " B")]
[InlineData(10000000, 9.54, " MB")]
[InlineData(10000000000, 9.31, " GB")]
public void GetHumanReadableBytesTest(long bytes, float number, string suffix)
{
// GetHumanReadableBytes is user facing, should be in CultureInfo.CurrentCulture
var expected = number.ToString(CultureInfo.CurrentCulture) + suffix;
Assert.Equal(expected, DirectoryService.GetHumanReadableBytes(bytes));
}
#endregion
@ -1041,11 +1065,14 @@ public class DirectoryServiceTests
#region GetParentDirectory
[Theory]
[InlineData(@"C:/file.txt", "C:/")]
[InlineData(@"C:/folder/file.txt", "C:/folder")]
[InlineData(@"C:/folder/subfolder/file.txt", "C:/folder/subfolder")]
[InlineData(@"file.txt", "")]
[InlineData(@"folder/file.txt", "folder")]
[InlineData(@"folder/subfolder/file.txt", "folder/subfolder")]
public void GetParentDirectoryName_ShouldFindParentOfFiles(string path, string expected)
{
path = Root + path;
expected = Root + expected;
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
{
{ path, new MockFileData(string.Empty)}
@ -1055,11 +1082,14 @@ public class DirectoryServiceTests
Assert.Equal(expected, ds.GetParentDirectoryName(path));
}
[Theory]
[InlineData(@"C:/folder", "C:/")]
[InlineData(@"C:/folder/subfolder", "C:/folder")]
[InlineData(@"C:/folder/subfolder/another", "C:/folder/subfolder")]
[InlineData(@"folder", "")]
[InlineData(@"folder/subfolder", "folder")]
[InlineData(@"folder/subfolder/another", "folder/subfolder")]
public void GetParentDirectoryName_ShouldFindParentOfDirectories(string path, string expected)
{
path = Root + path;
expected = Root + expected;
var fileSystem = new MockFileSystem();
fileSystem.AddDirectory(path);