From cc30756e6c0758a79d468f8bbab8a5f0c3b6168d Mon Sep 17 00:00:00 2001 From: Andrei Nicholson Date: Fri, 4 Sep 2026 22:11:45 -0400 Subject: [PATCH 1/3] Add integration tests --- CentralPackageManagementMigrator.slnx | 1 + global.json | 5 + .../CentralPackageManagementMigrator.csproj | 1 + .../LoggingUtility.cs | 2 +- .../MigratorCommand.cs | 11 +- ...ManagementMigrator.IntegrationTests.csproj | 30 ++++ .../Helper.cs | 166 ++++++++++++++++++ .../IntegrationTests.cs | 52 ++++++ .../README.md | 7 + .../TestData/Test001/Actual/Project.xml | 8 + .../Test001/Expected/Directory.Packages.xml | 8 + .../TestData/Test001/Expected/Project.xml | 8 + .../TestData/Test002/Actual/Project.xml | 10 ++ .../Test002/Expected/Directory.Packages.xml | 8 + .../TestData/Test002/Expected/Project.xml | 8 + .../TestData/Test003/Actual/ProjectA.xml | 5 + .../TestData/Test003/Actual/ProjectB.xml | 5 + .../Test003/Expected/Directory.Packages.xml | 8 + .../TestData/Test003/Expected/ProjectA.xml | 5 + .../TestData/Test003/Expected/ProjectB.xml | 5 + .../Test004/Actual/Directory.Packages.xml | 8 + .../TestData/Test004/Actual/Project.xml | 8 + .../TestData/Test004/Expected/Project.xml | 8 + ...tralPackageManagementMigrator.Tests.csproj | 14 +- 24 files changed, 378 insertions(+), 13 deletions(-) create mode 100644 global.json create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/CentralPackageManagementMigrator.IntegrationTests.csproj create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/Helper.cs create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/IntegrationTests.cs create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/README.md create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Actual/Project.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Expected/Directory.Packages.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Expected/Project.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Actual/Project.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Expected/Directory.Packages.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Expected/Project.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Actual/ProjectA.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Actual/ProjectB.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/Directory.Packages.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/ProjectA.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/ProjectB.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Actual/Directory.Packages.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Actual/Project.xml create mode 100644 tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Expected/Project.xml diff --git a/CentralPackageManagementMigrator.slnx b/CentralPackageManagementMigrator.slnx index 28ec55e..1117e04 100644 --- a/CentralPackageManagementMigrator.slnx +++ b/CentralPackageManagementMigrator.slnx @@ -1,4 +1,5 @@ + diff --git a/global.json b/global.json new file mode 100644 index 0000000..3140116 --- /dev/null +++ b/global.json @@ -0,0 +1,5 @@ +{ + "test": { + "runner": "Microsoft.Testing.Platform" + } +} diff --git a/src/CentralPackageManagementMigrator/CentralPackageManagementMigrator.csproj b/src/CentralPackageManagementMigrator/CentralPackageManagementMigrator.csproj index 99789d8..59a8203 100644 --- a/src/CentralPackageManagementMigrator/CentralPackageManagementMigrator.csproj +++ b/src/CentralPackageManagementMigrator/CentralPackageManagementMigrator.csproj @@ -37,6 +37,7 @@ + diff --git a/src/CentralPackageManagementMigrator/LoggingUtility.cs b/src/CentralPackageManagementMigrator/LoggingUtility.cs index aa9c8ea..e66ad3e 100644 --- a/src/CentralPackageManagementMigrator/LoggingUtility.cs +++ b/src/CentralPackageManagementMigrator/LoggingUtility.cs @@ -33,7 +33,7 @@ public static void SetupLogging(LogLevel logLevel) /// existing logs that haven't been output yet. Failure to call this /// method may result in lost messages. /// - public static void FlushLogging() => Factory?.Dispose(); + public static void FlushLogging() => Factory.Dispose(); public static ILogger CreateLogger() => Factory.CreateLogger(); } diff --git a/src/CentralPackageManagementMigrator/MigratorCommand.cs b/src/CentralPackageManagementMigrator/MigratorCommand.cs index a9e7559..e6d18d3 100644 --- a/src/CentralPackageManagementMigrator/MigratorCommand.cs +++ b/src/CentralPackageManagementMigrator/MigratorCommand.cs @@ -21,7 +21,16 @@ public MigratorCommand() : base(CommandDescription) SetAction(parseResult => { var logLevel = parseResult.GetRequiredValue(_logLevelOption); - return Migrate(logLevel); + + try + { + return Migrate(logLevel); + } + catch + { + } + + return 1; }); } diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/CentralPackageManagementMigrator.IntegrationTests.csproj b/tests/CentralPackageManagementMigrator.IntegrationTests/CentralPackageManagementMigrator.IntegrationTests.csproj new file mode 100644 index 0000000..ecb036f --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/CentralPackageManagementMigrator.IntegrationTests.csproj @@ -0,0 +1,30 @@ + + + + net10.0 + Exe + enable + enable + false + + + + + + + + + + Always + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/Helper.cs b/tests/CentralPackageManagementMigrator.IntegrationTests/Helper.cs new file mode 100644 index 0000000..4ceb3d9 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/Helper.cs @@ -0,0 +1,166 @@ +using System.Reflection; + +namespace CentralPackageManagementMigrator.IntegrationTests; + +internal sealed class Helper : IDisposable +{ + /// + /// + /// + /// The temporary directory created for the requested test. Will serve as + /// the working directory for the migrator command to run in. + /// + /// + /// The subdirectory from TestData/{TestX} for the starting files. + /// + /// + /// The subdirectory from TestData/{TestX} for the expected files. + /// + private readonly record struct WorkDirectory(string Base, string Actual, string Expected); + + private WorkDirectory WorkDirectoryInfo { get; init; } + + private bool _disposed; + + private Helper() + { + } + + ~Helper() + { + Dispose(false); + } + + public static Helper Create(string test) + { + var helper = new Helper + { + WorkDirectoryInfo = FindWorkDirectory(test) + }; + + CopyDirectory(helper.WorkDirectoryInfo.Actual, helper.WorkDirectoryInfo.Base); + + // Assert.Equal("derp", helper.WorkDirectoryInfo.Base); + return helper; + } + + public async Task RunMigrator() + { + Directory.SetCurrentDirectory(WorkDirectoryInfo.Base); + var command = new MigratorCommand(); + var code = await command.Parse([]).InvokeAsync(null, TestContext.Current.CancellationToken); + return code; + } + + public async Task AssertDirectoryPackagesFile() + { + var directoryPackagesPath = Path.Combine(WorkDirectoryInfo.Base, "Directory.Packages.props"); + + Assert.True(Path.Exists(directoryPackagesPath), $"'{directoryPackagesPath}' not found"); + + var actual = await File.ReadAllTextAsync(directoryPackagesPath, TestContext.Current.CancellationToken); + var expected = await File.ReadAllTextAsync(Path.Combine(WorkDirectoryInfo.Expected, "Directory.Packages.xml"), + TestContext.Current.CancellationToken); + + Assert.Equal(actual, expected); + } + + public async Task AssertProjectFile(string filename) + { + var actualFilename = Path.Combine(WorkDirectoryInfo.Base, filename + ".csproj"); + Assert.True(Path.Exists(actualFilename), $"'{actualFilename}' not found"); + + var actual = await File.ReadAllTextAsync(actualFilename, TestContext.Current.CancellationToken); + + var expectedFilename = Path.Combine(WorkDirectoryInfo.Expected, filename + ".xml"); + Assert.True(Path.Exists(expectedFilename), $"'{expectedFilename}' not found"); + + var expected = await File.ReadAllTextAsync(expectedFilename, TestContext.Current.CancellationToken); + + Assert.Equal(actual, expected); + } + + private static WorkDirectory FindWorkDirectory(string test) + { + var assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + Assert.NotNull(assemblyDirectory); + + // Ensure test data is set up correctly. + + var testDataDirectory = Path.Combine(assemblyDirectory, "TestData", test); + Assert.True(Directory.Exists(testDataDirectory), $"'{testDataDirectory}' directory cannot be found"); + + var actualDirectory = Path.Combine(testDataDirectory, "Actual"); + Assert.True(Directory.Exists(actualDirectory), "'Actual' subdirectory cannot be found"); + + var expectedDirectory = Path.Combine(testDataDirectory, "Expected"); + Assert.True(Directory.Exists(expectedDirectory), "'Expected' subdirectory cannot be found"); + + var tempDirectory = Directory.CreateTempSubdirectory().FullName; + + return new WorkDirectory(tempDirectory, actualDirectory, expectedDirectory); + } + + /// + private static void CopyDirectory(string source, string destination) + { + var dir = new DirectoryInfo(source); + Assert.True(dir.Exists, $"Source directory '{source}' not found"); + + var dirs = dir.GetDirectories(); + + Directory.CreateDirectory(destination); + + foreach (var file in dir.GetFiles()) + { + string filename; + + if (file.Name.StartsWith("project", StringComparison.InvariantCultureIgnoreCase)) + { + filename = Path.GetFileNameWithoutExtension(file.Name) + ".csproj"; + } + else if (file.Name.StartsWith("directory.packages", StringComparison.InvariantCultureIgnoreCase)) + { + filename = Path.GetFileNameWithoutExtension(file.Name) + ".props"; + } + else + { + filename = file.Name; + } + + var target = Path.Combine(destination, filename); + file.CopyTo(target); + } + + foreach (var subDirectory in dirs) + { + var newDestination = Path.Combine(destination, subDirectory.Name); + CopyDirectory(subDirectory.FullName, newDestination); + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + private void Dispose(bool disposing) + { + if (_disposed || !disposing) + { + return; + } + + try + { + Directory.Delete(WorkDirectoryInfo.Base, true); + } + catch + { + // Let OS prune it eventually + } + + _disposed = true; + } +} diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/IntegrationTests.cs b/tests/CentralPackageManagementMigrator.IntegrationTests/IntegrationTests.cs new file mode 100644 index 0000000..8d51771 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/IntegrationTests.cs @@ -0,0 +1,52 @@ +namespace CentralPackageManagementMigrator.IntegrationTests; + +public class IntegrationTests +{ + [Fact] + public async Task Test001_BasicExample() + { + using var helper = Helper.Create("Test001"); + + var exitCode = await helper.RunMigrator(); + + Assert.Equal(0, exitCode); + await helper.AssertDirectoryPackagesFile(); + await helper.AssertProjectFile("Project"); + } + + [Fact] + public async Task Test002_PackageVersionAsChildElement() + { + using var helper = Helper.Create("Test002"); + + var exitCode = await helper.RunMigrator(); + + Assert.Equal(0, exitCode); + await helper.AssertDirectoryPackagesFile(); + await helper.AssertProjectFile("Project"); + } + + [Fact] + public async Task Test003_PackageNamesCaseInsensitive() + { + using var helper = Helper.Create("Test003"); + + var exitCode = await helper.RunMigrator(); + + Assert.Equal(0, exitCode); + await helper.AssertDirectoryPackagesFile(); + await helper.AssertProjectFile("ProjectA"); + await helper.AssertProjectFile("ProjectB"); + } + + [Fact] + public async Task Test004_DirectoryPackagesPropsAlreadyExists() + { + using var helper = Helper.Create("Test004"); + + var exitCode = await helper.RunMigrator(); + + Assert.Equal(1, exitCode); + await helper.AssertProjectFile("Project"); + } +} diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/README.md b/tests/CentralPackageManagementMigrator.IntegrationTests/README.md new file mode 100644 index 0000000..734402d --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/README.md @@ -0,0 +1,7 @@ +# Integration Tests + +Each scenario is stored under the [`TestData`](./TestData) directory as its own subdirectory. + +Within it, there are two additional subdirectories: `Actual` and `Expected`. Everything in the `Actual` subdirectory is copied to a temporary directory for the tool to work from -- all files and subdirectories are recursively copied. After the tool is invoked, the test case can make assertions on the resulting files against those in the `Expected` directory for equality. + +All the test files have had their extensions changed since having .CSPROJ files and .PROPS files could affect the solution. When these files are copied in preparation for the tool, their extensions are renamed to their intended use. `ProjectA.xml` becomes `ProjectA.csproj`, for example. diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Actual/Project.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Actual/Project.xml new file mode 100644 index 0000000..b441a2b --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Actual/Project.xml @@ -0,0 +1,8 @@ + + + net6.0 + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Expected/Directory.Packages.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Expected/Directory.Packages.xml new file mode 100644 index 0000000..1d51991 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Expected/Directory.Packages.xml @@ -0,0 +1,8 @@ + + + true + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Expected/Project.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Expected/Project.xml new file mode 100644 index 0000000..641b0ff --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test001/Expected/Project.xml @@ -0,0 +1,8 @@ + + + net6.0 + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Actual/Project.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Actual/Project.xml new file mode 100644 index 0000000..03d740a --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Actual/Project.xml @@ -0,0 +1,10 @@ + + + net6.0 + + + + 17.9.0 + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Expected/Directory.Packages.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Expected/Directory.Packages.xml new file mode 100644 index 0000000..1d51991 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Expected/Directory.Packages.xml @@ -0,0 +1,8 @@ + + + true + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Expected/Project.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Expected/Project.xml new file mode 100644 index 0000000..641b0ff --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test002/Expected/Project.xml @@ -0,0 +1,8 @@ + + + net6.0 + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Actual/ProjectA.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Actual/ProjectA.xml new file mode 100644 index 0000000..67397f9 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Actual/ProjectA.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Actual/ProjectB.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Actual/ProjectB.xml new file mode 100644 index 0000000..253be39 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Actual/ProjectB.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/Directory.Packages.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/Directory.Packages.xml new file mode 100644 index 0000000..a0a313a --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/Directory.Packages.xml @@ -0,0 +1,8 @@ + + + true + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/ProjectA.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/ProjectA.xml new file mode 100644 index 0000000..89bfd51 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/ProjectA.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/ProjectB.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/ProjectB.xml new file mode 100644 index 0000000..c7013c2 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test003/Expected/ProjectB.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Actual/Directory.Packages.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Actual/Directory.Packages.xml new file mode 100644 index 0000000..1d51991 --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Actual/Directory.Packages.xml @@ -0,0 +1,8 @@ + + + true + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Actual/Project.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Actual/Project.xml new file mode 100644 index 0000000..b441a2b --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Actual/Project.xml @@ -0,0 +1,8 @@ + + + net6.0 + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Expected/Project.xml b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Expected/Project.xml new file mode 100644 index 0000000..b441a2b --- /dev/null +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/TestData/Test004/Expected/Project.xml @@ -0,0 +1,8 @@ + + + net6.0 + + + + + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.Tests/CentralPackageManagementMigrator.Tests.csproj b/tests/CentralPackageManagementMigrator.Tests/CentralPackageManagementMigrator.Tests.csproj index a8f2ddc..fd123f5 100644 --- a/tests/CentralPackageManagementMigrator.Tests/CentralPackageManagementMigrator.Tests.csproj +++ b/tests/CentralPackageManagementMigrator.Tests/CentralPackageManagementMigrator.Tests.csproj @@ -2,6 +2,7 @@ net10.0 + Exe enable false true @@ -9,20 +10,11 @@ - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - + - + From 4af3289df14c26d2b63f6f6acfa635da3cbe8a5d Mon Sep 17 00:00:00 2001 From: Andrei Nicholson Date: Sat, 5 Sep 2026 08:40:51 -0400 Subject: [PATCH 2/3] Clean --- .../CentralPackageManagementMigrator.csproj | 8 ++++---- ...ntralPackageManagementMigrator.IntegrationTests.csproj | 3 +-- .../CentralPackageManagementMigrator.Tests.csproj | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/CentralPackageManagementMigrator/CentralPackageManagementMigrator.csproj b/src/CentralPackageManagementMigrator/CentralPackageManagementMigrator.csproj index 59a8203..18c53b7 100644 --- a/src/CentralPackageManagementMigrator/CentralPackageManagementMigrator.csproj +++ b/src/CentralPackageManagementMigrator/CentralPackageManagementMigrator.csproj @@ -30,14 +30,14 @@ - - - + + + - + diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/CentralPackageManagementMigrator.IntegrationTests.csproj b/tests/CentralPackageManagementMigrator.IntegrationTests/CentralPackageManagementMigrator.IntegrationTests.csproj index ecb036f..eb690d1 100644 --- a/tests/CentralPackageManagementMigrator.IntegrationTests/CentralPackageManagementMigrator.IntegrationTests.csproj +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/CentralPackageManagementMigrator.IntegrationTests.csproj @@ -13,7 +13,6 @@ - Always @@ -24,7 +23,7 @@ - + \ No newline at end of file diff --git a/tests/CentralPackageManagementMigrator.Tests/CentralPackageManagementMigrator.Tests.csproj b/tests/CentralPackageManagementMigrator.Tests/CentralPackageManagementMigrator.Tests.csproj index fd123f5..67b49e9 100644 --- a/tests/CentralPackageManagementMigrator.Tests/CentralPackageManagementMigrator.Tests.csproj +++ b/tests/CentralPackageManagementMigrator.Tests/CentralPackageManagementMigrator.Tests.csproj @@ -14,7 +14,7 @@ - + From 836b535698bb24f54363a0a5517c34cda26f81cb Mon Sep 17 00:00:00 2001 From: Andrei Nicholson Date: Sat, 5 Sep 2026 08:50:33 -0400 Subject: [PATCH 3/3] Comments --- .../MigratorCommand.cs | 1 + .../Helper.cs | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/CentralPackageManagementMigrator/MigratorCommand.cs b/src/CentralPackageManagementMigrator/MigratorCommand.cs index e6d18d3..32e30b2 100644 --- a/src/CentralPackageManagementMigrator/MigratorCommand.cs +++ b/src/CentralPackageManagementMigrator/MigratorCommand.cs @@ -28,6 +28,7 @@ public MigratorCommand() : base(CommandDescription) } catch { + // Uncaught exception occurred. Indicate error. } return 1; diff --git a/tests/CentralPackageManagementMigrator.IntegrationTests/Helper.cs b/tests/CentralPackageManagementMigrator.IntegrationTests/Helper.cs index 4ceb3d9..6646663 100644 --- a/tests/CentralPackageManagementMigrator.IntegrationTests/Helper.cs +++ b/tests/CentralPackageManagementMigrator.IntegrationTests/Helper.cs @@ -5,16 +5,19 @@ namespace CentralPackageManagementMigrator.IntegrationTests; internal sealed class Helper : IDisposable { /// + /// Contains absolute paths to various directories used for the test. /// /// /// The temporary directory created for the requested test. Will serve as /// the working directory for the migrator command to run in. /// /// - /// The subdirectory from TestData/{TestX} for the starting files. + /// Path to the Actual directory that contains setup files for the + /// test. /// /// - /// The subdirectory from TestData/{TestX} for the expected files. + /// Path to the Expected directory that contains expected files for + /// the test. /// private readonly record struct WorkDirectory(string Base, string Actual, string Expected); @@ -38,18 +41,18 @@ public static Helper Create(string test) WorkDirectoryInfo = FindWorkDirectory(test) }; + // Copy actual files to the work directory. CopyDirectory(helper.WorkDirectoryInfo.Actual, helper.WorkDirectoryInfo.Base); - // Assert.Equal("derp", helper.WorkDirectoryInfo.Base); return helper; } public async Task RunMigrator() { Directory.SetCurrentDirectory(WorkDirectoryInfo.Base); + var command = new MigratorCommand(); - var code = await command.Parse([]).InvokeAsync(null, TestContext.Current.CancellationToken); - return code; + return await command.Parse([]).InvokeAsync(null, TestContext.Current.CancellationToken); } public async Task AssertDirectoryPackagesFile()