From 3fdc6d366215b4a27957c933b36f01bcb93f44f4 Mon Sep 17 00:00:00 2001 From: ryneeverett Date: Sat, 28 Jan 2023 00:42:38 -0500 Subject: [PATCH] simpletap: simplify to use parent `run` method Per the TODO, use `__init__` to override the stream. There don't seem to be any other substantial changes to the `run` method needed for TAP and I'm assuming the additional code in the upstream `run` has been added since this class was written. My primary motivation was to set `result.buffer = self.buffer` in the `run` method, which fixes the runner enough to be able to use `breakpoint()`. In addition, I updated the shebang in `tw-2189.t` for portability. --- test/simpletap/__init__.py | 39 ++++---------------------------------- test/tw-2189.t | 2 +- 2 files changed, 5 insertions(+), 36 deletions(-) diff --git a/test/simpletap/__init__.py b/test/simpletap/__init__.py index 218ea8a6c..72b1fe690 100644 --- a/test/simpletap/__init__.py +++ b/test/simpletap/__init__.py @@ -30,7 +30,6 @@ import os import sys import unittest -import warnings import traceback import inspect @@ -226,37 +225,7 @@ class TAPTestRunner(unittest.runner.TextTestRunner): """ resultclass = TAPTestResult - def run(self, test): - result = self._makeResult() - unittest.signals.registerResult(result) - result.failfast = self.failfast - - # TAP requires output is on STDOUT. - # TODO: Define this at __init__ time - result.stream = unittest.runner._WritelnDecorator(sys.stdout) - - with warnings.catch_warnings(): - if getattr(self, "warnings", None): - # if self.warnings is set, use it to filter all the warnings - warnings.simplefilter(self.warnings) - # if the filter is 'default' or 'always', special-case the - # warnings from the deprecated unittest methods to show them - # no more than once per module, because they can be fairly - # noisy. The -Wd and -Wa flags can be used to bypass this - # only when self.warnings is None. - if self.warnings in ['default', 'always']: - warnings.filterwarnings( - 'module', - category=DeprecationWarning, - message='Please use assert\w+ instead.') - startTestRun = getattr(result, 'startTestRun', None) - if startTestRun is not None: - startTestRun(test.countTestCases()) - try: - test(result) - finally: - stopTestRun = getattr(result, 'stopTestRun', None) - if stopTestRun is not None: - stopTestRun() - - return result + def __init__(self, stream=sys.stdout, *args, **kwargs): + if stream != sys.stdout: + raise ValueError("TAP requires output is on STDOUT.") + super().__init__(stream=stream, *args, **kwargs) diff --git a/test/tw-2189.t b/test/tw-2189.t index 5a23e5583..3184c2c9f 100755 --- a/test/tw-2189.t +++ b/test/tw-2189.t @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash . bash_tap_tw.sh task add "foo \' bar"