diff --git a/ietf/submit/checkers.py b/ietf/submit/checkers.py index 5b928f043..b7d8d6026 100644 --- a/ietf/submit/checkers.py +++ b/ietf/submit/checkers.py @@ -9,6 +9,7 @@ import shutil import tempfile import StringIO +from collections import deque from django.conf import settings import debug # pyflakes:ignore @@ -18,6 +19,8 @@ from ietf.utils.models import VersionInfo from ietf.utils.pipe import pipe from ietf.utils.test_runner import set_coverage_checking +cmd_pipe_results = deque([], 4) + class DraftSubmissionChecker(): name = "" @@ -71,6 +74,8 @@ class DraftIdnitsChecker(object): Error and warning list items are tuples: (line_number, line_text, message) """ + global cmd_pipe_results + items = [] errors = 0 warnings = 0 @@ -80,6 +85,7 @@ class DraftIdnitsChecker(object): cmd = "%s %s %s" % (settings.IDSUBMIT_IDNITS_BINARY, self.options, path) code, out, err = pipe(cmd) + cmd_pipe_results.append((code, out, err)) if code != 0 or out == "": message = "idnits error: %s:\n Error %s: %s" %( cmd, code, err) log(message) @@ -204,6 +210,7 @@ class DraftYangChecker(object): cmd_version = VersionInfo.objects.get(command=command).version cmd = cmd_template.format(libs=modpath, model=path) code, out, err = pipe(cmd) + cmd_pipe_results.append((code, out, err)) if code > 0 or len(err.strip()) > 0 : error_lines = err.splitlines() assertion('len(error_lines) > 0') @@ -235,6 +242,7 @@ class DraftYangChecker(object): cmd = cmd_template.format(model=path, rfclib=settings.SUBMIT_YANG_RFC_MODEL_DIR, tmplib=workdir, draftlib=settings.SUBMIT_YANG_DRAFT_MODEL_DIR, ianalib=settings.SUBMIT_YANG_IANA_MODEL_DIR, ) code, out, err = pipe(cmd) + cmd_pipe_results.append((code, out, err)) if code > 0 or len(err.strip()) > 0: error_lines = err.splitlines() for line in error_lines: diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 1e8f3da05..c05be6a3e 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -31,6 +31,8 @@ from ietf.message.models import Message from ietf.name.models import FormalLanguageName from ietf.person.models import Person from ietf.person.factories import UserFactory, PersonFactory +from ietf.submit.checkers import cmd_pipe_results + from ietf.submit.models import Submission, Preapproval from ietf.submit.mail import add_submission_email, process_response_email from ietf.utils.mail import outbox, empty_outbox @@ -1037,6 +1039,7 @@ class SubmitTests(TestCase): q = PyQuery(r.content) # self.assertContains(r, u'The yang validation returned 1 error') + self.assertIn('illegal keyword', cmd_pipe_results[-2][2]) # m = q('#yang-validation-message').text() for command in ['xym', 'pyang', 'yanglint']: