GRDDL Tests

STATUS: These tests are in development; until a test is approved by WG decision, it is subject to change without notice.

Dan Connolly
$Revision: 1.42 $ of $Date: 2007/03/13 21:09:26 $

Each test has an input document and an output document; the output document is in RDF/XML and represents a GRDDL result (perhaps the maximal result?) of the input document.

The test collection is separated into parts:

  1. This part covers section 2 on using GRDDL with XML. These test don't involve namespace documents, so they're easy to run offline, and they work with other base URIs even though they have relative URI references.
  2. For namespace/profile document tests, see part 2.
  3. For tests of robustness of implementations in the face of anomalies, see part 3.

Pending tests:

Notes from the spec on pending tests

The example in the well-formed XML section is taken from #title_author in the GRDDL WG tests, part 2. It would be nice to have a mechanical check that it stays in sync.

The protocol trace discusses http://www.w3.org/2003/g/po-doc.xml, which should probably perhaps move to the WG test suite or sync with it somehow. http://www.w3.org/2003/g/embeddedRDF and http://www.w3.org/2003/g/glean-profile should get some testing too. The Jena GRDDL Reader test area, especially security4, security6 (as of jjc's comment), are noteworthy re security issues

Example/advocacy/application test ideas

An example homepage with Dublin Core, GeoURL, RSS, Creative Commons, etc. demonstrates several transformations and dialects.

These are potential primer chapters, too:

Manifest Format

This test collection uses an RDF vocabulary for manifests developed for the RDF Test Cases Recommendation. The aboutTests transformation relates dialect in the HTML representation to an RDF graph (via RDF/XML).

Test suite version control

The http://www.w3.org/2001/sw/grddl-wg/td/ web repository is backed by the usual W3C CVS setup. If you don't have CVS commit access, note Harry's offer to help from our 10 Jan test maintenance discussion.

Dan maintains an experimental decentralized repository, backed by mercurial/hg. See also: Access control and version control: an over-constrained problem? by connolly on Tue, 2006-04-25. The CVS commits get added to the hg repository using a bleeding-edge version of convert-repo (details), like this:

connolly@homer ../hg-coll[572] python2.4 ~/hg-coll/mercurial/contrib/convert-repo /home/connolly/pub/WWW/2001/sw/grddl-wg/td grddl-tests

This is supposed to support going the other direction better than cvs20hg and the cvscommit hg extension, introduced in a 2006-03-24 21:13:45 message from Simon 'corecode' Schubert.

How to run the tests

We provide testft.py, a test driver, based on rdflib 2.3.3 and 4suite, specifically 4Suite-XML-1.0.tar.gz. Run it a la:

$ python testft.py --run your_grddl_impl testlist1.rdf >earl_out.rdf
All tests were passed!

It has options for --debug and such; invoke it with no arguments for details.

EARL tester and subject

In addition to various diagnostics on stderr, the test harness writes to stdout some RDF data: an EARL assertion about each test it runs.

To tell it about the person running the tests and the software project being tested, point it at an ID in a foaf file and a DOAP file:

$ python testft.py \
  --tester 'dan.rdf#dwc' \
  --project 'grddlft.rdf#grddl_py' \
  --run your_grddl_impl \
  testlist1.rdf >earl_out.rdf
 All tests were passed!

HTTP tracing

We find TCPWatch useful for debugging HTTP protocol interactions. If you start TCPWatch a la:

 $ python tcpwatch.py -p 6543 &

then you can use it as a proxy:

 $ http_proxy=http://127.0.0.1:6543 python testft.py \
     --run your_grddl_impl testlist1.rdf

Transition from earlier work

The #title_author test has been moved to part 2 of the test collection, since it uses an absolute link and hence needs online access or a cache.

These tests are intended to obsolete the older dev.w3.org tests, from Feb 2005 announcement, once all of those are ported over:

See also Dom's message Re: GRDDL test howto? of 23 Aug 2006.