Continuous integration

## Tests

* Spec suite based on [Minitest]
* Using specs with `expect()` syntax ([`minitest-spec-expect`] gem)
* Reports code coverage analysis to [Code Climate]
   * Analyses pull requests and adds a comment with the resulting code coverage
* Fails the build for <100% code coverage (measured using [SimpleCov])

[Minitest]: <https://github.com/seattlerb/minitest>
[`minitest-spec-expect`]: <https://github.com/davejachimiak/minitest-spec-expect>
[Code Climate]: <https://codeclimate.com>
[SimpleCov]: <https://github.com/colszowka/simplecov>



## Code quality

* [Cane] to fail the build if any code quality issues are detected
* [Code Climate] web service hook set up on GitHub to analyse pushes

[Cane]: <https://github.com/square/cane>



## Documentation

* [Inch] to give visibility into documentation quality
* Fail the build if any objects are missing documentation

[Inch]: <http://trivelop.de/inch>



## Guard

* [Guard] configuration to run tests when necessary
   * Monitors source files, re-runs relevant tests on change
   * Monitors [Bundler]'s Gemfile and [RubyGem specification] to re-run `bundle install` when dependencies change

[Guard]: <https://github.com/guard/guard>
[Bundler]: <http://bundler.io>
[RubyGem specification]: <http://guides.rubygems.org/specification-reference>