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}");
+ }
}