Pārlūkot izejas kodu

Correctly restore an empty GroupResult (#2202) (#4427)

Alex Hill 7 gadi atpakaļ
vecāks
revīzija
b8550a050a
2 mainītis faili ar 11 papildinājumiem un 1 dzēšanām
  1. 1 1
      celery/result.py
  2. 10 0
      t/unit/tasks/test_result.py

+ 1 - 1
celery/result.py

@@ -998,7 +998,7 @@ def result_from_tuple(r, app=None):
         if parent:
             parent = result_from_tuple(parent, app)
 
-        if nodes:
+        if nodes is not None:
             return app.GroupResult(
                 id, [result_from_tuple(child, app) for child in nodes],
                 parent=parent,

+ 10 - 0
t/unit/tasks/test_result.py

@@ -641,6 +641,16 @@ class test_GroupResult:
         with pytest.raises(AttributeError):
             self.app.GroupResult.restore(ts.id, backend=object())
 
+    def test_save_restore_empty(self):
+        subs = []
+        ts = self.app.GroupResult(uuid(), subs)
+        ts.save()
+        assert isinstance(
+            self.app.GroupResult.restore(ts.id),
+            self.app.GroupResult,
+        )
+        assert self.app.GroupResult.restore(ts.id).results == ts.results == []
+
     def test_restore_app(self):
         subs = [MockAsyncResultSuccess(uuid(), app=self.app)]
         ts = self.app.GroupResult(uuid(), subs)