[extensions-web] extensions: added reverse-conversion for GNOME 40+ unstable versions



commit 43632f7a4799d96fbd468221a0b551e5168e077d
Author: Yuri Konotopov <ykonotopov gnome org>
Date:   Sat Dec 19 22:59:25 2020 +0400

    extensions: added reverse-conversion for GNOME 40+ unstable versions

 sweettooth/extensions/models.py | 14 ++++++++++++++
 sweettooth/extensions/tests.py  | 14 ++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)
---
diff --git a/sweettooth/extensions/models.py b/sweettooth/extensions/models.py
index a125b0ec..6d83ae87 100644
--- a/sweettooth/extensions/models.py
+++ b/sweettooth/extensions/models.py
@@ -266,6 +266,20 @@ class ShellVersion(models.Model):
 
     @property
     def version_string(self):
+        prerelease_versions = {
+            -3: 'alpha',
+            -2: 'beta',
+            -1: 'rc'
+        }
+
+        # GNOME 40+: unstable versions
+        # https://discourse.gnome.org/t/new-gnome-versioning-scheme/4235
+        if self.major >= 40 and self.minor < 0:
+            return "%d.%s" % (
+                self.major,
+                prerelease_versions.get(self.minor, 'unknown')
+            )
+
         if self.point == -1:
             return "%d.%d" % (self.major, self.minor)
 
diff --git a/sweettooth/extensions/tests.py b/sweettooth/extensions/tests.py
index 4f2abc4c..180978f2 100644
--- a/sweettooth/extensions/tests.py
+++ b/sweettooth/extensions/tests.py
@@ -302,7 +302,10 @@ class ExtensionVersionTest(BasicUserTestCase, TestCase):
                     "uuid": "test-4 mecheye net",
                     "description": "Simple test metadata",
                     "url": "http://test-metadata.gnome.org";,
-                    "shell-version": ["3.0.0", "3.0.1", "3.0.2"]}
+                    "shell-version": [
+                        "3.0.0", "3.0.1", "3.0.2",
+                        "40.alpha", "49.beta", "67.rc"
+                    ]}
 
         extension = models.Extension.objects.create_from_metadata(metadata, creator=self.user)
         version = models.ExtensionVersion.objects.create(extension=extension,
@@ -310,14 +313,17 @@ class ExtensionVersionTest(BasicUserTestCase, TestCase):
         version.parse_metadata_json(metadata)
 
         shell_versions = sorted(sv.version_string for sv in version.shell_versions.all())
-        self.assertEqual(shell_versions, ["3.0.0", "3.0.1", "3.0.2"])
+        self.assertEqual(shell_versions, [
+            "3.0.0", "3.0.1", "3.0.2",
+            "40.alpha", "49.beta", "67.rc"
+        ])
 
     def test_shell_versions_stable(self):
         metadata = {"name": "Test Metadata 5",
                     "uuid": "test-5 mecheye net",
                     "description": "Simple test metadata",
                     "url": "http://test-metadata.gnome.org";,
-                    "shell-version": ["3.0", "3.2"]}
+                    "shell-version": ["3.0", "3.2", "40.0", "56.5"]}
 
         extension = models.Extension.objects.create_from_metadata(metadata, creator=self.user)
 
@@ -326,7 +332,7 @@ class ExtensionVersionTest(BasicUserTestCase, TestCase):
         version.parse_metadata_json(metadata)
 
         shell_versions = sorted(sv.version_string for sv in version.shell_versions.all())
-        self.assertEqual(shell_versions, ["3.0", "3.2"])
+        self.assertEqual(shell_versions, ["3.0", "3.2", "40.0", "56.5"])
 
 class ShellVersionTest(TestCase):
     def test_shell_version_parsing(self):


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