File: README.md

package info (click to toggle)
litmus 0.17-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,252 kB
  • sloc: ansic: 28,924; xml: 4,291; sh: 768; makefile: 594
file content (125 lines) | stat: -rw-r--r-- 3,671 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125

[![Build and test](https://github.com/notroj/litmus/actions/workflows/ci.yml/badge.svg)](https://github.com/notroj/litmus/actions/workflows/ci.yml)

# litmus

_litmus_ is a WebDAV server protocol compliance test suite.

GitHub: https://github.com/notroj/litmus | Web: https://notroj.github.io/litmus/

Tests include:

* 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

Bugs, feature requests and patches can be sent in via the GitHub
repository: https://github.com/notroj/litmus

## Usage

_litmus_ comprises of a set of test suites as separate executables: each
program takes a URL on the command-line, optionally followed by
username and password.  To run all the suites from a built _litmus_
tree, use

~~~
 $ make URL=http://dav.example.com/path/ check
~~~

Where http://dav.example.com/path/ is a DAV-enabled collection.  _litmus_
must be able to create a new collection called `litmus` at that
location.  The Makefile variable 'CREDS' can also be defined to be a
username/password separated by strings.  e.g. if you have a user 'jim'
defined with password '2518', use:

~~~
 $ make URL=http://dav.example.com/path/ CREDS="jim 2518" check
~~~

To aid debugging, _litmus_ adds a header `X-Litmus` to every request
made, which includes metadata about the test being run. Some tests
require a second session, for which requests will have a header named
`X-Litmus-Second` instead.

After running a test suite, the file `debug.log` includes a full neon
debugging trace (unless neon or _litmus_ was configured without
debugging enabled).

To use after installation is complete (`make install`), run the
`litmus` script, passing in a URL, optionally followed by the
username/password.  For instance:

~~~
 $ litmus http://dav.example.com/path/
~~~

or

~~~
 $ litmus http://dav.example.com/path/ jim 2518
~~~

## Test options

To use a more compact output format, use the `--quiet` option. By
default, _litmus_ uses colour in the output if the terminal is a
TTY. To override the default, use either the `--colour` or
`--no-colour` options to forcible enable or disable use of colour,
respectively.

To use an HTTP proxy server, pass the --proxy argument using an HTTP
URI for the proxy server, for example:

~~~
 $ litmus --proxy=http://proxy.example.com:3128 http://dav.example.com/path/ jim 2518
~~~

Alternatively, if `neon` is built to use the `libproxy` library
(https://github.com/libproxy/libproxy), then the system-defined proxy
environment can be used:

~~~
 $ litmus --system-proxy http://dav.example.com/path/ jim 2518
~~~

## SSL/TLS

Since version 0.17 _litmus_ trusts the default TLS CA certificates
configured in the SSL library. If you want to run against a server
with a self-signed or otherwise untrusted server certificate, use the
--insecure option, e.g.

~~~
 $ litmus --insecure https://dav.example.com/path/
~~~

`litmus` can use a TLS client certificate, which must be provided in
PKCS#12 format. e.g.:

~~~
 $ litmus --client-cert=client.p12 https://dav.example.com/path/
~~~

## Copyright and licensing

litmus is licensed under the GNU GPL; see COPYING for full details.

~~~
litmus is Copyright (C) 1999-2025 Joe Orton
~~~