mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
|
|
using System.IO;
|
|||
|
|
using Xunit;
|
|||
|
|
|
|||
|
|
namespace LanMountainDesktop.Tests;
|
|||
|
|
|
|||
|
|
public sealed class UpdateInstallGatewayTests
|
|||
|
|
{
|
|||
|
|
[Fact]
|
|||
|
|
public void GetDirectoryName_ReturnsNull_ForRootPath()
|
|||
|
|
{
|
|||
|
|
// 验证 Path.GetDirectoryName 在根路径场景下的行为
|
|||
|
|
var rootPath = Path.GetPathRoot(Path.GetTempPath()) ?? "C:\\";
|
|||
|
|
var installerPath = Path.Combine(rootPath, "installer.exe");
|
|||
|
|
|
|||
|
|
// 根路径下的文件,GetDirectoryName 返回根路径本身(不是 null)
|
|||
|
|
var result = Path.GetDirectoryName(installerPath);
|
|||
|
|
|
|||
|
|
// 在 Windows 上,根路径文件返回根路径(如 "C:\"),不是 null
|
|||
|
|
// 但如果 installerPath 本身就是根路径(无文件名),则返回 null
|
|||
|
|
Assert.NotNull(result); // "C:\installer.exe" 的目录是 "C:\"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[Fact]
|
|||
|
|
public void GetDirectoryName_ReturnsNull_ForPathWithoutDirectory()
|
|||
|
|
{
|
|||
|
|
// 验证极端场景:路径没有目录部分
|
|||
|
|
// 这种情况在实际中很少发生,但代码应该能处理
|
|||
|
|
var fileNameOnly = "installer.exe";
|
|||
|
|
var result = Path.GetDirectoryName(fileNameOnly);
|
|||
|
|
|
|||
|
|
// 只有文件名没有路径时,GetDirectoryName 返回 null
|
|||
|
|
Assert.Null(result);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[Fact]
|
|||
|
|
public void WorkingDirectoryFallback_ShouldUseValidDirectory()
|
|||
|
|
{
|
|||
|
|
// 验证修复后的逻辑:当 GetDirectoryName 返回 null 时,
|
|||
|
|
// 应该使用 AppContext.BaseDirectory 作为后备值
|
|||
|
|
var installerPath = "installer.exe"; // 模拟只有文件名的情况
|
|||
|
|
var workingDir = Path.GetDirectoryName(installerPath) ?? AppContext.BaseDirectory;
|
|||
|
|
|
|||
|
|
// 后备值应该是有效的目录路径
|
|||
|
|
Assert.NotNull(workingDir);
|
|||
|
|
Assert.True(Directory.Exists(workingDir) || workingDir == AppContext.BaseDirectory);
|
|||
|
|
}
|
|||
|
|
}
|