diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index d5aa4f19..365934eb 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -21,7 +21,7 @@ ] }, "demaconsulting.pandoctool": { - "version": "3.10.0", + "version": "3.10.1", "commands": [ "pandoc" ] @@ -75,7 +75,7 @@ ] }, "demaconsulting.sysml2tools.tool": { - "version": "0.1.0-beta.14", + "version": "0.1.0", "commands": [ "sysml2tools" ] diff --git a/src/DemaConsulting.BuildMark/BuildNotes/BuildInformation.cs b/src/DemaConsulting.BuildMark/BuildNotes/BuildInformation.cs index f9acedcf..8d91bc84 100644 --- a/src/DemaConsulting.BuildMark/BuildNotes/BuildInformation.cs +++ b/src/DemaConsulting.BuildMark/BuildNotes/BuildInformation.cs @@ -126,7 +126,7 @@ private void AppendRoutedSections(System.Text.StringBuilder markdown, string sub { // Render each configured section as a markdown heading with its item list // sectionId (first tuple element) is unused here; only title and items are rendered - foreach (var (_, sectionTitle, items) in RoutedSections!) + foreach (var (_, sectionTitle, items) in RoutedSections ?? []) { // Add section heading markdown.AppendLine(CultureInfo.InvariantCulture, $"{subHeading} {sectionTitle}"); diff --git a/src/DemaConsulting.BuildMark/DemaConsulting.BuildMark.csproj b/src/DemaConsulting.BuildMark/DemaConsulting.BuildMark.csproj index 1092ce80..4ad2d9b0 100644 --- a/src/DemaConsulting.BuildMark/DemaConsulting.BuildMark.csproj +++ b/src/DemaConsulting.BuildMark/DemaConsulting.BuildMark.csproj @@ -72,7 +72,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/DemaConsulting.BuildMark/RepoConnectors/ItemControlsParser.cs b/src/DemaConsulting.BuildMark/RepoConnectors/ItemControlsParser.cs index c1239699..847a53c5 100644 --- a/src/DemaConsulting.BuildMark/RepoConnectors/ItemControlsParser.cs +++ b/src/DemaConsulting.BuildMark/RepoConnectors/ItemControlsParser.cs @@ -168,7 +168,7 @@ private static bool IsOpeningFence(string line, out string fence) break; case "affected-versions" when !string.IsNullOrEmpty(value): - var parsed = VersionIntervalSet.Parse(value!); + var parsed = VersionIntervalSet.Parse(value); if (parsed.Intervals.Count > 0) { affectedVersions = parsed; diff --git a/test/DemaConsulting.BuildMark.Tests/DemaConsulting.BuildMark.Tests.csproj b/test/DemaConsulting.BuildMark.Tests/DemaConsulting.BuildMark.Tests.csproj index 22c5dbeb..3c6c7109 100644 --- a/test/DemaConsulting.BuildMark.Tests/DemaConsulting.BuildMark.Tests.csproj +++ b/test/DemaConsulting.BuildMark.Tests/DemaConsulting.BuildMark.Tests.csproj @@ -55,7 +55,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/DemaConsulting.BuildMark.Tests/RepoConnectors/RepoConnectorBaseTests.cs b/test/DemaConsulting.BuildMark.Tests/RepoConnectors/RepoConnectorBaseTests.cs index d16454eb..2286b076 100644 --- a/test/DemaConsulting.BuildMark.Tests/RepoConnectors/RepoConnectorBaseTests.cs +++ b/test/DemaConsulting.BuildMark.Tests/RepoConnectors/RepoConnectorBaseTests.cs @@ -222,7 +222,7 @@ public void RepoConnectorBase_FindBaselineForPreRelease_SameCommitSkipped_Return // Assert - returns the first tag with a different commit hash (v1.0.0), skipping same-hash entries Assert.True(baseline != null, "Baseline should not be null when a different-commit predecessor exists"); Assert.True( - baseline!.VersionTag.Tag == "v1.0.0", + baseline.VersionTag.Tag == "v1.0.0", $"Expected baseline 'v1.0.0' but got '{baseline.VersionTag.Tag}'"); } @@ -269,7 +269,7 @@ public void RepoConnectorBase_FindBaselineForRelease_SkipsPreReleaseTags_Returns // Assert - returns v1.0.0, the most recent non-pre-release tag Assert.True(baseline != null, "Baseline should not be null when a preceding release tag exists"); Assert.True( - baseline!.VersionTag.Tag == "v1.0.0", + baseline.VersionTag.Tag == "v1.0.0", $"Expected baseline 'v1.0.0' but got '{baseline.VersionTag.Tag}'"); } diff --git a/test/DemaConsulting.BuildMark.Tests/Version/VersionComparableTests.cs b/test/DemaConsulting.BuildMark.Tests/Version/VersionComparableTests.cs index f236fa00..2f53b4ec 100644 --- a/test/DemaConsulting.BuildMark.Tests/Version/VersionComparableTests.cs +++ b/test/DemaConsulting.BuildMark.Tests/Version/VersionComparableTests.cs @@ -329,9 +329,9 @@ public void VersionComparable_CompareTo_SemanticVersions_ReturnsCorrectOrder() { var current = versions[i]; var next = versions[i + 1]; - var result = current!.CompareTo(next); + var result = current.CompareTo(next); - Assert.True(result < 0, $"{current.CompareVersion} should be less than {next!.CompareVersion}"); + Assert.True(result < 0, $"{current.CompareVersion} should be less than {next.CompareVersion}"); } } @@ -398,7 +398,7 @@ public void VersionComparable_CompareTo_PreReleaseNumeric_ComparesNumerically() var version10 = VersionComparable.Create("1.0.0-alpha.10"); // Act - var result = version5!.CompareTo(version10); + var result = version5.CompareTo(version10); // Assert Assert.True(result < 0, "1.0.0-alpha.5 should be less than 1.0.0-alpha.10 (numeric comparison)"); @@ -418,9 +418,9 @@ public void VersionComparable_CompareTo_PreReleaseSemVerRules_CorrectOrdering() { var current = versions[i]; var next = versions[i + 1]; - var result = current!.CompareTo(next); + var result = current.CompareTo(next); - Assert.True(result < 0, $"{current.CompareVersion} should be less than {next!.CompareVersion}"); + Assert.True(result < 0, $"{current.CompareVersion} should be less than {next.CompareVersion}"); } } @@ -435,7 +435,7 @@ public void VersionComparable_CompareTo_NumericVsNonNumeric_NumericIsLess() var nonNumericVersion = VersionComparable.Create("1.0.0-alpha"); // Act - var result = numericVersion!.CompareTo(nonNumericVersion); + var result = numericVersion.CompareTo(nonNumericVersion); // Assert Assert.True(result < 0, "1.0.0-1 should be less than 1.0.0-alpha (numeric < non-numeric)"); @@ -452,7 +452,7 @@ public void VersionComparable_CompareTo_ShorterPreRelease_IsLess() var longerVersion = VersionComparable.Create("1.0.0-alpha.1"); // Act - var result = shorterVersion!.CompareTo(longerVersion); + var result = shorterVersion.CompareTo(longerVersion); // Assert Assert.True(result < 0, "1.0.0-alpha should be less than 1.0.0-alpha.1 (shorter is less)"); @@ -471,9 +471,9 @@ public void VersionComparable_CompareTo_ComplexPreRelease_CorrectOrdering() var test4 = VersionComparable.Create("1.0.0-alpha.beta.1"); // Act & Assert - Assert.True(test1!.CompareTo(test2) < 0, "alpha.1.2 < alpha.1.10 (numeric segment comparison)"); - Assert.True(test2!.CompareTo(test3) < 0, "alpha.1.10 < alpha.2.1 (first numeric difference wins)"); - Assert.True(test3!.CompareTo(test4) < 0, "alpha.2.1 < alpha.beta.1 (numeric < non-numeric)"); + Assert.True(test1.CompareTo(test2) < 0, "alpha.1.2 < alpha.1.10 (numeric segment comparison)"); + Assert.True(test2.CompareTo(test3) < 0, "alpha.1.10 < alpha.2.1 (first numeric difference wins)"); + Assert.True(test3.CompareTo(test4) < 0, "alpha.2.1 < alpha.beta.1 (numeric < non-numeric)"); } } diff --git a/test/DemaConsulting.BuildMark.Tests/Version/VersionIntervalTests.cs b/test/DemaConsulting.BuildMark.Tests/Version/VersionIntervalTests.cs index f3090259..4e8a13a9 100644 --- a/test/DemaConsulting.BuildMark.Tests/Version/VersionIntervalTests.cs +++ b/test/DemaConsulting.BuildMark.Tests/Version/VersionIntervalTests.cs @@ -328,11 +328,11 @@ public void VersionInterval_Contains_PreReleaseBounds_HandlesCorrectly() // Act & Assert Assert.True(interval!.Contains("1.2.0-rc.1")); // Equal to inclusive lower bound - Assert.True(interval!.Contains("1.2.0-rc.2")); // Between bounds (rc.2 > rc.1) - Assert.True(interval!.Contains("1.2.0")); // Equal to inclusive upper bound - Assert.False(interval!.Contains("1.2.0-alpha.1")); // Before lower bound (alpha < rc) - Assert.False(interval!.Contains("1.2.1")); // After upper bound - Assert.False(interval!.Contains("1.1.9")); // Before lower bound + Assert.True(interval.Contains("1.2.0-rc.2")); // Between bounds (rc.2 > rc.1) + Assert.True(interval.Contains("1.2.0")); // Equal to inclusive upper bound + Assert.False(interval.Contains("1.2.0-alpha.1")); // Before lower bound (alpha < rc) + Assert.False(interval.Contains("1.2.1")); // After upper bound + Assert.False(interval.Contains("1.1.9")); // Before lower bound } /// @@ -346,9 +346,9 @@ public void VersionInterval_Contains_PreReleaseToPreRelease_HandlesCorrectly() // Act & Assert Assert.True(interval!.Contains("1.2.0-alpha.1")); // Equal to inclusive lower bound - Assert.True(interval!.Contains("1.2.0-beta.1")); // Between bounds - Assert.False(interval!.Contains("1.2.0-rc.1")); // Equal to exclusive upper bound - Assert.False(interval!.Contains("1.2.0")); // After upper bound (release > pre-release) + Assert.True(interval.Contains("1.2.0-beta.1")); // Between bounds + Assert.False(interval.Contains("1.2.0-rc.1")); // Equal to exclusive upper bound + Assert.False(interval.Contains("1.2.0")); // After upper bound (release > pre-release) } /// @@ -362,10 +362,10 @@ public void VersionInterval_Contains_PreReleaseOrdering_UsesNumericComparison() // Act & Assert Assert.True(interval!.Contains("1.0.0-alpha.5")); // Equal to lower bound - Assert.True(interval!.Contains("1.0.0-alpha.6")); // Between bounds - Assert.True(interval!.Contains("1.0.0-alpha.10")); // Equal to upper bound - Assert.False(interval!.Contains("1.0.0-alpha.4")); // Before lower bound - Assert.False(interval!.Contains("1.0.0-alpha.11")); // After upper bound + Assert.True(interval.Contains("1.0.0-alpha.6")); // Between bounds + Assert.True(interval.Contains("1.0.0-alpha.10")); // Equal to upper bound + Assert.False(interval.Contains("1.0.0-alpha.4")); // Before lower bound + Assert.False(interval.Contains("1.0.0-alpha.11")); // After upper bound } /// @@ -381,7 +381,7 @@ public void VersionInterval_Contains_VersionComparable_HandlesPreRelease() // Act & Assert Assert.True(interval!.Contains(preReleaseVersion)); - Assert.True(interval!.Contains(releaseVersion)); + Assert.True(interval.Contains(releaseVersion)); } } diff --git a/test/DemaConsulting.BuildMark.Tests/Version/VersionTests.cs b/test/DemaConsulting.BuildMark.Tests/Version/VersionTests.cs index d6c16dd6..56f4a88c 100644 --- a/test/DemaConsulting.BuildMark.Tests/Version/VersionTests.cs +++ b/test/DemaConsulting.BuildMark.Tests/Version/VersionTests.cs @@ -119,7 +119,7 @@ public void VersionCommitTag_Constructor_ValidParameters_CreatesInstance() var commitHash = "abc123def456789"; // Act - var versionCommitTag = new VersionCommitTag(versionTag!, commitHash); + var versionCommitTag = new VersionCommitTag(versionTag, commitHash); // Assert Assert.NotNull(versionCommitTag); @@ -140,7 +140,7 @@ public void Version_Subsystem_CreateAllVersionTypes_WorksCorrectly() var versionSemantic = VersionSemantic.Create("2.0.0-beta.2+build.1"); var versionTag = VersionTag.Create("v3.1.0"); var versionInterval = new VersionInterval("1.0.0", true, "2.0.0", false); - var versionCommitTag = new VersionCommitTag(versionTag!, "abc123def456"); + var versionCommitTag = new VersionCommitTag(versionTag, "abc123def456"); // Assert - All types are created successfully Assert.NotNull(versionComparable); @@ -173,11 +173,11 @@ public void Version_Subsystem_SemanticVersioningCompliance_WorksCorrectly() var version6 = VersionComparable.Create("1.0.0"); // Assert - SemVer precedence is maintained - Assert.True(version1!.CompareTo(version2) < 0, "1.0.0-alpha < 1.0.0-alpha.1"); - Assert.True(version2!.CompareTo(version3) < 0, "1.0.0-alpha.1 < 1.0.0-alpha.beta"); - Assert.True(version3!.CompareTo(version4) < 0, "1.0.0-alpha.beta < 1.0.0-beta"); - Assert.True(version4!.CompareTo(version5) < 0, "1.0.0-beta < 1.0.0-beta.2"); - Assert.True(version5!.CompareTo(version6) < 0, "1.0.0-beta.2 < 1.0.0"); + Assert.True(version1.CompareTo(version2) < 0, "1.0.0-alpha < 1.0.0-alpha.1"); + Assert.True(version2.CompareTo(version3) < 0, "1.0.0-alpha.1 < 1.0.0-alpha.beta"); + Assert.True(version3.CompareTo(version4) < 0, "1.0.0-alpha.beta < 1.0.0-beta"); + Assert.True(version4.CompareTo(version5) < 0, "1.0.0-beta < 1.0.0-beta.2"); + Assert.True(version5.CompareTo(version6) < 0, "1.0.0-beta.2 < 1.0.0"); } /// @@ -193,9 +193,9 @@ public void Version_Subsystem_TagToComparableIntegration_WorksCorrectly() var tag3 = VersionTag.Create("release-1.5.0"); // Act - Get comparable versions - var comparable1 = tag1!.Semantic.Comparable; - var comparable2 = tag2!.Semantic.Comparable; - var comparable3 = tag3!.Semantic.Comparable; + var comparable1 = tag1.Semantic.Comparable; + var comparable2 = tag2.Semantic.Comparable; + var comparable3 = tag3.Semantic.Comparable; // Assert - Comparable versions are extracted correctly Assert.NotNull(comparable1);