From 46fb0597d4d6192833ddcf836f4bcf6295ef0aaf Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Mon, 16 May 2022 16:07:43 -0500 Subject: Keep track of when parts of verutil/WixVersions are missing. Return null when WixVersion.TryParse returns false. 6776 --- src/api/burn/WixToolset.Mba.Core/VerUtil.cs | 4 ++++ src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs | 24 ++++++++++++++++++++++ .../test/WixToolsetTest.Mba.Core/VerUtilFixture.cs | 8 ++++++++ 3 files changed, 36 insertions(+) (limited to 'src/api/burn') diff --git a/src/api/burn/WixToolset.Mba.Core/VerUtil.cs b/src/api/burn/WixToolset.Mba.Core/VerUtil.cs index 611f9710..14552310 100644 --- a/src/api/burn/WixToolset.Mba.Core/VerUtil.cs +++ b/src/api/burn/WixToolset.Mba.Core/VerUtil.cs @@ -68,6 +68,10 @@ namespace WixToolset.Mba.Core public IntPtr rgReleaseLabels; public IntPtr cchMetadataOffset; public bool fInvalid; + public bool fHasMajor; + public bool fHasMinor; + public bool fHasPatch; + public bool fHasRevision; } internal static string VersionStringFromOffset(IntPtr wzVersion, IntPtr cchOffset, int? cchLength = null) diff --git a/src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs b/src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs index 731dedaf..e0312474 100644 --- a/src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs +++ b/src/api/burn/WixToolset.Mba.Core/VerUtilVersion.cs @@ -25,6 +25,10 @@ namespace WixToolset.Mba.Core this.ReleaseLabels = new VerUtilVersionReleaseLabel[version.cReleaseLabels]; this.Metadata = VerUtil.VersionStringFromOffset(version.sczVersion, version.cchMetadataOffset); this.IsInvalid = version.fInvalid; + this.HasMajor = version.fHasMajor; + this.HasMinor = version.fHasMinor; + this.HasPatch = version.fHasPatch; + this.HasRevision = version.fHasRevision; for (var i = 0; i < version.cReleaseLabels; ++i) { @@ -80,6 +84,26 @@ namespace WixToolset.Mba.Core /// public bool IsInvalid { get; private set; } + /// + /// Whether the Major part was specified. + /// + public bool HasMajor { get; private set; } + + /// + /// Whether the Minor part was specified. + /// + public bool HasMinor { get; private set; } + + /// + /// Whether the Patch part was specified. + /// + public bool HasPatch { get; private set; } + + /// + /// Whether the Revision part was specified. + /// + public bool HasRevision { get; private set; } + /// public void Dispose() { diff --git a/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs b/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs index ceb1b12a..6fb8aced 100644 --- a/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs +++ b/src/api/burn/test/WixToolsetTest.Mba.Core/VerUtilFixture.cs @@ -57,6 +57,10 @@ namespace WixToolsetTest.Mba.Core Assert.Empty(parsedVersion.ReleaseLabels); Assert.Equal("", parsedVersion.Metadata); Assert.False(parsedVersion.IsInvalid); + Assert.True(parsedVersion.HasMajor); + Assert.True(parsedVersion.HasMinor); + Assert.True(parsedVersion.HasPatch); + Assert.True(parsedVersion.HasRevision); } [Fact] @@ -74,6 +78,10 @@ namespace WixToolsetTest.Mba.Core Assert.Equal(5, parsedVersion.ReleaseLabels.Length); Assert.Equal("+abc123", parsedVersion.Metadata); Assert.True(parsedVersion.IsInvalid); + Assert.True(parsedVersion.HasMajor); + Assert.True(parsedVersion.HasMinor); + Assert.True(parsedVersion.HasPatch); + Assert.True(parsedVersion.HasRevision); Assert.Equal("a", parsedVersion.ReleaseLabels[0].Label); Assert.False(parsedVersion.ReleaseLabels[0].IsNumeric); -- cgit v1.2.3-55-g6feb