Package: lava / 2019.01-5

0003-Fix-crash-with-older-python3-tap-versions.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
From: Neil Williams <neil.williams@linaro.org>
Date: Mon, 4 Feb 2019 19:35:55 +0000
Subject: Fix crash with older python3-tap versions
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

Closes https://git.lavasoftware.org/lava/lava/issues/211

Signed-off-by: RĂ©mi Duraffort remi.duraffort@linaro.org
---
 lava_rest_app/api.py   |  8 +++++++-
 lava_rest_app/tests.py | 26 ++++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/lava_rest_app/api.py b/lava_rest_app/api.py
index bbd7d3f..0ea3a8a 100644
--- a/lava_rest_app/api.py
+++ b/lava_rest_app/api.py
@@ -275,7 +275,13 @@ class TestJobViewSet(viewsets.ReadOnlyModelViewSet):
     def tap13(self, request, **kwargs):
         stream = io.StringIO()
         count = TestCase.objects.filter(suite__job=self.get_object()).count()
-        tracker = tap.tracker.Tracker(plan=count, streaming=True, stream=stream)
+        # Handle old versions of tap
+        # Should be removed once python3-tap has been backported to
+        # stretch-backports or once Stretch is no longer supported.
+        if hasattr(tap.tracker.Tracker, "set_plan"):
+            tracker = tap.tracker.Tracker(plan=count, streaming=True, stream=stream)
+        else:
+            tracker = tap.tracker.Tracker(streaming=True, stream=stream)
 
         # Loop on all test cases
         for suite in self.get_object().testsuite_set.all().order_by("id"):
diff --git a/lava_rest_app/tests.py b/lava_rest_app/tests.py
index ae8b099..ef255c4 100644
--- a/lava_rest_app/tests.py
+++ b/lava_rest_app/tests.py
@@ -19,6 +19,7 @@
 
 import json
 import pytest
+import tap
 import yaml
 
 from django.urls import reverse
@@ -282,6 +283,31 @@ class TestRestApi:
         )
         assert len(data["results"]) == 2  # nosec - unit test support
 
+    def test_testjob_tap13(self):
+        data = self.hit(
+            self.userclient,
+            reverse("api-root", args=[self.version])
+            + "jobs/%s/tap13/" % self.public_testjob1.id,
+        )
+        if hasattr(tap.tracker.Tracker, "set_plan"):
+            assert (
+                data
+                == """TAP version 13
+1..2
+# TAP results for lava
+not ok 1 foo
+ok 2 bar
+"""
+            )
+        else:
+            assert (
+                data
+                == """# TAP results for lava
+not ok 1 - foo
+ok 2 - bar
+"""
+            )
+
     def test_devicetypes(self):
         data = self.hit(
             self.userclient, reverse("api-root", args=[self.version]) + "devicetypes/"