Development WorkflowContinuous IntegrationSandboxes

Developing Shake

I welcome contributions. Generally:

Development Workflow

You can load Shake up in ghci, starting from the root directory, which has a .ghci file to set things up. Develop, hit :reload to reload, then :test to run the test suite.

Individual test can be run interactively:

$ :main help
$ :main TEST_NAME test

Replace TEST_NAME with one of the tests listed.

I usually use ghcid when developing Shake.

Continuous Integration

Shake is currently tested by on Linux by Travis, and on Windows by Appveyor. The tests are designed to be aggressively comprehensive (testing things like performance and that documentation all type checks), so while they usually pass, do not be overly concerned if they are failing or if your patch breaks a test – serious issues will be spotted very quickly.


The tests do things like recompilation, which isn't particularly Cabal sandbox friendly. You can run some tests in the sandbox by doing:

$ cabal sandbox init
$ cabal install --only-dependencies
$ cabal repl shake-test
$ :main TEST_NAME test --no-report