litmus - WebDAV server protocol compliance test suite
litmus is a WebDAV server test suite, which
aims to test whether a server is compliant with the WebDAV protocol as
specified in RFC2518; current tests cover:
- OPTIONS for DAV: header
- PUT, GET with byte comparison
- MKCOL
- DELETE (collections, non-collections)
- COPY, MOVE using combinations of:
- overwrite t/f
- destination exists/doesn't exist
- collection/non-collection
- Property manipulation and querying:
- set, delete, replace properties
- persist dead props across COPY
- namespace handling
- Locking
- attempts to modify locked resource (as lock owner, not owner)
- shared/exclusive locks
- lock discovery
- collection locking
- lock refresh
Note that a server which passes all these tests will not
necessarily work with any real DAV clients; though the chances are
good. litmus is built using the neon library, so supports
digest and basic authentication, TLS/SSL, and proxy servers.
Current release
Development release: 0.13
litmus has been tested on Linux, Solaris, FreeBSD, CygWin, and many
other Unix systems. Please send any feedback to the
mailing list
at litmus@lists.manyfish.co.uk.
- Changed tests:
- locks: owner_modify checks that PROPPATCH works against a locked
resource (thanks to Javier Godoy)
- Support PKCS#12 client cert with --client-cert/-c (Alejandro Alvarez Ayllon)
- Update to neon 0.29.6.
- Changed tests:
- locks: remove DELETE from unmapped URI LOCK/DELETE/UNLOCK sequence
- locks: fail if LOCK gives a lockscope which does not match that requested
- props: use real URIs for the property namespaces
- New tests:
- props: unmapped_lock (Henrik Holst)
- basic: put_no_parent
- Changed tests:
- props: propvalnspace - use a valid URI in the 'foo' element
- Update to neon 0.28.3; support neon 0.25.x->0.28.x
- New tests from Julian Reschke:
- props: test for correct PROPPATCH propertyupdate evaluation order
- copymove: test for "Depth: 0" COPY of collection
- Test URL is no longer path-escaped internally.
- Update to neon 0.26.3.
- Add another test for handling of unknown state tokens in an If: header.
- Update to neon 0.25.4.
- Fix possible crashes in lock discovery.
- Update to neon 0.25.3.
- Fix VPATH builds (Mike Castle).
- Fix build with bundled expat.
- Update to neon 0.25.2.
- Fix build on Mac OS X.
- Fixes for the "largefile" test suite.
- Add check for DELETE safety with #fragment in Request-URI.
- Add some basic collection locking tests.
- Correct fail_complex_cond_put to really send an invalid etag as intended,
thanks to Tod Sambar.
- Describe the conditional PUT tests in the FAQ.
- Add test for PROPFIND extensibility rules in request body.
- Skip the 'expect100' in the 'http' suite for an SSL session.
- Correct fix for comparison of absolute URIs in PROPFIND responses,
thanks to Thomas Kemmer.
- Fix some segfaults when some lock tests fail (thanks to Thomas Kemmer).
- Fix comparison of hrefs in PROPFIND responses containing absolute https URI.
- Run conditional PUT tests against exclusive-locked resource.
- Fix build when configured without SSL support.
- Fix build on FreeBSD.
- Fix build with bundled copy of expat.
- Tweaks to conditional PUT tests (Julian Reschke).
- New tests submitted by Julian Reschke:
- check handling of high Unicode values in property values
- check handling of resource URIs including non-ASCII characters
- Implement Julian's conditional PUT tests, testing If: headers with
various combinations of lock-tokens and etags.
- Add test for Apache 2.0 namespace handling bug #14969.
- Fix use of proxy with non-default port.
- Persistent connections are enabled by default.
- Updated to neon 0.23.0:
- many SSL fixes and improvements
- IPv6 support when getaddrinfo() is detected
- Updated to neon 0.20.0:
- better handling of LOCK responses for shared locks; use the lock token
from the Lock-Token header (not really in 0.6 as claimed).
- Better chance of compiling on cygwin.
- Fixes for cygwin (thanks to Julian Reschke).
- Improved failure messages.
- If a LOCK fails, dependant tests will be skipped.
- Add documentation to 'FAQ' on some of the tests which failed with
mod_dav 1.0.2.
- Upgrade to neon 0.20.0-dev:
- better handling of LOCK responses for shared locks; use the lock token
from the Lock-Token header.
- RFC2518 compliance fix: use absoluteURIs in If: headers
- Fix authentication.
- Add support for proxy servers using `--proxy=hostname:port' option.
- from build tree, use 'make OPTS="--proxy=hostname:port" URL="..." check'
- Add -k/--keep-going option to 'litmus' script, to have testing
continue even after a test program fails.
- Renamed project from "neon-interop" to "litmus".
- Greatly improved error messages for test failures throughout.
- Add locking tests (portions from Chris Sharp):
- modifying a locked resource as and not as lock owner
- shared and exclusive locks, lock discovery
- lock doesn't follow COPY
- Tests are run in a new, empty collection: eliminate problems caused
by left-over files from previous failed runs.
- Add tests for MKCOL on plain resource, with strange body.
- Each request will have a request header 'X-Litmus' giving the test
number and description, to aid debugging using network trace tools.
- Tests separated into several executables. Can easily run a subset of
tests now using e.g. 'make TESTS=locks URL=http://blah/ check'
- Add 'litmus' wrapper script and 'make install' target.
- Based on neon 0.18: brings portability fixes, etc.
- Add tests for "empty namespace" bugs found in mod_dav by Julian Reschke.
- Add tests for properties in many namespaces.
Changes in version neon-interop
0.2, 15 October 2001
- Catch up with neon 0.17 test framework, beautify output.
Changes in version neon-interop
0.1, 12 August 2001
- Added check for "Expect: 100-continue" support.
Changes in version neon-interop-0.0
- Initial version used at the WebDAV Interoperability Event in
UC Santa Cruz, July 19-20th 2001.