Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/meisterluk/taptaptap
Test Anything Protocol handling for cats (python 2.7)
https://github.com/meisterluk/taptaptap
Last synced: 1 day ago
JSON representation
Test Anything Protocol handling for cats (python 2.7)
- Host: GitHub
- URL: https://github.com/meisterluk/taptaptap
- Owner: meisterluk
- License: bsd-3-clause
- Created: 2014-03-16T21:56:29.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2018-07-03T11:47:17.000Z (over 6 years ago)
- Last Synced: 2025-01-02T21:48:33.694Z (7 days ago)
- Language: Python
- Homepage: http://lukas-prokop.at/proj/taptaptap/
- Size: 114 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
Documentation
=============:name: taptaptap
:author: Lukas Prokop
:date: Feb-Apr 2014, Jul 2018
:license: BSD 3-clause
:version: 1.2.1
:issues: http://github.com/meisterluk/taptaptap/issuesTest Anything Protocol handling for cats \*rawwr*
.. contents:: Table of contents
``taptaptap`` provides parsers, writers and APIs to handle the Test Anything Protocol (TAP). The implementation focuses on the most-current TAP version 13. TAP originates from the Perl community, but is a general format to document runs of testsuites. The reference to cats is just a pun for the noise of cats sneaking on floors.
Compatibility
-------------``taptaptap`` is only supposed to be working with python 2.7 (due to with statements and argparse).
It fully supports unicode.
It has been tested with Xubuntu 18.04 (Linux 4.15 x86_64) on 2.7.15rc1. A version for python 3.x is available as package ``taptaptap3``.Changelog
---------
:1.2.1: declare encoding in setup.py, README updates
:1.2.0: Bugfix: do not drop memo in TapBailout,
shebangs: "python" → "python2",
Bugfix: initialize next_number with 1,
Bugfix: issue #1
:1.1.3: tapmerge: support merging more than 2 TAP files,
support "-" to denote stdin
:1.1.2: TapWriter: do not reuse TapWriter instance in TapCreator
:1.1.1: TapWriter: support data handling in TapBailout
:1.1.0: procedural API writes to stderr not stdout,
bugfix TapCreator: Fix number of testcase determination
:1.0.5: bugfix procedural API: write version even if default version
:1.0.4: more tests, fix output/source bug in testsuite
:1.0.3: install_requires in setup.py
:1.0.2: introduce requirements.txt
:1.0.1: Unicode improvements
:1.0.0: First stable release, packaging improvements, full testsuite
:0.8.0: Unstable release, minimal testsuiteThe File Format
---------------A basic introduction is given by Wikipedia. The format was specified by the Perl community.
* `The Wikipedia article `_
* `Original specification `_
* `Test::Harness `_Testsuite & Examples
--------------------``taptaptap`` comes with a testsuite, which covers many special cases of the TAP format and tests the provided APIs. Please don't hesitate to report any issues_.
You can run the ``taptaptap`` testcases yourself using::
./run.sh
in the tests directory. The testsuite also shows some API usage examples, but I want to provide some here. The procedural API is well-suited if you are in the python REPL::
from taptaptap.proc import plan, ok, not_ok, out
plan(tests=10)
ok('Starting the robot')
not_ok('Starting the engine')
not_ok('Find the object', skip='Setup required')
not_ok('Terminate', skip='Setup required')out()
The output looks like this::
1..10
ok - Starting the robot
not ok - Starting the engine
not ok - Find the object # SKIP Setup required
not ok - Terminate # SKIP Setup requiredBe aware that the state is stored within the module. This is not what you want if you are outside the REPL. The ``TapWriter`` class is more convenient in this case::
import taptaptap
writer = taptaptap.TapWriter()
writer.plan(1, 3)
writer.ok('This testcase went fine')
writer.ok('And another one')
writer.ok('And also the last one')If you like python's generators, you want to use ``SimpleTapCreator``::
@taptaptap.SimpleTapCreator
def runTests():
yield True
yield True
yield Falseprint runTests()
Giving us::
1..3
ok
ok
not okOr take a look at the more sophisticated ``TapCreator``. If you are a real expert, you can use ``TapDocument`` directly, which covers all possibilities of TAP.
Command line tools
------------------You can also invoke ``taptaptap`` directly from the command line::
python -m taptaptap.__main__ some_tap_file_to_validate.tap
This command will parse the file and write the file in a way how it was understood by the module. The exit code indicates its validity:
0
Everything fine.
1
The TAP file is missing some testcases or contains failed testcases.
2
A bailout was raised. So the testing environment crashed during the run.Pickling
--------All objects are pickable.
When to use ``taptaptap``
-------------------------Does ``taptaptap`` suite your needs?
It does, if you are looking for a parser and validator for your TAP documents and you don't want to care about details and just need a gentle API.best regards,
meisterluk.. _issues: https://github.com/meisterluk/taptaptap