diff --git a/.gitignore b/.gitignore index 542da962..c3c65245 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ obj/ *.received.* nugets/ .claude/settings.local.json +nul diff --git a/src/DiffEngine.AotTests/DiffEngine.AotTests.csproj b/src/DiffEngine.AotTests/DiffEngine.AotTests.csproj new file mode 100644 index 00000000..5f37fcf3 --- /dev/null +++ b/src/DiffEngine.AotTests/DiffEngine.AotTests.csproj @@ -0,0 +1,18 @@ + + + + Exe + net9.0 + enable + true + true + true + + win-x64 + + + + + + + diff --git a/src/DiffEngine.AotTests/GlobalUsings.cs b/src/DiffEngine.AotTests/GlobalUsings.cs new file mode 100644 index 00000000..c1d1f261 --- /dev/null +++ b/src/DiffEngine.AotTests/GlobalUsings.cs @@ -0,0 +1 @@ +global using DiffEngine; diff --git a/src/DiffEngine.AotTests/Program.cs b/src/DiffEngine.AotTests/Program.cs new file mode 100644 index 00000000..5df4a5ae --- /dev/null +++ b/src/DiffEngine.AotTests/Program.cs @@ -0,0 +1,58 @@ +public static class Program +{ + public static int Main() + { + try + { + TestDiffToolsAccess(); + TestDefinitionsAccess(); + TestToolResolution(); + + Console.WriteLine("All DiffEngine AOT tests passed!"); + return 0; + } + catch (Exception ex) + { + Console.Error.WriteLine($"Test failed: {ex}"); + return 1; + } + } + + static void TestDiffToolsAccess() + { + // Test that we can access DiffTools static properties without reflection issues + var isDetected = DiffTools.IsDetectedForExtension(DiffTool.VisualStudioCode, "txt"); + Console.WriteLine($"DiffTools.IsDetectedForExtension(VSCode, 'txt'): {isDetected}"); + + var allTools = DiffTools.Resolved.ToList(); + Console.WriteLine($"DiffTools.Resolved count: {allTools.Count}"); + } + + static void TestDefinitionsAccess() + { + // Test that tool definitions can be accessed + var definitions = Definitions.Tools.ToList(); + Console.WriteLine($"Definitions.Tools count: {definitions.Count}"); + + foreach (var def in definitions.Take(3)) + { + Console.WriteLine($" Tool: {def.Tool}, Url: {def.Url}"); + } + } + + static void TestToolResolution() + { + // Test tool resolution + var found = DiffTools.TryFindByExtension("txt", out var resolved); + Console.WriteLine($"TryFindByExtension('txt'): found={found}"); + + if (found && resolved != null) + { + Console.WriteLine($" Resolved tool: {resolved.Tool}"); + } + + // Test by name + var foundByName = DiffTools.TryFindByName(DiffTool.VisualStudioCode, out _); + Console.WriteLine($"TryFindByName(VisualStudioCode): found={foundByName}"); + } +} diff --git a/src/DiffEngine.slnx b/src/DiffEngine.slnx index daf64eff..2adaed3a 100644 --- a/src/DiffEngine.slnx +++ b/src/DiffEngine.slnx @@ -33,4 +33,7 @@ + + + diff --git a/src/DiffEngine/DiffEngine.csproj b/src/DiffEngine/DiffEngine.csproj index 3eab5cd0..7f6e692e 100644 --- a/src/DiffEngine/DiffEngine.csproj +++ b/src/DiffEngine/DiffEngine.csproj @@ -3,6 +3,7 @@ net462;net472;net48;net9.0;net10.0 $(TargetFrameworks);net6.0;net7.0;net8.0;net9.0;net10.0 true + true diff --git a/src/DiffEngine/OrderReader.cs b/src/DiffEngine/OrderReader.cs index 2f988845..90799217 100644 --- a/src/DiffEngine/OrderReader.cs +++ b/src/DiffEngine/OrderReader.cs @@ -2,9 +2,7 @@ { public record Result(bool UsedToolOrderEnvVar, IEnumerable Order); - static Result defaultResult = new(false, Enum - .GetValues(typeof(DiffTool)) - .Cast()); + static Result defaultResult = new(false, Enum.GetValues()); public static Result ReadToolOrder() {