.gitignorecommits | blame
Makefilecommits | blame
READMEcommits | blame
check_test_repo.shcommits | blame
common.shcommits | blame
prepare_test_repo.shcommits | blame
repo_read.shcommits | blame
repo_read_access_denied.shcommits | blame
repo_write.shcommits | blame
repo_write_empty.shcommits | blame
repo_write_protected.shcommits | blame
request_bad.shcommits | blame


Running server regression tests requires some manual system preparation.

Two dedicated user accounts must be created. Password login
for these users should be disabled.

 $ doas useradd -m got
 $ doas useradd -m gotdev

The above user names correspond to defaults used by the test suite.
If needed, the defaults can be overridden on by passing values for the
following variables to make(1): GOTD_USER, GOTD_DEVUSER, GOTD_GROUP

An SSH key must be added to ~gotdev/.ssh/authorized_keys, such that the
following command succeeds non-interactively:

 $ ssh gotdev@

The login shell of the gotdev user should be set to gotsh(1).
It is recommended to run the test suite using a locally built gotsh binary,
rather than /usr/local/bin/gotsh (which might be using messages in an
out-of-date format on the gotd socket).
For this to work, $HOME/bin/gotsh must be added to /etc/shells first.

 $ doas usermod -s $HOME/bin/gotsh gotdev

If adding this file to /etc/shells is a problem, a locally built gotsh
binary can be made available in the command search path of the gotdev
user under the names git-receive-pack and git-upload-pack. When made
available in a non-standard PATH directory such as ~gotdev/bin, the
gotdev user's PATH must be set appropriately in sshd_config (see below).

By default, tests will run the gotd binary found in ~/bin.
If sources were unpacked from a Got release tarball then tests will run
/usr/local/bin/gotd by default instead.

The test suite creates the corresponding gotd socket in ~gotdev/gotd.sock.
To make this work, the GOTD_UNIX_SOCKET variable must be set by sshd
when the gotdev user logs in. The following should be added to the file

 Match User gotdev
    SetEnv GOTD_UNIX_SOCKET=/home/gotdev/gotd.sock
    # The following line is not needed when gotsh is used as login shell:
    SetEnv PATH=/home/gotdev/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
    DisableForwarding yes
    PermitTTY no

sshd must be restarted for configuration changes to take effect:

 $ doas rcctl restart sshd

The server test suite can now be run from the top-level directory:

 $ doas pkg_add git  # if not already done
 $ doas make server-regress

The suite must be started as root in order to be able to start and stop gotd.
The test suite switches to non-root users as appropriate.