diff --git a/api/src/shipit_api/admin/product_details.py b/api/src/shipit_api/admin/product_details.py index d73cf459a..361557a15 100644 --- a/api/src/shipit_api/admin/product_details.py +++ b/api/src/shipit_api/admin/product_details.py @@ -26,6 +26,7 @@ import sqlalchemy import sqlalchemy.orm from mozilla_version.gecko import FirefoxVersion +from mozilla_version.ios import MobileIosVersion from mozilla_version.mobile import MobileVersion import cli_common.command @@ -996,9 +997,14 @@ def get_mobile_versions(releases: typing.List[shipit_api.common.models.Release], "ios_version": "9.0", } """ + + def is_version_ios_beta(version): + version = MobileIosVersion.parse(version) + return version.minor_number == 0 and version.patch_number is None + return dict( - ios_beta_version=shipit_api.common.config.IOS_BETA_VERSION, - ios_version=shipit_api.common.config.IOS_VERSION, + ios_beta_version=get_latest_version(releases, Product.FIREFOX_IOS, filter_closure=lambda r: is_version_ios_beta(r.version)), + ios_version=get_latest_version(releases, Product.FIREFOX_IOS, filter_closure=lambda r: not is_version_ios_beta(r.version)), nightly_version=firefox_nightly_version, alpha_version=firefox_nightly_version, beta_version=get_latest_version(releases, Product.FIREFOX_ANDROID, filter_closure=lambda r: MobileVersion.parse(r.version).is_beta), diff --git a/api/src/shipit_api/common/config.py b/api/src/shipit_api/common/config.py index 8cabac596..68c3e13d2 100644 --- a/api/src/shipit_api/common/config.py +++ b/api/src/shipit_api/common/config.py @@ -49,10 +49,6 @@ # still rely on this value. FIREFOX_AURORA = "" -# IOS versions -IOS_BETA_VERSION = "" -IOS_VERSION = "" - # Thunderbird configs LATEST_THUNDERBIRD_ALPHA_VERSION = "54.0a2" diff --git a/api/tests/test_product_details.py b/api/tests/test_product_details.py index 3b59d605c..6eb70d7c8 100644 --- a/api/tests/test_product_details.py +++ b/api/tests/test_product_details.py @@ -138,6 +138,23 @@ async def test_rebuild(app, tmp_path): status="shipped", partial_updates=None, ) + for branch, version in ( + ("release/v135", "135.0"), + ("release/v135", "135.1"), + ("release/v135", "135.1.1"), + ("release/v136", "136.0"), + ): + ios_release = Release( + product="firefox-ios", + branch=branch, + version=version, + revision="9fb87e89c26069198ce2a59a0a790a264d225169", + build_number=1, + release_eta=None, + status="shipped", + partial_updates=None, + ) + app.app.db.session.add(ios_release) app.app.db.session.add(fxnightly) app.app.db.session.add(tbnightly) app.app.db.session.add(deved) @@ -220,3 +237,8 @@ async def test_rebuild(app, tmp_path): assert not list(parent.glob("l10n/Devedition-*")) assert next(parent.glob("l10n/Firefox-134.0b8-*")).name == "Firefox-134.0b8-build1.json" + + with (parent / "mobile_versions.json").open() as f: + mobile_versions = json.load(f) + assert mobile_versions["ios_beta_version"] == "136.0" + assert mobile_versions["ios_version"] == "135.1.1"