diff --git a/Directory.Build.props b/Directory.Build.props index ef63aa26..33482a10 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,7 +6,7 @@ Apache-2.0 false git - finos + FINOS https://github.com/finos/morphir-dotnet diff --git a/build/Build.Packaging.cs b/build/Build.Packaging.cs index 5e6034a3..742a5118 100644 --- a/build/Build.Packaging.cs +++ b/build/Build.Packaging.cs @@ -78,7 +78,9 @@ partial class Build .SetProperty("PackAsTool", "true") .SetProperty("ToolCommandName", "dotnet-morphir") .SetProperty("IsPackable", "true") - .SetProperty("Version", versionString)); + .SetProperty("Version", versionString) + .SetProperty("DebugType", "none") // Don't include PDB files in tool package + .SetProperty("IncludeSymbols", "false")); }); /// diff --git a/tests/Morphir.Build.Tests/LocalInstallationTests.cs b/tests/Morphir.Build.Tests/LocalInstallationTests.cs index 3495cc02..9f38fba9 100644 --- a/tests/Morphir.Build.Tests/LocalInstallationTests.cs +++ b/tests/Morphir.Build.Tests/LocalInstallationTests.cs @@ -10,7 +10,6 @@ namespace Morphir.Build.Tests; public class LocalInstallationTests { [Test] - [Skip("Requires packages to be built first and is a potentially destructive test")] public async Task ToolPackage_InstallsFromLocalFolder() { // Arrange @@ -29,15 +28,18 @@ public async Task ToolPackage_InstallsFromLocalFolder() var packageName = Path.GetFileName(toolPackage!); File.Copy(toolPackage, Path.Combine(localSource, packageName)); - // Act - Install tool from local source + // Extract version from package filename + var version = TestFixture.GetPackageVersion(toolPackage); + + // Act - Install tool from local source (version is required for local feeds) var installResult = await RunDotnetCommand( - $"tool install Morphir.Tool --tool-path {tempDir} --add-source {localSource}"); + $"tool install Morphir.Tool --version {version} --tool-path {tempDir} --add-source {localSource}"); // Assert installResult.ExitCode.Should().Be(0, $"Tool installation should succeed. Output: {installResult.Output}"); - var toolPath = Path.Combine(tempDir, "morphir"); + var toolPath = Path.Combine(tempDir, "dotnet-morphir"); if (OperatingSystem.IsWindows()) { toolPath += ".exe"; @@ -56,7 +58,6 @@ public async Task ToolPackage_InstallsFromLocalFolder() } [Test] - [Skip("Requires packages to be built first and is a potentially destructive test")] public async Task ToolCommand_AvailableAfterInstall() { // Arrange @@ -75,12 +76,15 @@ public async Task ToolCommand_AvailableAfterInstall() var packageName = Path.GetFileName(toolPackage!); File.Copy(toolPackage, Path.Combine(localSource, packageName)); - // Install tool + // Extract version from package filename + var version = TestFixture.GetPackageVersion(toolPackage); + + // Install tool (version is required for local feeds) await RunDotnetCommand( - $"tool install Morphir.Tool --tool-path {tempDir} --add-source {localSource}"); + $"tool install Morphir.Tool --version {version} --tool-path {tempDir} --add-source {localSource}"); // Act - Run the tool command - var toolPath = Path.Combine(tempDir, "morphir"); + var toolPath = Path.Combine(tempDir, "dotnet-morphir"); if (OperatingSystem.IsWindows()) { toolPath += ".exe"; @@ -105,7 +109,6 @@ await RunDotnetCommand( } [Test] - [Skip("Requires packages to be built first and is a potentially destructive test")] public async Task ToolPackage_UninstallsSuccessfully() { // Arrange @@ -123,8 +126,13 @@ public async Task ToolPackage_UninstallsSuccessfully() // Copy package and install var packageName = Path.GetFileName(toolPackage!); File.Copy(toolPackage, Path.Combine(localSource, packageName)); + + // Extract version from package filename + var version = TestFixture.GetPackageVersion(toolPackage); + + // Install tool (version is required for local feeds) await RunDotnetCommand( - $"tool install Morphir.Tool --tool-path {tempDir} --add-source {localSource}"); + $"tool install Morphir.Tool --version {version} --tool-path {tempDir} --add-source {localSource}"); // Act - Uninstall tool var uninstallResult = await RunDotnetCommand( @@ -134,7 +142,7 @@ await RunDotnetCommand( uninstallResult.ExitCode.Should().Be(0, $"Tool uninstallation should succeed. Output: {uninstallResult.Output}"); - var toolPath = Path.Combine(tempDir, "morphir"); + var toolPath = Path.Combine(tempDir, "dotnet-morphir"); if (OperatingSystem.IsWindows()) { toolPath += ".exe"; diff --git a/tests/Morphir.Build.Tests/PackageMetadataTests.cs b/tests/Morphir.Build.Tests/PackageMetadataTests.cs index 5c363843..abf56d93 100644 --- a/tests/Morphir.Build.Tests/PackageMetadataTests.cs +++ b/tests/Morphir.Build.Tests/PackageMetadataTests.cs @@ -10,7 +10,6 @@ namespace Morphir.Build.Tests; public class PackageMetadataTests { [Test] - [Skip("Requires packages to be built first - run after PackAll target")] public async Task AllPackages_HaveSameVersion() { // Arrange @@ -37,7 +36,6 @@ public async Task AllPackages_HaveSameVersion() } [Test] - [Skip("Requires packages to be built first - run after PackAll target")] public async Task PackageVersions_MatchChangelogVersion() { // Arrange @@ -56,7 +54,6 @@ public async Task PackageVersions_MatchChangelogVersion() } [Test] - [Skip("Requires packages to be built first - run after PackAll target")] public async Task ToolPackage_HasCorrectMetadata() { // Arrange @@ -75,7 +72,6 @@ public async Task ToolPackage_HasCorrectMetadata() } [Test] - [Skip("Requires packages to be built first - run after PackAll target")] public async Task AllPackages_HaveReleaseNotes() { // Arrange diff --git a/tests/Morphir.Build.Tests/PackageStructureTests.cs b/tests/Morphir.Build.Tests/PackageStructureTests.cs index ecd419b6..821427d4 100644 --- a/tests/Morphir.Build.Tests/PackageStructureTests.cs +++ b/tests/Morphir.Build.Tests/PackageStructureTests.cs @@ -9,7 +9,6 @@ namespace Morphir.Build.Tests; public class PackageStructureTests { [Test] - [Skip("Requires packages to be built first - run after PackAll target")] public async Task ToolPackage_HasCorrectStructure() { // Arrange @@ -24,8 +23,8 @@ public async Task ToolPackage_HasCorrectStructure() "Tool package must have tools/net10.0/any/ directory"); // Check for required tool files - entries.Should().Contain("tools/net10.0/any/morphir.dll", - "Tool package must contain morphir.dll in tools directory"); + entries.Should().Contain("tools/net10.0/any/dotnet-morphir.dll", + "Tool package must contain dotnet-morphir.dll in tools directory"); entries.Should().Contain("tools/net10.0/any/DotnetToolSettings.xml", "Tool package must contain DotnetToolSettings.xml"); @@ -39,7 +38,6 @@ public async Task ToolPackage_HasCorrectStructure() } [Test] - [Skip("Requires packages to be built first - run after PackAll target")] public async Task ToolPackage_HasCorrectToolSettings() { // Arrange @@ -50,14 +48,13 @@ public async Task ToolPackage_HasCorrectToolSettings() var toolSettings = await TestFixture.ReadPackageEntry(package!, "tools/net10.0/any/DotnetToolSettings.xml"); // Assert - toolSettings.Should().Contain(" + /// Extract version from package filename + /// + /// Full path to .nupkg file like "/path/Morphir.Tool.0.3.0-rc.2.nupkg" + /// Version string like "0.3.0-rc.2" + public static string GetPackageVersion(string packagePath) + { + var filename = Path.GetFileNameWithoutExtension(packagePath); + // Format: PackageName.Version.nupkg + // Example: Morphir.Tool.0.3.0-rc.2.nupkg -> extract "0.3.0-rc.2" + + // Use regex to match semantic version pattern: starts with digit.digit.digit + // This handles: major.minor.patch[-prerelease][+build] + var versionPattern = @"\.(\d+\.\d+\.\d+(?:-[\w\d\.-]+)?(?:\+[\w\d\.-]+)?)$"; + var match = System.Text.RegularExpressions.Regex.Match(filename, versionPattern); + + if (match.Success) + { + return match.Groups[1].Value; + } + + throw new ArgumentException($"Could not extract semantic version from package filename: {filename}"); + } }