whereto/doc/source/user/index.rst
Doug Hellmann 7e37a20c79 add support for testing paths are not redirected
Add support for tests that ensure no existing rule redirects by having
the test assume a response code of 200.

Change-Id: I2aa1ada7e85c5e8066fdae634a4cf38b64ec821b
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2017-10-11 14:58:49 -04:00

1.7 KiB

Users guide

To test a set of redirects, whereto needs the input .htaccess file and another input file with test data.

The .htaccess file should contain Redirect and RedirectMatch directives. Blank lines and lines starting with # are ignored. For example, this input includes 6 rules:

# Redirect old top-level HTML pages to the version under most recent
# full release.
redirectmatch 301 ^/$ /pike/
redirectmatch 301 ^/index.html$ /pike/
redirectmatch 301 ^/openstack-projects.html$ /pike/projects.html
redirectmatch 301 ^/language-bindings.html$ /pike/language-bindings.html

# Redirect docs.openstack.org index.html subpage pointers to main page
redirect 301 /install/ /pike/install/
redirect 301 /basic-install/ /pike/install/

# this is gone and never coming back, indicate that to the end users
redirect 410 /nova/latest/man/nova-cert.html

The test data file should include one test per line, including 3 parts: the input path, the expected HTTP response code, and the (optional) expected output path. For example:

/ 301 /pike/
/ 301 /pike
/install/ 301 /pike/install/
/no/rule 301 /should/fail
/nova/latest/man/nova-cert.html 410

# verify that this path is not redirected
/pike/index.html 200

The output from whereto includes a report of any tests that do not match, including if no rules match and if multiple rules match. For example:

$ whereto -q --ignore-untested .htaccess test.txt

Test on line 2 did not produce expected result: / 301 /pike
  [7] redirectmatch 301 ^/$ /pike/
No rule matched test on line 4: /no/rule 301 /should/fail

2 failures