Writing Tests for PRoot / CARE
Here are the steps required for adding a new test script.
Test Types
There are more than one type of test:
- test programs written in C
 - POSIX shell scripts
 
This post will highlight the second option, since there are more of them in the testsuite currently.
Note: if you take a peek at test/GNUmakefile, you will see the rules for compiling test programs; however, several of these tests names are hard-coded in this file.
Example Script
Copy the following contents to the test/test-example.sh file:
#!/bin/sh
# Test description here
set -eu
# Check for test dependencies
for cmd in file; do
  if ! command -v "${cmd}" > /dev/null; then
      exit 125
  fi
done
# Check for PRoot binary
if [ ! -e "${PROOT}" ]; then
    exit 125
fi
# Explicitly define test case here
if [ 1 ]; then
    exit 1 # this test will fail
fi
Running a Single Test
To run a single test, prepend check- to the filename of the test you wish to run.
make -C test check-test-example.sh # run single test
Running Entire Testsuite
make -C test
Exit Codes
| Code | Status | 
|---|---|
| 0 | ok | 
| 125 | skipped | 
| * | FAILED | 
Note: these are defined in test/GNUmakefile.
Troubleshooting
The testsuite can be run with V=1 for more verbose output.
make -C test check-test-example.sh V=1
Test Requirements
Per the release guide,
All shell scripts must pass shellcheck.
shellcheck test/check-test-example.sh