Test infrastructure

Please include `tests/` as well, we want to make sure all of our tests are excesised.