Пример #1
0
 def configure(self, options, conf):
     super(TAP, self).configure(options, conf)
     if self.enabled:
         self.tracker = Tracker(
             outdir=options.tap_outdir, combined=options.tap_combined,
             streaming=options.tap_stream)
     self._format = options.tap_format
Пример #2
0
 def test_adds_not_ok(self):
     tracker = Tracker()
     tracker.add_not_ok('FakeTestCase', 'a description')
     line = tracker._test_cases['FakeTestCase'][0]
     self.assertEqual(line.status, 'not ok')
     self.assertEqual(line.description, 'a description')
     self.assertEqual(line.directive, '')
Пример #3
0
    def test_combined_results_in_one_file_tap_version_13(self):
        outdir = tempfile.mkdtemp()
        tracker = Tracker(outdir=outdir, combined=True)
        tracker.add_ok("FakeTestCase", "YESSS!")
        tracker.add_ok("DifferentFakeTestCase", "GOAAL!")

        tracker.generate_tap_reports()

        self.assertFalse(
            os.path.exists(os.path.join(outdir, "FakeTestCase.tap")))
        self.assertFalse(
            os.path.exists(os.path.join(outdir, "DifferentFakeTestCase.tap")))
        with open(os.path.join(outdir, "testresults.tap"), "r") as f:
            report = f.read()
        expected = inspect.cleandoc("""
            TAP version 13
            {header_1}
            ok 1 YESSS!
            {header_2}
            ok 2 GOAAL!
            1..2
            """.format(
            header_1=self._make_header("FakeTestCase"),
            header_2=self._make_header("DifferentFakeTestCase"),
        ))
        self.assertEqual(report.strip(), expected)
Пример #4
0
 def test_adds_skip(self):
     tracker = Tracker()
     tracker.add_skip("FakeTestCase", "a description", "a reason")
     line = tracker._test_cases["FakeTestCase"][0]
     self.assertTrue(line.ok)
     self.assertEqual(line.description, "a description")
     self.assertEqual(line.directive.text, "SKIP a reason")
Пример #5
0
 def test_adds_skip(self):
     tracker = Tracker()
     tracker.add_skip('FakeTestCase', 'a description', 'a reason')
     line = tracker._test_cases['FakeTestCase'][0]
     self.assertTrue(line.ok)
     self.assertEqual(line.description, 'a description')
     self.assertEqual(line.directive.text, 'SKIP a reason')
Пример #6
0
 def test_adds_not_ok_with_diagnostics(self):
     tracker = Tracker()
     tracker.add_not_ok("FakeTestCase",
                        "a description",
                        diagnostics="# more info\n")
     line = tracker._test_cases["FakeTestCase"][0]
     self.assertEqual("# more info\n", line.diagnostics)
Пример #7
0
 def test_adds_skip(self):
     tracker = Tracker()
     tracker.add_skip('FakeTestCase', 'a description', 'a reason')
     line = tracker._test_cases['FakeTestCase'][0]
     self.assertEqual(line.status, 'ok')
     self.assertEqual(line.description, 'a description')
     self.assertEqual(line.directive, '# SKIP a reason')
Пример #8
0
 def test_write_plan_first_combined(self):
     outdir = tempfile.mkdtemp()
     tracker = Tracker(streaming=False, outdir=outdir, combined=True)
     tracker.set_plan(123)
     tracker.generate_tap_reports()
     with open(os.path.join(outdir, "testresults.tap"), "r") as f:
         lines = f.readlines()
     self.assertEqual(lines[0], "1..123\n")
Пример #9
0
    def test_streaming_writes_plan(self):
        stream = StringIO()
        tracker = Tracker(streaming=True, stream=stream)
        tracker.combined_line_number = 42

        tracker.generate_tap_reports()

        self.assertEqual(stream.getvalue(), '1..42\n')
Пример #10
0
    def test_streaming_does_not_write_files(self):
        outdir = tempfile.mkdtemp()
        stream = StringIO()
        tracker = Tracker(outdir=outdir, streaming=True, stream=stream)
        tracker.add_ok("FakeTestCase", "YESSS!")

        tracker.generate_tap_reports()

        self.assertFalse(os.path.exists(os.path.join(outdir, "FakeTestCase.tap")))
Пример #11
0
    def test_does_not_write_header(self):
        stream = StringIO()
        tracker = Tracker(streaming=True, stream=stream, header=False)

        tracker.add_skip('FakeTestCase', 'YESSS!', 'a reason')

        expected = inspect.cleandoc(
            """ok 1 YESSS! # SKIP a reason""")
        self.assertEqual(stream.getvalue().strip(), expected)
Пример #12
0
    def test_generates_tap_reports_in_existing_outdir(self):
        outdir = tempfile.mkdtemp()
        tracker = Tracker(outdir=outdir)
        tracker.add_ok('FakeTestCase', 'I should be in the specified dir.')

        tracker.generate_tap_reports()

        tap_file = os.path.join(outdir, 'FakeTestCase.tap')
        self.assertTrue(os.path.exists(tap_file))
Пример #13
0
    def test_add_skip_writes_to_stream_while_streaming(self):
        stream = StringIO()
        tracker = Tracker(streaming=True, stream=stream)

        tracker.add_skip('FakeTestCase', 'YESSS!', 'a reason')

        expected = inspect.cleandoc("""{header}
            ok 1 - YESSS! # SKIP a reason
            """.format(header=self._make_header('FakeTestCase')))
        self.assertEqual(stream.getvalue().strip(), expected)
Пример #14
0
    def test_generates_tap_reports_in_new_outdir(self):
        tempdir = tempfile.mkdtemp()
        outdir = os.path.join(tempdir, "non", "existent", "path")
        tracker = Tracker(outdir=outdir)
        tracker.add_ok("FakeTestCase", "I should be in the specified dir.")

        tracker.generate_tap_reports()

        tap_file = os.path.join(outdir, "FakeTestCase.tap")
        self.assertTrue(os.path.exists(tap_file))
Пример #15
0
    def test_add_not_ok_writes_to_stream_while_streaming(self):
        stream = StringIO()
        tracker = Tracker(streaming=True, stream=stream)

        tracker.add_not_ok("FakeTestCase", "YESSS!")

        expected = inspect.cleandoc("""{header}
            not ok 1 YESSS!
            """.format(header=self._make_header("FakeTestCase")))
        self.assertEqual(stream.getvalue().strip(), expected)
Пример #16
0
    def test_individual_report_has_no_plan_when_combined(self):
        outdir = tempfile.mkdtemp()
        tracker = Tracker(outdir=outdir, combined=True)
        tracker.add_ok('FakeTestCase', 'Look ma, no plan!')
        out_file = StringIO()

        tracker.generate_tap_report(
            'FakeTestCase', tracker._test_cases['FakeTestCase'], out_file)

        report = out_file.getvalue()
        self.assertTrue('Look ma' in report)
        self.assertFalse('1..' in report)
Пример #17
0
    def test_streaming_writes_tap_version_13(self):
        stream = StringIO()
        tracker = Tracker(streaming=True, stream=stream)

        tracker.add_skip("FakeTestCase", "YESSS!", "a reason")

        expected = inspect.cleandoc("""
            TAP version 13
            {header}
            ok 1 YESSS! # SKIP a reason
            """.format(header=self._make_header("FakeTestCase")))
        self.assertEqual(stream.getvalue().strip(), expected)
Пример #18
0
    def test_write_plan_first_streaming(self):
        outdir = tempfile.mkdtemp()
        stream = StringIO()
        tracker = Tracker(outdir=outdir, streaming=True, stream=stream)
        tracker.set_plan(123)
        tracker.add_ok("FakeTestCase", "YESSS!")

        tracker.generate_tap_reports()

        self.assertEqual(
            stream.getvalue(), "1..123\n# TAP results for FakeTestCase\nok 1 YESSS!\n"
        )
        self.assertFalse(os.path.exists(os.path.join(outdir, "FakeTestCase.tap")))
Пример #19
0
    def test_add_ok_writes_to_stream_while_streaming(self):
        stream = StringIO()
        tracker = Tracker(streaming=True, stream=stream)

        tracker.add_ok('FakeTestCase', 'YESSS!')
        tracker.add_ok('AnotherTestCase', 'Sure.')

        expected = inspect.cleandoc("""{header_1}
            ok 1 - YESSS!
            {header_2}
            ok 2 - Sure.
            """.format(header_1=self._make_header('FakeTestCase'),
                       header_2=self._make_header('AnotherTestCase')))
        self.assertEqual(stream.getvalue().strip(), expected)
Пример #20
0
    def test_add_ok_writes_to_stream_while_streaming(self):
        stream = StringIO()
        tracker = Tracker(streaming=True, stream=stream)

        tracker.add_ok("FakeTestCase", "YESSS!")
        tracker.add_ok("AnotherTestCase", "Sure.")

        expected = inspect.cleandoc("""{header_1}
            ok 1 YESSS!
            {header_2}
            ok 2 Sure.
            """.format(
            header_1=self._make_header("FakeTestCase"),
            header_2=self._make_header("AnotherTestCase"),
        ))
        self.assertEqual(stream.getvalue().strip(), expected)
Пример #21
0
    def test_combined_results_in_one_file(self):
        outdir = tempfile.mkdtemp()
        tracker = Tracker(outdir=outdir, combined=True)
        tracker.add_ok('FakeTestCase', 'YESSS!')
        tracker.add_ok('DifferentFakeTestCase', 'GOAAL!')

        tracker.generate_tap_reports()

        self.assertFalse(
            os.path.exists(os.path.join(outdir, 'FakeTestCase.tap')))
        self.assertFalse(
            os.path.exists(os.path.join(outdir, 'DifferentFakeTestCase.tap')))
        with open(os.path.join(outdir, 'testresults.tap'), 'r') as f:
            report = f.read()
        expected = inspect.cleandoc("""{header_1}
            ok 1 - YESSS!
            {header_2}
            ok 2 - GOAAL!
            1..2
            """.format(header_1=self._make_header('FakeTestCase'),
                       header_2=self._make_header('DifferentFakeTestCase')))
        self.assertEqual(report.strip(), expected)
Пример #22
0
 def test_results_not_combined_by_default(self):
     tracker = Tracker()
     self.assertFalse(tracker.combined)
Пример #23
0
 def test_tracker_has_stream(self):
     tracker = Tracker()
     self.assertTrue(tracker.stream is None)
Пример #24
0
 def test_adds_not_ok(self):
     tracker = Tracker()
     tracker.add_not_ok('FakeTestCase', 'a description')
     line = tracker._test_cases['FakeTestCase'][0]
     self.assertFalse(line.ok)
     self.assertEqual(line.description, 'a description')
Пример #25
0
 def test_tracks_class(self):
     tracker = Tracker()
     tracker._track('FakeTestClass')
     self.assertEqual(tracker._test_cases.get('FakeTestClass'), [])
Пример #26
0
 def test_has_test_cases(self):
     tracker = Tracker()
     self.assertEqual(tracker._test_cases, {})
Пример #27
0
 def test_sanitizes_tap_file_path(self):
     tracker = Tracker()
     file_path = tracker._get_tap_file_path('an awful \\ testcase / name\n')
     self.assertEqual('an-awful---testcase---name-.tap', file_path)
Пример #28
0
 def test_get_default_tap_file_path(self):
     tracker = Tracker()
     file_path = tracker._get_tap_file_path('foo')
     self.assertEqual('foo.tap', file_path)
Пример #29
0
except ImportError:  # pragma: no cover
    from io import StringIO
import sys

from py.io import TerminalWriter
import pytest
from tap.formatter import format_as_diagnostics
from tap.tracker import Tracker

from pytest_tap.i18n import _

import yaml

# Because of how pytest hooks work, there is not much choice
# except to use module level state. Ugh.
tracker = Tracker()


def pytest_addoption(parser):
    """Include all the command line options."""
    group = parser.getgroup('terminal reporting', 'reporting', after='general')
    group.addoption(
        '--tap-stream',
        default=False,
        action='store_true',
        help=_('Stream TAP output instead of the default test runner output.'))
    group.addoption(
        '--tap-files',
        default=False,
        action='store_true',
        help=_(
Пример #30
0
 def test_tracker_does_not_stream_by_default(self):
     tracker = Tracker()
     self.assertFalse(tracker.streaming)