Code Monkey home page Code Monkey logo

spork's Introduction

Spork

SYNOPSIS:

Spork is Tim Harper’s implementation of test server (similar to the script/spec_server provided by rspec-rails), except rather than using the Rails constant unloading to reload your files, it forks a copy of the server each time you run your tests. The result? Spork runs more solid: it doesn’t get corrupted over time, and it properly handles modules and any voo-doo meta programming you may have put in your app.

Spork runs on POSIX systems using fork. It also runs on windows by pre-populating a pool of ready processes (referred to here as the “magazine” strategy).

Supported Testing Frameworks

  • Rspec

  • Cucumber

  • Test::Unit (via ‘gem install spork-testunit’)

And more to come! Vote for your favorite at github.com/timcharper/spork/issues

Supported Application Frameworks

Actually, Spork ~can~ work with any application framework. But, it ships with hooks and helpers to help make the experience much more “out of the box”

  • Rails

More can be added! Vote for your favorite at github.com/timcharper/spork/issues

INSTALL:

[sudo] gem install spork

alternatively:

git clone git://github.com/timcharper/spork.git
cd spork
gem build spork.gemspec
sudo gem install spork.gemspec

Usage

From a terminal, change to your project directory. If your spec_helper.rb file is not in the standard spec/ directory you will need to set an environment variable to declare where it is, the variable should be a relative, but full, path to the file (eg. my/non/traditional/spec/helper/file.rb).

Then, bootstrap your spec_helper.rb file.

spork --bootstrap

or

RSPEC_HELPER=./some_non_traditional_directory/spec_helper.rb spork --bootstrap

Next, edit spec/spec_helper.rb and follow the instructions that were put at the top.

Finally, run spork. A spec DRb server will be running!

spork

Diagnostic mode

Initially, you may find that a few files don’t reload automatically. This is because they are being loaded during Spork startup. To identify which project files are being pre-loaded, and why, run:

spork --diagnose
(or spork -d, for short)

It will output a lot of stuff. At the top you’ll find a summary of all project files loaded. Down below, the stack trace for each file (how it got loaded). Spork hooks into Rails and does some magic (TM) to prevent ApplicationController observers, etc from pre-loading. Similar hooks for other ruby frameworks may come as support demands.

Running specs over Spork

RSpec

To get the TextMate RSpec bundle to use spork, go to config->advanced->shell variables, and add:

TM_RSPEC_OPTS=--drb.

To run from the command line, use:

spec --drb spec/lib/my_spec.rb

Or, you could add the following flag to your spec.opts file.

--drb

Cucumber

Cucumber has DRb support (see wiki.github.com/aslakhellesoy/cucumber/spork-and-drb )

cucumber --drb

Use this as a guideline when “Sporking” your features/support/env.rb file

http://gist.github.com/123370

Some potential issues and ways to overcome them:

See wiki.github.com/timcharper/spork/troubleshooting

Kudos to

  • Ben Mabey - help with documentation, testing, suggestions, patches, and bringing Cucumber support.

  • David Chelimsky - for the fine RSpec testing framework, and the original rspec-rails spec_server implementation, which Spork has built upon.

  • Lead Media Partners - just for being an awesome place to work.

Spork © 2009 Tim Harper, released under the MIT license

spork's People

Contributors

timcharper avatar aslakhellesoy avatar milhouse avatar bmabey avatar cflipse avatar rdp avatar jacaetevha avatar mcmire avatar marcandre avatar scudco avatar e2 avatar garygreyling avatar pk avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.