Add tests for ManagedFileSystem.MoveDirectory (#14065)

This commit is contained in:
Bond-009 2025-05-05 23:39:06 +02:00 committed by GitHub
parent dec5814a6a
commit 28e2f5bb08
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5,12 +5,13 @@ using System.Runtime.InteropServices;
using AutoFixture;
using AutoFixture.AutoMoq;
using Emby.Server.Implementations.IO;
using Jellyfin.Extensions;
using Xunit;
namespace Jellyfin.Server.Implementations.Tests.IO
namespace Jellyfin.Server.Implementations.Tests.IO;
public class ManagedFileSystemTests
{
public class ManagedFileSystemTests
{
private readonly IFixture _fixture;
private readonly ManagedFileSystem _sut;
@ -20,6 +21,42 @@ namespace Jellyfin.Server.Implementations.Tests.IO
_sut = _fixture.Create<ManagedFileSystem>();
}
[Fact]
public void MoveDirectory_SameFileSystem_Correct()
=> MoveDirectoryInternal();
[SkippableFact]
public void MoveDirectory_DifferentFileSystem_Correct()
{
const string DestinationParent = "/dev/shm";
Skip.IfNot(Directory.Exists(DestinationParent));
MoveDirectoryInternal(DestinationParent);
}
internal void MoveDirectoryInternal(string? destinationParent = null)
{
const string TempFile0 = "tempfile0";
const string TempFile1 = "tempfile1";
destinationParent ??= Path.GetTempPath();
var sourceDir = Directory.CreateTempSubdirectory();
var destinationDir = Path.Join(destinationParent, Path.GetRandomFileName());
FileHelper.CreateEmpty(Path.Join(sourceDir.FullName, TempFile0));
FileHelper.CreateEmpty(Path.Join(sourceDir.FullName, TempFile1));
_sut.MoveDirectory(sourceDir.FullName, destinationDir);
Assert.True(Directory.Exists(destinationDir));
Assert.True(File.Exists(Path.Join(destinationDir, TempFile0)));
Assert.True(File.Exists(Path.Join(destinationDir, TempFile1)));
Assert.False(Directory.Exists(sourceDir.FullName));
Directory.Delete(destinationDir, true);
}
[SkippableTheory]
[InlineData("/Volumes/Library/Sample/Music/Playlists/", "../Beethoven/Misc/Moonlight Sonata.mp3", "/Volumes/Library/Sample/Music/Beethoven/Misc/Moonlight Sonata.mp3")]
[InlineData("/Volumes/Library/Sample/Music/Playlists/", "../../Beethoven/Misc/Moonlight Sonata.mp3", "/Volumes/Library/Sample/Beethoven/Misc/Moonlight Sonata.mp3")]
@ -46,7 +83,7 @@ namespace Jellyfin.Server.Implementations.Tests.IO
string filePath,
string expectedAbsolutePath)
{
Skip.If(!OperatingSystem.IsWindows());
Skip.IfNot(OperatingSystem.IsWindows());
var generatedPath = _sut.MakeAbsolutePath(folderPath, filePath);
@ -83,5 +120,4 @@ namespace Jellyfin.Server.Implementations.Tests.IO
[DllImport("libc", SetLastError = true, CharSet = CharSet.Ansi)]
[DefaultDllImportSearchPaths(DllImportSearchPath.UserDirectories)]
private static extern int symlink(string target, string linkpath);
}
}