Using set -e at the top level affects the entire script and makes it
difficult to work with commands that may legitimately return an error.
Regardless, set -e is still not so great for error checks because it
has some incredibly non-obvious semantics.
Better to just have correct error checks everywhere. Fortunately, this
is the case for almost all the existing test code -- only the testdir
creation needs fixing.