diff --git a/phpmon-tests/Versions/AppUpdaterCheckTest.swift b/phpmon-tests/Versions/AppUpdaterCheckTest.swift index 64a2854..a108ac5 100644 --- a/phpmon-tests/Versions/AppUpdaterCheckTest.swift +++ b/phpmon-tests/Versions/AppUpdaterCheckTest.swift @@ -18,4 +18,30 @@ class AppUpdaterCheckTest: XCTestCase { XCTAssertNotNil(version) } + func testTaggedReleaseOmitsZeroPatch() { + let version = AppVersion.from("3.5.0_333")! + + XCTAssertEqual(version.tagged, "3.5") + XCTAssertEqual(version.version, "3.5.0") + } + + func testTaggedReleaseDoesntOmitNonZeroPatch() { + let version = AppVersion.from("3.5.1_333")! + + XCTAssertEqual(version.tagged, "3.5.1") + XCTAssertEqual(version.version, "3.5.1") + } + + func testTagTruncationDoesntAffectMajorVersions() { + var version = AppVersion.from("5.0_333")! + + XCTAssertEqual(version.tagged, "5.0") + XCTAssertEqual(version.version, "5.0") + + version = AppVersion.from("5.0.0_333")! + + XCTAssertEqual(version.tagged, "5.0") + XCTAssertEqual(version.version, "5.0.0") + } + } diff --git a/phpmon/Domain/App/AppUpdateChecker.swift b/phpmon/Domain/App/AppUpdateChecker.swift index 7ac48da..9914e15 100644 --- a/phpmon/Domain/App/AppUpdateChecker.swift +++ b/phpmon/Domain/App/AppUpdateChecker.swift @@ -146,8 +146,9 @@ class AppUpdateChecker { text: "updater.alerts.buttons.release_notes".localized, action: { vc in vc.close(with: .OK) + NSWorkspace.shared.open( - Constants.Urls.GitHubReleases.appendingPathComponent("/tag/v\(version.version)\(devSuffix)") + Constants.Urls.GitHubReleases.appendingPathComponent("/tag/v\(version.tagged)\(devSuffix)") ) } ) diff --git a/phpmon/Domain/App/AppVersion.swift b/phpmon/Domain/App/AppVersion.swift index c554b2c..928858a 100644 --- a/phpmon/Domain/App/AppVersion.swift +++ b/phpmon/Domain/App/AppVersion.swift @@ -66,6 +66,14 @@ class AppVersion { return AppVersion.from("\(App.shortVersion)_\(App.bundleVersion)")! } + var tagged: String { + if version.suffix(2) == ".0" && version.count > 3 { + return String(version.dropLast(2)) + } + + return version + } + var computerReadable: String { return "\(version)_\(build ?? "0")" }