- Simple and well tested code
- All test failures are descriptive
- (TODO) Automatic test cleanup
- (DONE) Support for extensions
- (TODO) Support for parallel execution - low priority
- (TODO) Support for mocks - can be done via extensions
- Any failure that isn't descriptive, correct, and readable
- Any design choice that does not encourage clean code
Writing this section after previously giving up on this project...
Testing prolog currently is not that great. What is difficult:
- Descriptive error messages -- this can't be done without targeting a specific prolog's internals
- Managing side effects -- http, asserta, etc
- Working with modules -- needs a modern system and one that works well with DI and multiple environments
- Working with dependencies -- something like bundler/virtualenv/mix/yarn
My suggestions:
- Commit dependencies as git submodules
- Test only pure code
- Lightly test the system as a black box w/ prefered tech stack
- Write your own prolog, ISO prolog fails