Browse Source

[Result] backend.as_uri() must return proper schemes

Ask Solem 9 years ago
parent
commit
ffaf8cf940
2 changed files with 6 additions and 5 deletions
  1. 4 3
      celery/backends/base.py
  2. 2 2
      celery/tests/backends/test_base.py

+ 4 - 3
celery/backends/base.py

@@ -115,9 +115,10 @@ class Backend(object):
         """Return the backend as an URI, sanitizing the password or not"""
         # when using maybe_sanitize_url(), "/" is added
         # we're stripping it for consistency
-        if self.url:
-            return (self.url if include_password
-                    else maybe_sanitize_url(self.url).rstrip("/"))
+        if include_password:
+            return self.url
+        url = maybe_sanitize_url(self.url or '')
+        return url[:-1] if url.endswith(':///') else url
 
     def mark_as_started(self, task_id, **meta):
         """Mark a task as started"""

+ 2 - 2
celery/tests/backends/test_base.py

@@ -598,7 +598,7 @@ class test_as_uri(AppCase):
         )
 
     def test_as_uri_include_password(self):
-        self.assertEqual(self.b.as_uri(True), 'sch://uuuu:pwpw@hostname.dom')
+        self.assertEqual(self.b.as_uri(True), self.b.url)
 
     def test_as_uri_exclude_password(self):
-        self.assertEqual(self.b.as_uri(), 'sch://uuuu:**@hostname.dom')
+        self.assertEqual(self.b.as_uri(), 'sch://uuuu:**@hostname.dom/')