diff --git a/docs/diff-tool.custom.md b/docs/diff-tool.custom.md index ea90e0c9..4228c53e 100644 --- a/docs/diff-tool.custom.md +++ b/docs/diff-tool.custom.md @@ -24,7 +24,7 @@ var resolvedTool = DiffTools.AddTool( exePath: diffToolPath, binaryExtensions: [".jpg"])!; ``` -snippet source | anchor +snippet source | anchor Add a tool based on existing resolved tool: @@ -39,7 +39,7 @@ var resolvedTool = DiffTools.AddToolBasedOn( Left: (temp, target) => $"\"custom args \"{target}\" \"{temp}\"", Right: (temp, target) => $"\"custom args \"{temp}\" \"{target}\""))!; ``` -snippet source | anchor +snippet source | anchor @@ -52,7 +52,7 @@ New tools are added to the top of the order, the last tool added will resolve be ```cs await DiffRunner.LaunchAsync(tempFile, targetFile); ``` -snippet source | anchor +snippet source | anchor Alternatively the instance returned from `AddTool*` can be used to explicitly launch that tool. @@ -69,7 +69,7 @@ var resolvedTool = DiffTools.AddToolBasedOn( await DiffRunner.LaunchAsync(resolvedTool!, "PathToTempFile", "PathToTargetFile"); ``` -snippet source | anchor +snippet source | anchor diff --git a/docs/diff-tool.order.md b/docs/diff-tool.order.md index 54094ecb..d5efe981 100644 --- a/docs/diff-tool.order.md +++ b/docs/diff-tool.order.md @@ -51,5 +51,5 @@ For example `VisualStudio,Meld` will result in VisualStudio then Meld then all o ```cs DiffTools.UseOrder(DiffTool.VisualStudio, DiffTool.AraxisMerge); ``` -snippet source | anchor +snippet source | anchor diff --git a/readme.md b/readme.md index 9d85a9fe..b5f60e0e 100644 --- a/readme.md +++ b/readme.md @@ -83,7 +83,7 @@ A tool can be launched using the following: ```cs await DiffRunner.LaunchAsync(tempFile, targetFile); ``` -snippet source | anchor +snippet source | anchor Note that this method will respect the above [difference behavior](/docs/diff-tool.md#detected-difference-behavior) in terms of Auto refresh and MDI behaviors. @@ -98,7 +98,7 @@ A tool can be closed using the following: ```cs DiffRunner.Kill(file1, file2); ``` -snippet source | anchor +snippet source | anchor Note that this method will respect the above [difference behavior](/docs/diff-tool.md#detected-difference-behavior) in terms of MDI behavior. diff --git a/src/DiffEngine.Tests/DiffEngine.Tests.csproj b/src/DiffEngine.Tests/DiffEngine.Tests.csproj index 965d1d11..7a7dc156 100644 --- a/src/DiffEngine.Tests/DiffEngine.Tests.csproj +++ b/src/DiffEngine.Tests/DiffEngine.Tests.csproj @@ -11,11 +11,13 @@ - - + + + - + + \ No newline at end of file diff --git a/src/DiffEngine.Tests/DiffEngineTrayTest.cs b/src/DiffEngine.Tests/DiffEngineTrayTest.cs index 47e9ac61..ead915ca 100644 --- a/src/DiffEngine.Tests/DiffEngineTrayTest.cs +++ b/src/DiffEngine.Tests/DiffEngineTrayTest.cs @@ -1,7 +1,7 @@ -public class DiffEngineTrayTest(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class DiffEngineTrayTest { - [Fact] + [Test] public void IsRunning() => - Assert.False(DiffEngineTray.IsRunning); + False(DiffEngineTray.IsRunning); } \ No newline at end of file diff --git a/src/DiffEngine.Tests/DiffRunnerTests.cs b/src/DiffEngine.Tests/DiffRunnerTests.cs index eff443ec..9a56c123 100644 --- a/src/DiffEngine.Tests/DiffRunnerTests.cs +++ b/src/DiffEngine.Tests/DiffRunnerTests.cs @@ -1,6 +1,5 @@ #if NET8_0 -public class DiffRunnerTests : - XunitContextBase +public class DiffRunnerTests { static ResolvedTool tool; string file2; @@ -17,10 +16,10 @@ public async Task MaxInstancesToLaunch() ProcessCleanup.Refresh(); var result = DiffRunner.Launch(file1, "fake.txt"); await Task.Delay(300); - Assert.Equal(LaunchResult.StartedNewInstance, result); + AreEqual(LaunchResult.StartedNewInstance, result); ProcessCleanup.Refresh(); result = DiffRunner.Launch(file2, "fake.txt"); - Assert.Equal(LaunchResult.TooManyRunningDiffTools, result); + AreEqual(LaunchResult.TooManyRunningDiffTools, result); ProcessCleanup.Refresh(); DiffRunner.Kill(file1, "fake.txt"); DiffRunner.Kill(file2, "fake.txt"); @@ -41,10 +40,10 @@ public async Task MaxInstancesToLaunchAsync() ProcessCleanup.Refresh(); var result = await DiffRunner.LaunchAsync(file1, "fake.txt"); await Task.Delay(300); - Assert.Equal(LaunchResult.StartedNewInstance, result); + AreEqual(LaunchResult.StartedNewInstance, result); ProcessCleanup.Refresh(); result = await DiffRunner.LaunchAsync(file2, "fake.txt"); - Assert.Equal(LaunchResult.TooManyRunningDiffTools, result); + AreEqual(LaunchResult.TooManyRunningDiffTools, result); ProcessCleanup.Refresh(); DiffRunner.Kill(file1, "fake.txt"); DiffRunner.Kill(file2, "fake.txt"); @@ -89,7 +88,7 @@ public void LaunchAndKillDisabled() Assert.False(IsRunning()); Assert.False(ProcessCleanup.IsRunning(command)); var result = DiffRunner.Launch(file1, file2); - Assert.Equal(LaunchResult.Disabled, result); + AreEqual(LaunchResult.Disabled, result); Thread.Sleep(500); ProcessCleanup.Refresh(); Assert.False(IsRunning()); @@ -115,7 +114,7 @@ public async Task LaunchAndKillDisabledAsync() Assert.False(IsRunning()); Assert.False(ProcessCleanup.IsRunning(command)); var result = await DiffRunner.LaunchAsync(file1, file2); - Assert.Equal(LaunchResult.Disabled, result); + AreEqual(LaunchResult.Disabled, result); Thread.Sleep(500); ProcessCleanup.Refresh(); Assert.False(IsRunning()); @@ -138,7 +137,7 @@ public void LaunchAndKill() Assert.False(IsRunning()); Assert.False(ProcessCleanup.IsRunning(command)); var result = DiffRunner.Launch(file1, file2); - Assert.Equal(LaunchResult.StartedNewInstance, result); + AreEqual(LaunchResult.StartedNewInstance, result); Thread.Sleep(500); ProcessCleanup.Refresh(); Assert.True(IsRunning()); @@ -156,7 +155,7 @@ public async Task LaunchAndKillAsync() Assert.False(IsRunning()); Assert.False(ProcessCleanup.IsRunning(command)); var result = await DiffRunner.LaunchAsync(file1, file2); - Assert.Equal(LaunchResult.StartedNewInstance, result); + AreEqual(LaunchResult.StartedNewInstance, result); Thread.Sleep(500); ProcessCleanup.Refresh(); Assert.True(IsRunning()); diff --git a/src/DiffEngine.Tests/DiffToolsTest.cs b/src/DiffEngine.Tests/DiffToolsTest.cs index a2f5c0ae..033c6e99 100644 --- a/src/DiffEngine.Tests/DiffToolsTest.cs +++ b/src/DiffEngine.Tests/DiffToolsTest.cs @@ -1,15 +1,16 @@ -public class DiffToolsTest : - XunitContextBase +[TestFixture] +public class DiffToolsTest { - [Fact] + [Test] public void MaxInstancesToLaunch() => #region MaxInstancesToLaunch DiffRunner.MaxInstancesToLaunch(10); #endregion - [Fact] + [Test] public void AddTool() { + DiffTools.Reset(); var diffToolPath = FakeDiffTool.Exe; #region AddTool @@ -28,15 +29,16 @@ public void AddTool() #endregion - Assert.Equal(resolvedTool.Name, DiffTools.Resolved.First() + AreEqual(resolvedTool.Name, DiffTools.Resolved.First() .Name); - Assert.True(DiffTools.TryFindByExtension(".jpg", out var forExtension)); - Assert.Equal(resolvedTool.Name, forExtension.Name); + True(DiffTools.TryFindByExtension(".jpg", out var forExtension)); + AreEqual(resolvedTool.Name, forExtension!.Name); } - [Fact] + [Test] public void OrderShouldNotMessWithAddTool() { + DiffTools.Reset(); var diffToolPath = FakeDiffTool.Exe; var resolvedTool = DiffTools.AddTool( name: "MyCustomDiffTool", @@ -50,15 +52,16 @@ public void OrderShouldNotMessWithAddTool() exePath: diffToolPath, binaryExtensions: [])!; DiffTools.UseOrder(DiffTool.VisualStudio, DiffTool.AraxisMerge); - Assert.Equal("MyCustomDiffTool", resolvedTool.Name); - Assert.True(DiffTools.TryFindByExtension(".txt", out var forExtension)); - Assert.Equal("MyCustomDiffTool", forExtension.Name); + AreEqual("MyCustomDiffTool", resolvedTool.Name); + True(DiffTools.TryFindByExtension(".txt", out var forExtension)); + AreEqual("MyCustomDiffTool", forExtension!.Name); } #if DEBUG - [Fact] + [Test] public void AddToolBasedOn() { + DiffTools.Reset(); #region AddToolBasedOn var resolvedTool = DiffTools.AddToolBasedOn( @@ -70,15 +73,16 @@ public void AddToolBasedOn() #endregion - Assert.Equal(resolvedTool, DiffTools.Resolved.First()); - Assert.True(DiffTools.TryFindByExtension(".txt", out var forExtension)); - Assert.Equal(resolvedTool, forExtension); - Assert.Equal("\"custom args \"bar\" \"foo\"", resolvedTool.LaunchArguments.Left("foo", "bar")); - Assert.Equal("\"custom args \"foo\" \"bar\"", resolvedTool.LaunchArguments.Right("foo", "bar")); + AreEqual(resolvedTool, DiffTools.Resolved.First()); + True(DiffTools.TryFindByExtension(".txt", out var forExtension)); + AreEqual(resolvedTool, forExtension); + AreEqual("\"custom args \"bar\" \"foo\"", resolvedTool.LaunchArguments.Left("foo", "bar")); + AreEqual("\"custom args \"foo\" \"bar\"", resolvedTool.LaunchArguments.Right("foo", "bar")); } #endif static async Task AddToolAndLaunch() { + DiffTools.Reset(); #region AddToolAndLaunch var resolvedTool = DiffTools.AddToolBasedOn( @@ -142,7 +146,7 @@ public void ChangeOrder() #endregion - Assert.Equal(DiffTool.VisualStudio, DiffTools.Resolved.First() + AreEqual(DiffTool.VisualStudio, DiffTools.Resolved.First() .Tool); } @@ -167,8 +171,4 @@ public void TryFindByName() } #endif **/ - public DiffToolsTest(ITestOutputHelper output) - : - base(output) => - DiffTools.Reset(); } \ No newline at end of file diff --git a/src/DiffEngine.Tests/GlobalUsings.cs b/src/DiffEngine.Tests/GlobalUsings.cs new file mode 100644 index 00000000..f0525170 --- /dev/null +++ b/src/DiffEngine.Tests/GlobalUsings.cs @@ -0,0 +1,3 @@ +// Global using directives + +global using NUnit.Framework.Legacy; \ No newline at end of file diff --git a/src/DiffEngine.Tests/LinuxOsxProcessTests.cs b/src/DiffEngine.Tests/LinuxOsxProcessTests.cs index 8e572943..79e5e3e3 100644 --- a/src/DiffEngine.Tests/LinuxOsxProcessTests.cs +++ b/src/DiffEngine.Tests/LinuxOsxProcessTests.cs @@ -1,43 +1,43 @@ -public class LinuxOsxProcessTests(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class LinuxOsxProcessTests { - [Fact] + [Test] public void TryParseWithZshInstalled() { var parse = LinuxOsxProcess.TryParse("20872 -zsh", out var command); - Assert.True(parse); + True(parse); var processCommand = command!.Value; - Assert.Equal(20872, processCommand.Process); - Assert.Equal("-zsh", processCommand.Command); + AreEqual(20872, processCommand.Process); + AreEqual("-zsh", processCommand.Command); } - [Fact] + [Test] public void TryParse() { var parse = LinuxOsxProcess.TryParse("309 /System/Library/coreauthd -foo", out var command); - Assert.True(parse); + True(parse); var processCommand = command!.Value; - Assert.Equal(309, processCommand.Process); - Assert.Equal("/System/Library/coreauthd -foo", processCommand.Command); + AreEqual(309, processCommand.Process); + AreEqual("/System/Library/coreauthd -foo", processCommand.Command); } - [Fact] + [Test] public void TryParse_noSlash() { var parse = LinuxOsxProcess.TryParse("309 System/Library/coreauthd -foo", out var command); - Assert.True(parse); + True(parse); var processCommand = command!.Value; - Assert.Equal(309, processCommand.Process); - Assert.Equal("System/Library/coreauthd -foo", processCommand.Command); + AreEqual(309, processCommand.Process); + AreEqual("System/Library/coreauthd -foo", processCommand.Command); } - [Fact] + [Test] public void TryParse_singleDigit() { var parse = LinuxOsxProcess.TryParse("309 System/Library/coreauthd -foo", out var command); - Assert.True(parse); + True(parse); var processCommand = command!.Value; - Assert.Equal(309, processCommand.Process); - Assert.Equal("System/Library/coreauthd -foo", processCommand.Command); + AreEqual(309, processCommand.Process); + AreEqual("System/Library/coreauthd -foo", processCommand.Command); } } \ No newline at end of file diff --git a/src/DiffEngine.Tests/ModuleInitializer.cs b/src/DiffEngine.Tests/ModuleInitializer.cs index 2b1ce6dd..333cb126 100644 --- a/src/DiffEngine.Tests/ModuleInitializer.cs +++ b/src/DiffEngine.Tests/ModuleInitializer.cs @@ -1,10 +1,11 @@ -[assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly, DisableTestParallelization = true)] +[assembly: NonParallelizable] public static class ModuleInitializer { [ModuleInitializer] public static void Initialize() { + Source.Init(); Logging.Enable(); DiffRunner.Disabled = false; } diff --git a/src/DiffEngine.Tests/OrderReaderTest.cs b/src/DiffEngine.Tests/OrderReaderTest.cs index dca0de81..20140c7a 100644 --- a/src/DiffEngine.Tests/OrderReaderTest.cs +++ b/src/DiffEngine.Tests/OrderReaderTest.cs @@ -1,18 +1,18 @@ -public class OrderReaderTest(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class OrderReaderTest { - [Fact] + [Test] public void ParseEnvironmentVariable() { var diffTools = OrderReader.ParseEnvironment("VisualStudio,Meld").ToList(); - Assert.Equal(DiffTool.VisualStudio, diffTools[0]); - Assert.Equal(DiffTool.Meld, diffTools[1]); + AreEqual(DiffTool.VisualStudio, diffTools[0]); + AreEqual(DiffTool.Meld, diffTools[1]); } - [Fact] + [Test] public void BadEnvironmentVariable() { - var exception = Assert.Throws(() => OrderReader.ParseEnvironment("Foo").ToList()); - Assert.Equal("Unable to parse tool from `DiffEngine_ToolOrder` environment variable: Foo", exception.Message); + var exception = Throws(() => OrderReader.ParseEnvironment("Foo").ToList()); + AreEqual("Unable to parse tool from `DiffEngine_ToolOrder` environment variable: Foo", exception!.Message); } } \ No newline at end of file diff --git a/src/DiffEngine.Tests/OsSettingsResolverTest.cs b/src/DiffEngine.Tests/OsSettingsResolverTest.cs index 30e9052f..1b799a3d 100644 --- a/src/DiffEngine.Tests/OsSettingsResolverTest.cs +++ b/src/DiffEngine.Tests/OsSettingsResolverTest.cs @@ -1,38 +1,38 @@ -public class OsSettingsResolverTest(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class OsSettingsResolverTest { - [Fact] + [Test] public void Simple() { var paths = OsSettingsResolver.ExpandProgramFiles(["Path"]).ToList(); - Assert.Equal("Path", paths.Single()); + AreEqual("Path", paths.Single()); } - [Fact] + [Test] public void Expand() { var paths = OsSettingsResolver.ExpandProgramFiles([@"%ProgramFiles%\Path"]).ToList(); - Assert.Equal(@"%ProgramFiles%\Path", paths[0]); - Assert.Equal(@"%ProgramW6432%\Path", paths[1]); - Assert.Equal(@"%ProgramFiles(x86)%\Path", paths[2]); + AreEqual(@"%ProgramFiles%\Path", paths[0]); + AreEqual(@"%ProgramW6432%\Path", paths[1]); + AreEqual(@"%ProgramFiles(x86)%\Path", paths[2]); } - [Fact] + [Test] public void TryFindForEnvironmentVariable_NoEnv() { - Assert.False(OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "FakeTool.exe", out var envPath)); - Assert.Null(envPath); + False(OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "FakeTool.exe", out var envPath)); + Null(envPath); } - [Fact] + [Test] public void TryFindForEnvironmentVariable_WithEnvFile() { var location = Assembly.GetExecutingAssembly().Location; Environment.SetEnvironmentVariable("DiffEngine_FakeTool", location); try { - Assert.True(OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "DiffEngine.Tests.dll", out var envPath)); - Assert.Equal(location, envPath); + True(OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "DiffEngine.Tests.dll", out var envPath)); + AreEqual(location, envPath); } finally { @@ -40,15 +40,15 @@ public void TryFindForEnvironmentVariable_WithEnvFile() } } - [Fact] + [Test] public void TryFindForEnvironmentVariable_WithEnvFile_incorrectCase() { var location = Assembly.GetExecutingAssembly().Location; Environment.SetEnvironmentVariable("DiffEngine_FakeTool", location); try { - Assert.True(OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "diffengine.tests.dll", out var envPath)); - Assert.Equal(location, envPath); + True(OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "diffengine.tests.dll", out var envPath)); + AreEqual(location, envPath); } finally { @@ -56,15 +56,15 @@ public void TryFindForEnvironmentVariable_WithEnvFile_incorrectCase() } } - [Fact] + [Test] public void TryFindForEnvironmentVariable_WithEnvDir() { var location = Assembly.GetExecutingAssembly().Location; Environment.SetEnvironmentVariable("DiffEngine_FakeTool", Path.GetDirectoryName(location)); try { - Assert.True(OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "DiffEngine.Tests.dll", out var envPath)); - Assert.Equal(location, envPath); + True(OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "DiffEngine.Tests.dll", out var envPath)); + AreEqual(location, envPath); } finally { @@ -72,15 +72,15 @@ public void TryFindForEnvironmentVariable_WithEnvDir() } } - [Fact] + [Test] public void TryFindForEnvironmentVariable_WithEnv_BadPath() { var location = Assembly.GetExecutingAssembly().Location; Environment.SetEnvironmentVariable("DiffEngine_FakeTool", location); try { - var exception = Assert.Throws(()=>OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "NoFile.dll", out _)); - Assert.Equal(exception.Message, $"Could not find exe defined by DiffEngine_FakeTool. Path: {location}"); + var exception = Throws(()=>OsSettingsResolver.TryFindForEnvironmentVariable("FakeTool", "NoFile.dll", out _))!; + AreEqual(exception.Message, $"Could not find exe defined by DiffEngine_FakeTool. Path: {location}"); } finally { @@ -88,26 +88,26 @@ public void TryFindForEnvironmentVariable_WithEnv_BadPath() } } - [Fact] + [Test] public void EnvPath() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { var found = OsSettingsResolver.TryFindInEnvPath("cmd.exe", out var filePath); - Assert.True(found); - Assert.Equal(@"C:\Windows\System32\cmd.exe", filePath, ignoreCase: true); + True(found); + AreEqual(@"c:\windows\system32\cmd.exe", filePath!.ToLower()); } if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { var found = OsSettingsResolver.TryFindInEnvPath("sh", out var filePath); - Assert.True(found); - Assert.NotNull(filePath); + True(found); + NotNull(filePath); } } - [Fact] + [Test] public void EnvVar() { var launchArguments = new LaunchArguments( @@ -124,7 +124,7 @@ public void EnvVar() new(Windows: new("cmd.exe", launchArguments, "")), out var filePath, out _); - Assert.True(found); - Assert.Equal(@"C:\Windows\System32\cmd.exe", filePath, ignoreCase: true); + True(found); + AreEqual(@"c:\windows\system32\cmd.exe", filePath!.ToLower()); } } \ No newline at end of file diff --git a/src/DiffEngine.Tests/ProcessCleanupTests.cs b/src/DiffEngine.Tests/ProcessCleanupTests.cs index 2592bfac..eec2f286 100644 --- a/src/DiffEngine.Tests/ProcessCleanupTests.cs +++ b/src/DiffEngine.Tests/ProcessCleanupTests.cs @@ -1,12 +1,12 @@ -public class ProcessCleanupTests(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class ProcessCleanupTests { - [Fact] + [Test] public void Find() { var list = ProcessCleanup.FindAll().ToList(); // new processes have large Ids - Assert.True(list[0].Process > list[1].Process); + True(list[0].Process > list[1].Process); foreach (var x in list) { Debug.WriteLine($"{x.Process} {x.Command}"); diff --git a/src/DiffEngine.Tests/Source.cs b/src/DiffEngine.Tests/Source.cs new file mode 100644 index 00000000..0feda957 --- /dev/null +++ b/src/DiffEngine.Tests/Source.cs @@ -0,0 +1,10 @@ +public static class Source +{ + public static void Init([CallerFilePath] string file = "") => + Directory = Path.GetDirectoryName(file)!; + + public static string File([CallerFilePath] string file = "") => + file; + + public static string Directory { get; private set; } = null!; +} \ No newline at end of file diff --git a/src/DiffEngine.Tests/WildcardFileFinderTests.cs b/src/DiffEngine.Tests/WildcardFileFinderTests.cs index 72ed0b8b..031cb3fe 100644 --- a/src/DiffEngine.Tests/WildcardFileFinderTests.cs +++ b/src/DiffEngine.Tests/WildcardFileFinderTests.cs @@ -1,42 +1,42 @@ -public class WildcardFileFinderTests(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class WildcardFileFinderTests { - [Fact] + [Test] public void MultiMatchDir_order1() { - var dir1 = Path.Combine(SourceDirectory, "DirForSearch", "dir1"); - var dir2 = Path.Combine(SourceDirectory, "DirForSearch", "dir2"); + var dir1 = Path.Combine(Source.Directory, "DirForSearch", "dir1"); + var dir2 = Path.Combine(Source.Directory, "DirForSearch", "dir2"); Directory.SetLastWriteTime(dir2, DateTime.Now.AddDays(-1)); Directory.SetLastWriteTime(dir1, DateTime.Now); - var path = Path.Combine(SourceDirectory, "DirForSearch", "*", "TextFile1.txt"); - Assert.True(WildcardFileFinder.TryFind(path, out var result)); - Assert.True(File.Exists(result), result); + var path = Path.Combine(Source.Directory, "DirForSearch", "*", "TextFile1.txt"); + True(WildcardFileFinder.TryFind(path, out var result)); + True(File.Exists(result), result!); } - [Fact] + [Test] public void MultiMatchDir_order2() { - var dir1 = Path.Combine(SourceDirectory, "DirForSearch", "dir1"); - var dir2 = Path.Combine(SourceDirectory, "DirForSearch", "dir2"); + var dir1 = Path.Combine(Source.Directory, "DirForSearch", "dir1"); + var dir2 = Path.Combine(Source.Directory, "DirForSearch", "dir2"); Directory.SetLastWriteTime(dir1, DateTime.Now.AddDays(-1)); Directory.SetLastWriteTime(dir2, DateTime.Now); - var path = Path.Combine(SourceDirectory, "DirForSearch", "*", "TextFile1.txt"); - Assert.True(WildcardFileFinder.TryFind(path, out var result)); - Assert.True(File.Exists(result), result); + var path = Path.Combine(Source.Directory, "DirForSearch", "*", "TextFile1.txt"); + True(WildcardFileFinder.TryFind(path, out var result)); + True(File.Exists(result), result!); } - [Fact] + [Test] public void FullFilePath() { - Assert.True(WildcardFileFinder.TryFind(SourceFile, out var result)); - Assert.True(File.Exists(result), result); + True(WildcardFileFinder.TryFind(Source.File(), out var result)); + True(File.Exists(result), result!); } - [Fact] + [Test] public void FullFilePath_missing() { - Assert.False(WildcardFileFinder.TryFind(SourceFile.Replace(".cs", ".foo"), out var result)); - Assert.Null(result); + False(WildcardFileFinder.TryFind(Source.File().Replace(".cs", ".foo"), out var result)); + Null(result); } //[Fact] @@ -55,21 +55,21 @@ public void FullFilePath_missing() // Assert.Null(result); //} - [Fact] + [Test] public void WildCardInDir() { - var directory = SourceDirectory.Replace("Tests", "Test*"); + var directory = Source.Directory.Replace("Tests", "Test*"); var path = Path.Combine(directory, "WildcardFileFinderTests.cs"); - Assert.True(WildcardFileFinder.TryFind(path, out var result)); - Assert.True(File.Exists(result), result); + True(WildcardFileFinder.TryFind(path, out var result)); + True(File.Exists(result), result!); } - [Fact] + [Test] public void WildCardInDir_missing() { - var directory = SourceDirectory.Replace("Tests", "Test*.Foo"); + var directory = Source.Directory.Replace("Tests", "Test*.Foo"); var path = Path.Combine(directory, "WildcardFileFinderTests.cs"); - Assert.False(WildcardFileFinder.TryFind(path, out var result)); - Assert.Null(result); + False(WildcardFileFinder.TryFind(path, out var result)); + Null(result); } } \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/AsyncTimerTests.cs b/src/DiffEngineTray.Tests/AsyncTimerTests.cs index c35d2247..bdbfede3 100644 --- a/src/DiffEngineTray.Tests/AsyncTimerTests.cs +++ b/src/DiffEngineTray.Tests/AsyncTimerTests.cs @@ -1,6 +1,7 @@ -public class AsyncTimerTests +[TestFixture] +public class AsyncTimerTests { - [Fact] + [Test] public async Task It_calls_error_callback() { var errorCallbackInvoked = new TaskCompletionSource(); @@ -13,10 +14,10 @@ public async Task It_calls_error_callback() errorCallbackInvoked.TrySetResult(true); }); - Assert.True(await errorCallbackInvoked.Task); + True(await errorCallbackInvoked.Task); } - [Fact] + [Test] public async Task It_continues_to_run_after_an_error() { var callbackInvokedAfterError = new TaskCompletionSource(); @@ -32,7 +33,7 @@ public async Task It_continues_to_run_after_an_error() throw new("Simulated!"); } - Assert.True(exceptionThrown); + True(exceptionThrown); callbackInvokedAfterError.TrySetResult(true); return Task.FromResult(0); }, @@ -42,10 +43,10 @@ public async Task It_continues_to_run_after_an_error() exceptionThrown = true; }); - Assert.True(await callbackInvokedAfterError.Task); + True(await callbackInvokedAfterError.Task); } - [Fact] + [Test] public async Task Stop_cancels_token_while_in_callback() { var callbackCanceled = false; @@ -67,10 +68,10 @@ public async Task Stop_cancels_token_while_in_callback() var stopTask = timer.DisposeAsync(); stopInitiated.SetResult(true); await stopTask; - Assert.True(callbackCanceled); + True(callbackCanceled); } - [Fact] + [Test] public async Task Stop_waits_for_callback_to_complete() { var callbackCompleted = new TaskCompletionSource(); @@ -89,7 +90,7 @@ public async Task Stop_waits_for_callback_to_complete() var delayTask = Task.Delay(1000); var firstToComplete = await Task.WhenAny(stopTask, delayTask); - Assert.Equal(delayTask, firstToComplete); + AreEqual(delayTask, firstToComplete); callbackCompleted.SetResult(true); await stopTask; diff --git a/src/DiffEngineTray.Tests/DiffEngineTray.Tests.csproj b/src/DiffEngineTray.Tests/DiffEngineTray.Tests.csproj index d8d6b12c..c25b1e57 100644 --- a/src/DiffEngineTray.Tests/DiffEngineTray.Tests.csproj +++ b/src/DiffEngineTray.Tests/DiffEngineTray.Tests.csproj @@ -2,7 +2,7 @@ net8.0-windows - CA1416 + $(NoWarn);CA1416 @@ -10,13 +10,14 @@ - - - + + + - + + \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/GlobalUsings.cs b/src/DiffEngineTray.Tests/GlobalUsings.cs new file mode 100644 index 00000000..f0525170 --- /dev/null +++ b/src/DiffEngineTray.Tests/GlobalUsings.cs @@ -0,0 +1,3 @@ +// Global using directives + +global using NUnit.Framework.Legacy; \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/HotKeyControlTests.cs b/src/DiffEngineTray.Tests/HotKeyControlTests.cs index a19a7b6b..05111ba9 100644 --- a/src/DiffEngineTray.Tests/HotKeyControlTests.cs +++ b/src/DiffEngineTray.Tests/HotKeyControlTests.cs @@ -1,8 +1,8 @@ #if DEBUG -public class HotKeyControlTests(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class HotKeyControlTests { - [Fact] + [Test] public async Task WithKeys() { using var target = new HotKeyControl @@ -16,7 +16,7 @@ public async Task WithKeys() await Verify(target); } - [Fact] + [Test] public async Task Default() { using var target = new HotKeyControl(); diff --git a/src/DiffEngineTray.Tests/MenuBuilderTest.cs b/src/DiffEngineTray.Tests/MenuBuilderTest.cs index c8e3f566..b65ef3f8 100644 --- a/src/DiffEngineTray.Tests/MenuBuilderTest.cs +++ b/src/DiffEngineTray.Tests/MenuBuilderTest.cs @@ -1,13 +1,13 @@ using EmptyFiles; -public class MenuBuilderTest : - XunitContextBase +[TestFixture] +public class MenuBuilderTest: IDisposable { static Action emptyAction = () => { }; - [Fact] + [Test] public async Task Empty() { await using var tracker = new RecordingTracker(); @@ -18,7 +18,7 @@ public async Task Empty() await Verify(menu, settings); } - [Fact] + [Test] public async Task OnlyMove() { await using var tracker = new RecordingTracker(); @@ -30,7 +30,7 @@ public async Task OnlyMove() await Verify(menu, settings); } - [Fact] + [Test] public async Task OnlyDelete() { await using var tracker = new RecordingTracker(); @@ -42,7 +42,7 @@ public async Task OnlyDelete() await Verify(menu, settings); } - [Fact] + [Test] public async Task Full() { await using var tracker = new RecordingTracker(); @@ -57,7 +57,7 @@ public async Task Full() await Verify(menu, settings); } - [Fact] + [Test] public async Task DiffTempTarget() { await using var tracker = new RecordingTracker(); @@ -69,9 +69,10 @@ public async Task DiffTempTarget() emptyAction, tracker); await Verify(menu, settings); + Debug.WriteLine("s"); } - [Fact] + [Test] public async Task Many() { await using var tracker = new RecordingTracker(); @@ -87,7 +88,7 @@ public async Task Many() await Verify(menu, settings); } - [Fact] + [Test] public async Task Grouped() { await using var tracker = new RecordingTracker(); @@ -100,7 +101,7 @@ public async Task Grouped() await Verify(menu, settings); } - [Fact] + [Test] public async Task FullGrouped() { await using var tracker = new RecordingTracker(); @@ -115,8 +116,7 @@ public async Task FullGrouped() await Verify(menu, settings); } - public MenuBuilderTest(ITestOutputHelper output) : - base(output) + public MenuBuilderTest() { settings = new(); file1 = Path.GetFullPath("file1.txt"); @@ -129,13 +129,12 @@ public MenuBuilderTest(ITestOutputHelper output) : File.WriteAllText(file4, ""); } - public override void Dispose() + public void Dispose() { File.Delete(file1); File.Delete(file2); File.Delete(file3); File.Delete(file4); - base.Dispose(); } string file1; diff --git a/src/DiffEngineTray.Tests/OptionsFormTests.cs b/src/DiffEngineTray.Tests/OptionsFormTests.cs index c32df1f5..b21d6354 100644 --- a/src/DiffEngineTray.Tests/OptionsFormTests.cs +++ b/src/DiffEngineTray.Tests/OptionsFormTests.cs @@ -1,9 +1,7 @@ #if DEBUG -public class OptionsFormTests : - XunitContextBase +public class OptionsFormTests { - public OptionsFormTests(ITestOutputHelper output) : - base(output) => + public OptionsFormTests() => VersionReader.VersionString = "TheVersion"; //[Fact] @@ -23,7 +21,8 @@ public OptionsFormTests(ITestOutputHelper output) : // form.ShowDialog(); // form.BringToFront(); //} - [Fact] + + [Test] public async Task WithKeys() { using var form = new OptionsForm( @@ -39,7 +38,7 @@ public async Task WithKeys() await Verify(form); } - [Fact] + [Test] public async Task Default() { using var form = new OptionsForm( diff --git a/src/DiffEngineTray.Tests/PiperTest.cs b/src/DiffEngineTray.Tests/PiperTest.cs index da3ee63d..65181cb0 100644 --- a/src/DiffEngineTray.Tests/PiperTest.cs +++ b/src/DiffEngineTray.Tests/PiperTest.cs @@ -1,8 +1,7 @@ -#if NET7_0 -public class PiperTest(ITestOutputHelper output) : - XunitContextBase(output) +#if NET8_0 +public class PiperTest { - [Fact] + [Test] public Task MoveJson() => Verify( PiperClient.BuildMovePayload( @@ -13,7 +12,7 @@ public Task MoveJson() => true, 1000)); - [Fact] + [Test] public Task DeleteJson() => Verify( PiperClient.BuildMovePayload( @@ -24,7 +23,7 @@ public Task DeleteJson() => true, 1000)); - [Fact] + [Test] public async Task Delete() { DeletePayload received = null!; @@ -37,7 +36,7 @@ public async Task Delete() await Verify(received); } - [Fact] + [Test] public async Task Move() { MovePayload received = null!; @@ -50,7 +49,7 @@ public async Task Move() await Verify(received); } - [Fact] + [Test] public async Task SendOnly() { var file = Path.GetFullPath("temp.txt"); @@ -65,10 +64,11 @@ public async Task SendOnly() { } - await Verify(Logs) - .ScrubLinesContaining("temp.txt") - //TODO: add "scrub source dir" to verify and remove the below - .ScrubLinesContaining("PiperClient"); + //TODO + // await Verify(Logs) + // .ScrubLinesContaining("temp.txt") + // //TODO: add "scrub source dir" to verify and remove the below + // .ScrubLinesContaining("PiperClient"); } } #endif \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/ProcessExTest.cs b/src/DiffEngineTray.Tests/ProcessExTest.cs index ff9e8d95..83d6b8b6 100644 --- a/src/DiffEngineTray.Tests/ProcessExTest.cs +++ b/src/DiffEngineTray.Tests/ProcessExTest.cs @@ -1,18 +1,19 @@ -public class ProcessExTest +[TestFixture] +public class ProcessExTest { - [Fact] + [Test] public void TryGet() { using var current = Process.GetCurrentProcess(); - Assert.True(ProcessEx.TryGet(current.Id, out var found)); - Assert.NotNull(found); - found.Dispose(); + True(ProcessEx.TryGet(current.Id, out var found)); + NotNull(found); + found!.Dispose(); } - [Fact] + [Test] public void TryGetMissing() { - Assert.False(ProcessEx.TryGet(40000, out var found)); - Assert.Null(found); + False(ProcessEx.TryGet(40000, out var found)); + Null(found); } } \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/RecordingTracker.cs b/src/DiffEngineTray.Tests/RecordingTracker.cs index 928f5091..d7992aee 100644 --- a/src/DiffEngineTray.Tests/RecordingTracker.cs +++ b/src/DiffEngineTray.Tests/RecordingTracker.cs @@ -9,8 +9,8 @@ { public void AssertEmpty() { - Assert.Empty(Deletes); - Assert.Empty(Moves); - Assert.False(TrackingAny); + IsEmpty(Deletes); + IsEmpty(Moves); + False(TrackingAny); } } \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/SolutionDirectoryFinderTests.cs b/src/DiffEngineTray.Tests/SolutionDirectoryFinderTests.cs index cf884452..b10ea333 100644 --- a/src/DiffEngineTray.Tests/SolutionDirectoryFinderTests.cs +++ b/src/DiffEngineTray.Tests/SolutionDirectoryFinderTests.cs @@ -1,9 +1,9 @@ #if DEBUG -public class SolutionDirectoryFinderTests(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class SolutionDirectoryFinderTests { - [Fact] + [Test] public Task Find() => - Verify(SolutionDirectoryFinder.Find(SourceFile)); + Verify(SolutionDirectoryFinder.Find(Source.File())); } #endif \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/Source.cs b/src/DiffEngineTray.Tests/Source.cs new file mode 100644 index 00000000..0feda957 --- /dev/null +++ b/src/DiffEngineTray.Tests/Source.cs @@ -0,0 +1,10 @@ +public static class Source +{ + public static void Init([CallerFilePath] string file = "") => + Directory = Path.GetDirectoryName(file)!; + + public static string File([CallerFilePath] string file = "") => + file; + + public static string Directory { get; private set; } = null!; +} \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/TrackerClearTest.cs b/src/DiffEngineTray.Tests/TrackerClearTest.cs index 3d03166d..af370ddf 100644 --- a/src/DiffEngineTray.Tests/TrackerClearTest.cs +++ b/src/DiffEngineTray.Tests/TrackerClearTest.cs @@ -1,7 +1,8 @@ -public class TrackerClearTest : - XunitContextBase +[TestFixture] +public class TrackerClearTest : + IDisposable { - [Fact] + [Test] public async Task Simple() { await using var tracker = new RecordingTracker(); @@ -11,20 +12,12 @@ public async Task Simple() tracker.AssertEmpty(); } - public TrackerClearTest(ITestOutputHelper output) : - base(output) - { - file1 = Path.GetTempFileName(); - file2 = Path.GetTempFileName(); - } - - public override void Dispose() + public void Dispose() { File.Delete(file1); File.Delete(file2); - base.Dispose(); } - string file1; - string file2; + string file1 = Path.GetTempFileName(); + string file2 = Path.GetTempFileName(); } \ No newline at end of file diff --git a/src/DiffEngineTray.Tests/TrackerDeleteTest.cs b/src/DiffEngineTray.Tests/TrackerDeleteTest.cs index cf17ed7f..0376d0ca 100644 --- a/src/DiffEngineTray.Tests/TrackerDeleteTest.cs +++ b/src/DiffEngineTray.Tests/TrackerDeleteTest.cs @@ -1,16 +1,17 @@ -public class TrackerDeleteTest(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class TrackerDeleteTest : + IDisposable { - [Fact] + [Test] public async Task AddSingle() { await using var tracker = new RecordingTracker(); tracker.AddDelete(file1); - Assert.Single(tracker.Deletes); - Assert.True(tracker.TrackingAny); + AreEqual(tracker.Deletes,1); + True(tracker.TrackingAny); } - [Fact] + [Test] public async Task AddSingle_BackgroundDelete() { await using var tracker = new RecordingTracker(); @@ -20,27 +21,27 @@ public async Task AddSingle_BackgroundDelete() tracker.AssertEmpty(); } - [Fact] + [Test] public async Task AddMultiple() { await using var tracker = new RecordingTracker(); tracker.AddDelete(file1); tracker.AddDelete(file2); - Assert.Equal(2, tracker.Deletes.Count); - Assert.True(tracker.TrackingAny); + AreEqual(2, tracker.Deletes.Count); + True(tracker.TrackingAny); } - [Fact] + [Test] public async Task AddSame() { await using var tracker = new RecordingTracker(); tracker.AddDelete(file1); tracker.AddDelete(file1); - Assert.Single(tracker.Deletes); - Assert.True(tracker.TrackingAny); + AreEqual(1, tracker.Deletes); + True(tracker.TrackingAny); } - [Fact] + [Test] public async Task AcceptAllSingle() { await using var tracker = new RecordingTracker(); @@ -49,7 +50,7 @@ public async Task AcceptAllSingle() tracker.AssertEmpty(); } - [Fact] + [Test] public async Task AcceptAllMultiple() { await using var tracker = new RecordingTracker(); @@ -59,7 +60,7 @@ public async Task AcceptAllMultiple() tracker.AssertEmpty(); } - [Fact] + [Test] public async Task AcceptSingle() { await using var tracker = new RecordingTracker(); @@ -68,23 +69,22 @@ public async Task AcceptSingle() tracker.AssertEmpty(); } - [Fact] + [Test] public async Task AcceptSingle_NotEmpty() { await using var tracker = new RecordingTracker(); var tracked = tracker.AddDelete(file1); tracker.AddDelete(file2); tracker.Accept(tracked); - Assert.Single(tracker.Deletes); - Assert.True(tracker.TrackingAny); + AreEqual(1, tracker.Deletes); + True(tracker.TrackingAny); } - public override void Dispose() + public void Dispose() { File.Delete(file1); File.Delete(file2); File.Delete(file3); - base.Dispose(); } string file1 = Path.GetTempFileName(); diff --git a/src/DiffEngineTray.Tests/TrackerMoveTest.cs b/src/DiffEngineTray.Tests/TrackerMoveTest.cs index 109b0eb4..94543062 100644 --- a/src/DiffEngineTray.Tests/TrackerMoveTest.cs +++ b/src/DiffEngineTray.Tests/TrackerMoveTest.cs @@ -1,26 +1,27 @@ -public class TrackerMoveTest(ITestOutputHelper output) : - XunitContextBase(output) +[TestFixture] +public class TrackerMoveTest : + IDisposable { - [Fact] + [Test] public async Task AddSingle() { await using var tracker = new RecordingTracker(); tracker.AddMove(file1, file1, "theExe", "theArguments", true, null); - Assert.Single(tracker.Moves); - Assert.True(tracker.TrackingAny); + AreEqual(1, tracker.Moves); + True(tracker.TrackingAny); } - [Fact] + [Test] public async Task AddMultiple() { await using var tracker = new RecordingTracker(); tracker.AddMove(file1, file1, "theExe", "theArguments", true, null); tracker.AddMove(file2, file2, "theExe", "theArguments", true, null); - Assert.Equal(2, tracker.Moves.Count); - Assert.True(tracker.TrackingAny); + AreEqual(2, tracker.Moves.Count); + True(tracker.TrackingAny); } - [Fact] + [Test] public async Task AddSame() { await using var tracker = new RecordingTracker(); @@ -28,12 +29,12 @@ public async Task AddSame() using var process = Process.GetCurrentProcess(); var processId = process.Id; var tracked = tracker.AddMove(file1, file1, "theExe", "theArguments", false, processId); - Assert.Single(tracker.Moves); - Assert.Equal(process.Id, tracked.Process!.Id); - Assert.True(tracker.TrackingAny); + AreEqual(1, tracker.Moves); + AreEqual(process.Id, tracked.Process!.Id); + True(tracker.TrackingAny); } - [Fact] + [Test] public async Task AcceptAllSingle() { await using var tracker = new RecordingTracker(); @@ -42,7 +43,7 @@ public async Task AcceptAllSingle() tracker.AssertEmpty(); } - [Fact] + [Test] public async Task AcceptAllMultiple() { await using var tracker = new RecordingTracker(); @@ -52,7 +53,7 @@ public async Task AcceptAllMultiple() tracker.AssertEmpty(); } - [Fact] + [Test] public async Task AcceptSingle() { await using var tracker = new RecordingTracker(); @@ -71,7 +72,7 @@ public async Task AcceptSingle() // tracker.AssertEmpty(); // } - [Fact] + [Test] public async Task AddSingle_BackgroundDeleteTarget() { await using var tracker = new RecordingTracker(); @@ -80,27 +81,26 @@ public async Task AddSingle_BackgroundDeleteTarget() Thread.Sleep(3000); // many diff tools do not require a target. // so the non exist of a target file should not flush that item - Assert.Single(tracker.Moves); - Assert.True(tracker.TrackingAny); + AreEqual(1, tracker.Moves.Count); + True(tracker.TrackingAny); } - [Fact] + [Test] public async Task AcceptSingle_NotEmpty() { await using var tracker = new RecordingTracker(); var tracked = tracker.AddMove(file1, file1, "theExe", "theArguments", true, null); tracker.AddMove(file2, file2, "theExe", "theArguments", true, null); tracker.Accept(tracked); - Assert.Single(tracker.Moves); - Assert.True(tracker.TrackingAny); + AreEqual(1, tracker.Moves.Count); + True(tracker.TrackingAny); } - public override void Dispose() + public void Dispose() { File.Delete(file1); File.Delete(file2); File.Delete(file3); - base.Dispose(); } string file1 = Path.GetTempFileName(); diff --git a/src/DiffEngineTray.Tests/VersionReaderTest.cs b/src/DiffEngineTray.Tests/VersionReaderTest.cs index fe3de582..dfe831fd 100644 --- a/src/DiffEngineTray.Tests/VersionReaderTest.cs +++ b/src/DiffEngineTray.Tests/VersionReaderTest.cs @@ -1,9 +1,10 @@ -public class VersionReaderTest +[TestFixture] +public class VersionReaderTest { - [Fact] + [Test] public void AddSingle() { - Assert.NotEmpty(VersionReader.VersionString); - Assert.NotNull(VersionReader.VersionString); + IsTrue(VersionReader.VersionString.Length > 0); + NotNull(VersionReader.VersionString); } } \ No newline at end of file diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 5526c80c..f06a8182 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -10,6 +10,7 @@ + @@ -24,10 +25,8 @@ + - - - - + \ No newline at end of file