[extensions-web] upload: Always ignore micro versions when uploading



commit d170f776e6bc8aa6bb0f611c53d48da37a641a45
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Thu Jun 14 13:51:56 2012 -0400

    upload: Always ignore micro versions when uploading
    
    This is a very common mistake. Just convert the micro variant to
    a point variant, instead of outright ignoring it.

 sweettooth/extensions/models.py |   15 +++++----------
 sweettooth/extensions/tests.py  |   22 +++++++++-------------
 sweettooth/extensions/views.py  |    2 +-
 3 files changed, 15 insertions(+), 24 deletions(-)
---
diff --git a/sweettooth/extensions/models.py b/sweettooth/extensions/models.py
index 679b2de..796327a 100644
--- a/sweettooth/extensions/models.py
+++ b/sweettooth/extensions/models.py
@@ -168,7 +168,7 @@ class InvalidShellVersion(Exception):
     pass
 
 
-def parse_version_string(version_string, ignore_micro):
+def parse_version_string(version_string):
     version = version_string.split('.')
 
     try:
@@ -177,12 +177,7 @@ def parse_version_string(version_string, ignore_micro):
     except ValueError, e:
         raise InvalidShellVersion()
 
-    if ignore_micro:
-        valid_lengths = (3, 4)
-    else:
-        valid_lengths = (3,)
-
-    if len(version) in valid_lengths:
+    if len(version) in (3, 4):
         # 3.0.1, 3.1.4
         try:
             point = int(version[2])
@@ -199,15 +194,15 @@ def parse_version_string(version_string, ignore_micro):
     return major, minor, point
 
 class ShellVersionManager(models.Manager):
-    def lookup_for_version_string(self, version_string, ignore_micro=False):
-        major, minor, point = parse_version_string(version_string, ignore_micro)
+    def lookup_for_version_string(self, version_string):
+        major, minor, point = parse_version_string(version_string)
         try:
             return self.get(major=major, minor=minor, point=point)
         except self.model.DoesNotExist:
             return None
 
     def get_for_version_string(self, version_string):
-        major, minor, point = parse_version_string(version_string, ignore_micro=False)
+        major, minor, point = parse_version_string(version_string)
         obj, created = self.get_or_create(major=major, minor=minor, point=point)
         return obj
 
diff --git a/sweettooth/extensions/tests.py b/sweettooth/extensions/tests.py
index 6fb152c..4eb1fd9 100644
--- a/sweettooth/extensions/tests.py
+++ b/sweettooth/extensions/tests.py
@@ -350,31 +350,27 @@ class ShellVersionTest(TestCase):
         self.assertEquals(version.minor, 2)
         self.assertEquals(version.point, -1)
 
+        version1 = get_version("3.2.2")
+        self.assertEquals(lookup_version("3.2.2.1"), version1)
+
         with self.assertRaises(models.InvalidShellVersion):
             get_version("3.1")
-            lookup_version("3.1")
 
-    def test_bad_shell_versions(self):
         with self.assertRaises(models.InvalidShellVersion):
-            models.parse_version_string("3", ignore_micro=False)
+            lookup_version("3.1")
 
+    def test_bad_shell_versions(self):
         with self.assertRaises(models.InvalidShellVersion):
-            models.parse_version_string("3.2.2.2.1", ignore_micro=False)
+            models.parse_version_string("3")
 
         with self.assertRaises(models.InvalidShellVersion):
-            models.parse_version_string("a.b", ignore_micro=False)
+            models.parse_version_string("3.2.2.2.1")
 
         with self.assertRaises(models.InvalidShellVersion):
-            models.parse_version_string("3.2.a", ignore_micro=False)
+            models.parse_version_string("a.b")
 
-    def test_ignore_micro(self):
         with self.assertRaises(models.InvalidShellVersion):
-            models.parse_version_string("4.3.2.1", ignore_micro=False)
-
-        major, minor, point = models.parse_version_string("4.3.2.1", ignore_micro=True)
-        self.assertEquals(major, 4)
-        self.assertEquals(minor, 3)
-        self.assertEquals(point, 2)
+            models.parse_version_string("3.2.a")
 
 class DownloadExtensionTest(BasicUserTestCase, TestCase):
     def download(self, uuid, shell_version):
diff --git a/sweettooth/extensions/views.py b/sweettooth/extensions/views.py
index 2026098..26e5050 100644
--- a/sweettooth/extensions/views.py
+++ b/sweettooth/extensions/views.py
@@ -29,7 +29,7 @@ def get_versions_for_version_strings(version_strings):
 
     for version_string in version_strings:
         try:
-            major, minor, point = models.parse_version_string(version_string, ignore_micro=True)
+            major, minor, point = models.parse_version_string(version_string)
         except models.InvalidShellVersion:
             continue
 



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