W3C home > Mailing lists > Public > public-wai-ert@w3.org > September 2011

Test Anything Protocol (TAP)

From: Christophe Strobbe <christophe.strobbe@esat.kuleuven.be>
Date: Wed, 14 Sep 2011 15:55:41 +0200
Message-Id: <>
To: public-wai-ert@w3.org

I have an action item [1] to look into the Test Anything Protocol (TAP)
TAP has been part of Perl since 1987 (i.e. the first version of Perl) 
and has been implemented in other languages, for example C [2], Java 
[3] and PHP web frameworks such as Symphony [4]. In spite of this, 
there is no formal specification for the protocol; the behaviour of 
Perl's Test::Harness module is the de-facto TAP standard, along with 
a writeup of the specification on CPAN [5].
The CPAN documentation describes TAP as a "simple text-based 
interface between testing modules such as Test::More and the test 
harness Test::Harness."
It is "a protocol to allow communication between unit tests and a 
test harness. It allows individual unit tests (TAP producers) to 
communicate test results to the testing harness in a 
language-agnostic manner. Tests can indicate success or failure, mark 
tests as unimplemented or skipped, and provide additional information 
to help debug failed tests. Unlike other testing systems, it can also 
indicate missing tests and duplicated tests." [6]

An example test session may look like [7]:

  ok 1 - Beverage::Coffee loaded.
  ok 2 - Cup creation.
  ok 3 - Kettle location.
  ok 4 - Boiling water.
  ok 5 - Black coffee.
  not ok 6 - Milk location.
  # Milk not found in fridge.
  ok 7 - White coffee. # Skipped, no milk.
  ok 8 - Espresso # Skipped, espresso machine not available.
  not ok 9 - Non-dairy creamer # TODO, unimplemented.

The line "1..9" tells the test suite to expect 9 tests. The first 8 
tests pass, the last one fails.
My current understanding is that this can be logged, so there is no 
XML or RDF-based report format, unless the TAP consumer converts the 
output to something else. A prosal for an output format is YAMLish, a 
subset of YAML [8] (the same page also discusses JSON).

With regard to Sean B. Palmer's questions in Bug 031 [101]:

Q: Does EARL replicate their efforts?
A: Based on this first brief look, I don't think so.

Q: Do their efforts replicate EARL?
A: Same as previous question.

Q: Why do TAP and xUnit XML have things that EARL doesn't?
A: Which things does TAP have that EARL doesn't? TAP is a protocol, 
EARL is a report format. It seems that a TAP consumer could be 
written that produces EARL.
There may be a few things in TAP that we don't have in EARL, for 
example TAP knows something called "Bail out!", i.e. when a test is 
aborted unexpectedly and the TAP consumer should ignore the rest of 
the TAP syntax [102]. Is this something we should add to EARL or that 
should be left to other vocabularies or extensions?
TAP also knows comments [103], which can be used for "diagnostics" 
[104]. I think this can be mapped to the info property  [105].

Q: Has there been any contact between the groups of people working on 
each of these three?
A: ?

Q: Are there other languages which may have a similar bearing on 
EARL? Why wasn't this covered in the Requirements for the Evaluation 
and Report Language (EARL) 1.0 document?
A: ?

[1] <http://www.w3.org/2011/09/07-er-minutes.html#action02>
[2] <http://www.eyrie.org/~eagle/software/c-tap-harness/writing.html>
[3] tap4j: <http://tap4j.org/junit_support.html>
[4] A Gentle Introduction to symfony: Chapter 15 - Unit And 
Functional Testing: 
[5] Test::Harness::TAP : 
[7] <https://www.socialtext.net/perl5/testing#tap_test_anything_protocol>
[8] <http://testanything.org/wiki/index.php/YAMLish>

[101] Bug 031: Relationship to TAP and xUnit XML: 
[104] see for example 
[105] info Property: <http://www.w3.org/TR/EARL10/#info>

Best regards,


Christophe Strobbe
K.U.Leuven - Dept. of Electrical Engineering - SCD
Research Group on Document Architectures
Kasteelpark Arenberg 10 bus 2442
B-3001 Leuven-Heverlee
tel: +32 16 32 85 51
Twitter: @RabelaisA11y
Open source for accessibility: results from the AEGIS project 
Please don't invite me to Facebook, Quechup or other "social 
networks". You may have agreed to their "privacy policy", but I haven't.
Received on Wednesday, 14 September 2011 13:56:29 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:55:59 UTC