fix: persist first-run folder paths only
This commit is contained in:
@@ -138,39 +138,26 @@ public sealed class LegacyOperatorSettingsTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ResourceValidation_ParsesEveryClosedUiIniAndOnlyFlagsDatabaseIni()
|
||||
public void ResourceValidation_AcceptsAnEmptyResDirectoryAsADirectRuntimePath()
|
||||
{
|
||||
using var directory = new TemporaryDirectory();
|
||||
var resourceDirectory = directory.CreateDirectory("Res");
|
||||
WriteValidResourceFiles(resourceDirectory);
|
||||
File.WriteAllText(
|
||||
Path.Combine(resourceDirectory, "MmoneyCoder.ini"),
|
||||
"secret-content-that-must-not-be-returned");
|
||||
|
||||
var stockMenu = LegacyRuntimeStockCutMenuLoader
|
||||
.ResolveFromResourceDirectory(resourceDirectory);
|
||||
Assert.False(stockMenu.UsesBuiltInCatalog);
|
||||
var uiCatalogs = LegacyRuntimeUiCatalogLoader
|
||||
.ResolveFromResourceDirectory(resourceDirectory);
|
||||
Assert.Empty(uiCatalogs.Warnings);
|
||||
|
||||
var result = LegacyOperatorFolderValidator.Validate(
|
||||
LegacyOperatorSettingsFolderKind.Resource,
|
||||
resourceDirectory);
|
||||
|
||||
Assert.True(result.IsValid, $"{result.Failure}: {result.WarningMessage}");
|
||||
Assert.True(result.Folder!.DatabaseIniDetected);
|
||||
Assert.DoesNotContain("secret", result.Folder.AbbreviatedPath,
|
||||
StringComparison.OrdinalIgnoreCase);
|
||||
Assert.Equal(Path.GetFullPath(resourceDirectory), result.Folder!.CanonicalPath);
|
||||
Assert.False(result.Folder.DatabaseIniDetected);
|
||||
Assert.Null(result.WarningMessage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ResourceValidation_InvalidClosedIniFailsWithoutPartialAcceptance()
|
||||
public void ResourceValidation_DoesNotParseIniContents()
|
||||
{
|
||||
using var directory = new TemporaryDirectory();
|
||||
var resourceDirectory = directory.CreateDirectory("private-runtime-resources");
|
||||
WriteValidResourceFiles(resourceDirectory);
|
||||
WriteCp949(
|
||||
Path.Combine(resourceDirectory, "종목.ini"),
|
||||
["[종목]", "등록되지_않은_컷"]);
|
||||
@@ -179,32 +166,26 @@ public sealed class LegacyOperatorSettingsTests
|
||||
LegacyOperatorSettingsFolderKind.Resource,
|
||||
resourceDirectory);
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
Assert.Equal(
|
||||
LegacyOperatorFolderValidationFailure.InvalidRuntimeCatalog,
|
||||
result.Failure);
|
||||
Assert.Null(result.Folder);
|
||||
AssertPathFree(result.WarningMessage, resourceDirectory);
|
||||
Assert.True(result.IsValid);
|
||||
Assert.Equal(Path.GetFullPath(resourceDirectory), result.Folder!.CanonicalPath);
|
||||
Assert.Null(result.WarningMessage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ResourceValidation_RejectsAnUnsafeDatabaseIniWithoutReadingIt()
|
||||
public void ResourceValidation_DoesNotInspectDatabaseIni()
|
||||
{
|
||||
using var directory = new TemporaryDirectory();
|
||||
var resourceDirectory = directory.CreateDirectory("Res");
|
||||
WriteValidResourceFiles(resourceDirectory);
|
||||
Directory.CreateDirectory(Path.Combine(resourceDirectory, "MmoneyCoder.ini"));
|
||||
|
||||
var result = LegacyOperatorFolderValidator.Validate(
|
||||
LegacyOperatorSettingsFolderKind.Resource,
|
||||
resourceDirectory);
|
||||
|
||||
Assert.False(result.IsValid);
|
||||
Assert.Equal(
|
||||
LegacyOperatorFolderValidationFailure.RequiredFileUnsafe,
|
||||
result.Failure);
|
||||
Assert.Null(result.Folder);
|
||||
AssertPathFree(result.WarningMessage, resourceDirectory);
|
||||
Assert.True(result.IsValid);
|
||||
Assert.Equal(Path.GetFullPath(resourceDirectory), result.Folder!.CanonicalPath);
|
||||
Assert.False(result.Folder.DatabaseIniDetected);
|
||||
Assert.Null(result.WarningMessage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user