= ALMighty Test Services
:test: gometaliner
This repository consists of testing services provided by ALMighty.
== ALMighty Test Runner
=== Key features
* Running project build in different configurations in isolated sets of docker containers
Project itself depends on following tools, which are incorporated into the build process:
* link:https://glide.sh/[glide] for dependency management
* link:https://github.com/onsi/ginkgo[ginkgo] for testing
=== How to use it?
Stay tuned! Work in progress :) For the moment this repository consists of basic functionalities and infrastructure to write and test the code.
=== Start hacking [[hacking]]
You need to have following packages in place
* `go` (>= v1.6)
* `git`
* `make`
Assuming that you have all the link:https://golang.org/doc/install[Golang prerequisites] in place (such as `$GOPATH`), clone the repository first:
[source,bash]
----
$ git clone https://github.com/almighty/almighty-test-runner $GOPATH/src/github.com/almighty/almighty-test-runner
----
NOTE: Have a look how link:https://github.com/moovweb/gvm[Go Version Manager] can help you simplifying configuration and management of different versions of Go.
Then run the build by simply executing `make` from the root directory. This will perform following actions:
. Clean artifacts from the previous build
. Fetch or update dependencies using `glide`
. Compile and build binaries
. Run tests
When in doubt just `make help`.
=== Continuous Testing [[testing]]
In order to continuously run the tests whenever code change occur execute following command from the root directory of the project:
[source,bash]
----
$ ginkgo watch -r
----
and keep it running in the terminal.
=== Code analysis [[code-analysis]]
To perform static analysis of the code base we use link:https://github.com/alecthomas/gometalinter[`gometalinter`] tool. To install it run following commands:
[source,bash]
----
$ go get -u github.com/alecthomas/gometalinter && gometalinter --install
----
In order to execute the check simply invoke `make check` which effectively does:
[source,bash]
----
gometalinter --vendor --deadline 10s ./...
----