[extensions-web/bugfix/v40-frontend-compatibility] extensions: fixed major version compatibility for GNOME 40+




commit db8efd185b774d4a4a47ba10ee15d2b069aa77c5
Author: Yuri Konotopov <ykonotopov gnome org>
Date:   Sun Apr 4 16:02:06 2021 +0400

    extensions: fixed major version compatibility for GNOME 40+
    
    Fixes: https://gitlab.gnome.org/Infrastructure/extensions-web/-/issues/138

 sweettooth/extensions/tests.py          |  6 ++++--
 sweettooth/extensions/views.py          |  8 +++++++-
 sweettooth/static/js/extensionUtils.js  |  6 +++++-
 sweettooth/static/js/test/extensions.js | 13 +++++++++++--
 4 files changed, 27 insertions(+), 6 deletions(-)
---
diff --git a/sweettooth/extensions/tests.py b/sweettooth/extensions/tests.py
index 0b80727..5bd3c46 100644
--- a/sweettooth/extensions/tests.py
+++ b/sweettooth/extensions/tests.py
@@ -762,6 +762,7 @@ class QueryExtensionsTest(BasicUserTestCase, TestCase):
         self.assertEqual(views.grab_proper_extension_version(extension, "3.4.0", True).version, 1)
         self.assertEqual(views.grab_proper_extension_version(extension, "3.7.4.1", True).version, 1)
         self.assertEqual(views.grab_proper_extension_version(extension, "3.10.0", True).version, 1)
+        self.assertEqual(views.grab_proper_extension_version(extension, "3.10.0", False).version, 1)
         self.assertEqual(views.grab_proper_extension_version(extension, "3.11.2", True).version, 1)
         self.assertEqual(views.grab_proper_extension_version(extension, "3.13.4", True).version, 2)
         self.assertEqual(views.grab_proper_extension_version(extension, "3.15.1", True).version, 2)
@@ -774,8 +775,9 @@ class QueryExtensionsTest(BasicUserTestCase, TestCase):
         self.assertEqual(views.grab_proper_extension_version(extension, "3.18.3", True).version, 3)
         self.assertEqual(views.grab_proper_extension_version(extension, "3.20.0", True).version, 4)
         self.assertEqual(views.grab_proper_extension_version(extension, "3.24.0", True).version, 4)
-        self.assertEqual(views.grab_proper_extension_version(extension, "40.alpha", True).version, 5)
-        self.assertEqual(views.grab_proper_extension_version(extension, "40.beta", True).version, 5)
+        self.assertEqual(views.grab_proper_extension_version(extension, "40.alpha", True).version, 6)
+        self.assertEqual(views.grab_proper_extension_version(extension, "40.beta", True).version, 6)
         self.assertEqual(views.grab_proper_extension_version(extension, "40.2", True).version, 6)
+        self.assertEqual(views.grab_proper_extension_version(extension, "40.2", False).version, 6)
         self.assertEqual(views.grab_proper_extension_version(extension, "44.2", True).version, 5)
         self.assertEqual(views.grab_proper_extension_version(extension, "129.rc", True).version, 5)
diff --git a/sweettooth/extensions/views.py b/sweettooth/extensions/views.py
index 510c7e8..10ba39e 100644
--- a/sweettooth/extensions/views.py
+++ b/sweettooth/extensions/views.py
@@ -49,13 +49,19 @@ def get_versions_for_version_strings(version_strings):
             yield version
 
         # If we already have a base version, don't bother querying it again...
-        if point == -1:
+        if (major < 40 and point == -1) or minor == -1:
             continue
 
         base_version = get_version(major, minor, -1)
         if base_version:
             yield base_version
 
+        if major >= 40:
+            base_version = get_version(major, -1, -1)
+            if base_version:
+                yield base_version
+
+
 def grab_proper_extension_version(extension, shell_version, disable_version_validation=False):
     def get_best_shell_version():
         visible_versions = extension.visible_versions
diff --git a/sweettooth/static/js/extensionUtils.js b/sweettooth/static/js/extensionUtils.js
index 261e606..1e57203 100644
--- a/sweettooth/static/js/extensionUtils.js
+++ b/sweettooth/static/js/extensionUtils.js
@@ -117,7 +117,11 @@ define([], function () {
                let mappedVersion = null;
                if (major >= 40)
                {
-                       mappedVersion = map[`${major}.${minor}`]
+            // alpha/beta/rc
+            if(isNaN(parseInt(minor)))
+                           mappedVersion = map[major] || map[`${major}.${minor}`];
+            else
+                mappedVersion = map[`${major}.${minor}`] || map[major];
                }
                else
                {
diff --git a/sweettooth/static/js/test/extensions.js b/sweettooth/static/js/test/extensions.js
index 871cbc2..8c9ea27 100644
--- a/sweettooth/static/js/test/extensions.js
+++ b/sweettooth/static/js/test/extensions.js
@@ -8,16 +8,25 @@ require(['extensionUtils', 'jquery', 'test/qunit'], function(extensionUtils) {
                     "3.2": { version: 4, pk: 4 },
                     "3.3": { version: 5, pk: 5 },
                     "3.3.1": { version: 6, pk: 6 },
-                    "3.4.1": { version: 7, pk: 7 } };
+                    "3.4.1": { version: 7, pk: 7 },
+                    "40.alpha": { version: 8, pk: 8 },
+                    "40": { version: 9, pk: 9 },
+                    "40.7": { version: 10, pk: 10 },
+        };
 
         equal(grabProperExtensionVersion(map, "3.4.0"), null);
         equal(grabProperExtensionVersion(map, "3.0.0").version, 1);
         equal(grabProperExtensionVersion(map, "3.0.1").version, 2);
         equal(grabProperExtensionVersion(map, "3.2.0").version, 4);
         equal(grabProperExtensionVersion(map, "3.2.1").version, 3);
+        equal(grabProperExtensionVersion(map, "3.2.2").version, 4);
         equal(grabProperExtensionVersion(map, "3.3.0"), null, "stable release checking");
         equal(grabProperExtensionVersion(map, "3.3.1").version, 6);
         equal(grabProperExtensionVersion(map, "3.4.1.1").version, 7);
+        equal(grabProperExtensionVersion(map, "40.alpha").version, 9);
+        equal(grabProperExtensionVersion(map, "40.beta").version, 9);
+        equal(grabProperExtensionVersion(map, "40.2").version, 9);
+        equal(grabProperExtensionVersion(map, "40.7").version, 10);
     });
 
     test("getBestExtensionVersion", function() {
@@ -32,7 +41,7 @@ require(['extensionUtils', 'jquery', 'test/qunit'], function(extensionUtils) {
         equal(grabProperExtensionVersion(map, "3.11.2", true).version, 3);
         equal(grabProperExtensionVersion(map, "3.20.0", true).version, 3);
         equal(grabProperExtensionVersion(map, "3.24.0", true).version, 3);
-        equal(grabProperExtensionVersion(map, "4.14.0", true).version, 3);
+        equal(grabProperExtensionVersion(map, "40.14", true).version, 3);
     });
 
     function nhvEqual(versions, current, operation, stability, version) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]