Subject: | TAP changes |
Date: | Fri, 5 Jun 2015 15:52:59 -0700 |
To: | <bug-TAP [...] rt.cpan.org> |
From: | "Arthur Schwarz" <aschwarz1309 [...] att.net> |
These comments are made with respect to the TAP version 13 Specification
Please don't take the comments amiss. I intend to state them succinctly
without apology or caveat. This will, unfortunately, make them appear as a
criticism and that my view should prevail. Neither viewpoints are correct.
All of the comments can be viewed as "I'd like to see ...", or "gosh darn,
it would be nice if ...".
A clear exposition of the syntax for TAP statements should precede their use
and explanation. This will reduce ambiguity in interpretation. That having
been said, I think an interpretation of the current syntax is:
^1..N[ # comment]
^1..0[ # comment]
^ok[ [N [comment ][# directiver [comment]]
^not ok[ [N [comment ][# directiver [comment]]
^Bail out!
^#[ Diagnostic]
^ +---
^ *...
^ YAML comment
where ^ means the beginning of the line
' ' is exactly on blank
[ ] are optional entries
+ one or more
N a test line number
test line comments can not have an embedded #
I would be nice if this syntax was broadened
^<ws>*1..N[<ws>+comment]
^<ws>*1..0[<ws>+comment]
^<ws>*ok[<ws>+N[[<ws>+comment] | [<ws>+#[<ws>*comment]]]
^<ws>*not ok[<ws>+N[<ws>+comment]]
^<ws>*Bail out![<ws>*comment]
^<ws>*#<ws>*Diagnostic
^<ws>*---
^<ws>*...
^<ws>*YAML comment
where <ws> is ' ' or \t
* is 0 or more
+ one or more
| is alternation (this or that)
(I can provide syntax equations if this suits your purposes).
There are several reasons this alternate may be desirable:
1: Checking for TAP Protocol compliance is burdensome.
Every violation of a spacing requirement makes the statement
incorrect. This is needless if the standard is changed
so that if it says that if one <ws> is valid then many
can be used.
2: Requiring that TAP statement begin in column one is
Burdensome to check and has no useful functionality.
3: Allowing both a test line and a Directive comment seems
Counter-intuitive. It seems more sensible to either have
a comment followed by a Directive, or a Directive followed
by a comment, but not both.
3: The requirement that one or more <ws> characters follow a
Directive prefix is unnecessary (but attractive).
In the 'new' syntax the following tests are acceptable.
1..N
ok
not ok 123
# Diagnostic
# Diagnostic
ok comment
ok 123 # SKIP comment
---
jabbering YAML
YAML
...
ok N comment # SKIP is not acceptable
The use and placement of 1..N needs to be better addressed.
1: If 1..N occurs before the test lines then ok 123 can be verified.
2: If 1..N follows all test line then ok 123 can not be check using
a single pass analyzer. Output results have to be deferred.
3: If 1..N is missing then no checks are possible. This can't
be determined until all test lines are input since 1..N may
be at the end of the TAP Protocol file.
Building an analyzer becomes more difficult 1..N can be missing
or at the end of the file. If deference is to be given to the TAP
output process then maybe 1..N should be removed as a requirement.
Some words should be stated concering the placement of Diagnostics.
For example:
Can zero or more Diagnostics precede the first test line
Can zero or more Diagnostics follow the last test line
Is there a relationship between a Diagnosic and a preceding
or following test line which has to be observed.
The same comments apply to YAML code.
There are no examples of an inline YAML block. In particular the
syntax specifies that the only format for a YAML block is:
ssss---
and .../
Do you mean: /^[[:blank:]]+---/ and /^[[:blank:]]+.../
The meaning of TODO has not been stated. My interpretation is that
it is a SKIP.
The use of blank lines is not stated.
I think that the current specification is very clear (except
TODO) and simple. I am building a little TAP converter and,
for the most part, have little difficulty. But, protocol
checking would be easier if some of the 'start on column' one
conditions where lifted, and a better explanation of 1..N was
included.
thanks
art
The failure of the past is the challenge of the present and the success of
the future.