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/"
|