cukeq¶ ↑
This code is not in a usable state yet, contributions welcome!
This project will some time in the future provide a simple way of distributing Cucumber features across machines and collect the results.
Dependencies¶ ↑
You need to have an AMQP broker (like RabbitMQ) installed and running:
$ brew install rabbitmq $ ruby -rubygems bin/cukeq setup $ rabbitmq-server
If you want to use CukeQ with Subversion, you’ll need to install the Ruby bindings:
$ sudo apt-get install libsvn-ruby
Interface¶ ↑
$ cukeq master --broker URI --report-to URI --scm URI $ cukeq slave --broker URI
Master¶ ↑
-
REST service to trigger runs, payload:
{:features => ["file:line", "file:line", ...]}
-
Update from SCM.
-
Call Cucumber to get «exploded scenarios» (JSON) - (shell out to cucumber with custom formatter + –dry-run ??).
-
Create JSON payload
[ { :run_id => id, :scm => {:revision => 1234, :url => "git://..."} :exploded_scenario => ast(?) }, ... ]
-
Put payload on jobs queue.
-
Pull step result from result queue.
-
POST step result to –report-to URL, and/or let several reporters register themselves with the Master webapp (webhookish)
Slave¶ ↑
-
Pull job from job queue.
-
If job revision != last revision
* Update/checkout from SCM. * Restart Cucumber process with updated code files.
-
Invoke steps (through wire protocol?)
-
Put step/scenario/unit (undecided) result on result queue.
Other¶ ↑
-
All parsing is done on the master - the slave shouldn’t have to parse .feature files.
-
The slave should be able to invoke cucumber steps implemented in any of the supported languages
-
Need a (separate?) webapp to select which features to run and show the results as the step results come in. (a –report-to recipient)
-
Should also be able to trigger runs from command line (‘cukeq-runner file:line file:line`, prints `app/runs/«run id»`)
Note on Patches/Pull Requests¶ ↑
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright¶ ↑
Copyright © 2009 Jari Bakken. See LICENSE for details.