修改 CloudProduct ImageCache 项目改为 插件
This commit is contained in:
1 parent
5ff52dea92
commit
292cb8638c
26 files changed
+417
-282
No files matched your search
@@ -0,0 +1,53 @@
|
||||
using MAX.Plugins;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
internal static class ConfigurationChecks
|
||||
{
|
||||
public static void Run()
|
||||
{
|
||||
var tempRoot = Path.GetFullPath(Path.GetTempPath());
|
||||
var directory = Path.GetFullPath(Path.Combine(tempRoot, "StorePluginChecks-" + Guid.NewGuid().ToString("N")));
|
||||
Directory.CreateDirectory(directory);
|
||||
try
|
||||
{
|
||||
var environment = Host.CreateApplicationBuilder().Environment;
|
||||
environment.EnvironmentName = "PluginTest";
|
||||
var first = Path.Combine(directory, "First");
|
||||
var second = Path.Combine(directory, "Second");
|
||||
Directory.CreateDirectory(first);
|
||||
Directory.CreateDirectory(second);
|
||||
File.WriteAllText(Path.Combine(first, "appsettings.json"), """{"Shared":"first","Required":"present"}""");
|
||||
File.WriteAllText(Path.Combine(first, "appsettings.PluginTest.json"), """{"Shared":"environment"}""");
|
||||
File.WriteAllText(Path.Combine(second, "appsettings.json"), """{"Shared":"second"}""");
|
||||
using var a = new PluginContext("First", first, environment);
|
||||
using var b = new PluginContext("Second", second, environment);
|
||||
if (a.Configuration["Shared"] != "environment" || b.Configuration["Shared"] != "second")
|
||||
throw new Exception("Configuration isolation/environment override failed");
|
||||
if (a.RequireConfiguration("Required") != "present") throw new Exception("Required setting missing");
|
||||
try { b.RequireConfiguration("Required"); throw new Exception("Expected missing key failure"); }
|
||||
catch (InvalidOperationException ex) when (ex.Message.Contains("Second") && ex.Message.Contains("Required")) { }
|
||||
const string envKey = "Plugins__First__Shared";
|
||||
var previous = System.Environment.GetEnvironmentVariable(envKey);
|
||||
try
|
||||
{
|
||||
System.Environment.SetEnvironmentVariable(envKey, "specific-environment-variable");
|
||||
using var overridden = new PluginContext("First", first, environment);
|
||||
using var untouched = new PluginContext("Second", second, environment);
|
||||
if (overridden.Configuration["Shared"] != "specific-environment-variable" || untouched.Configuration["Shared"] != "second")
|
||||
throw new Exception("Plugin environment variable isolation failed");
|
||||
}
|
||||
finally { System.Environment.SetEnvironmentVariable(envKey, previous); }
|
||||
var absent = Path.Combine(directory, "Absent");
|
||||
Directory.CreateDirectory(absent);
|
||||
try { using var invalid = new PluginContext("Absent", absent, environment); throw new Exception("Expected missing file failure"); }
|
||||
catch (FileNotFoundException) { }
|
||||
Console.WriteLine("PASS configuration isolation, environment overrides, missing file/key validation");
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (!directory.StartsWith(tempRoot.TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase))
|
||||
throw new InvalidOperationException("Unexpected fixture path");
|
||||
Directory.Delete(directory, recursive: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user