hey there,
the short version:
right now Cucumber provides hooks Before and After to be run around
every
step, I have notice some use case where BeforeAll and AfterAll hooks
would
be useful.
are ther plans that they be provided? what you think would be the best
place
to do it (mother_step.rb)? any ideas about this could be accomplished?
the long version:
playing with culerity, which according to the author:
when running cucumber culerity spawns a new jruby process (that’s the
IO.popen call) - this way cucumber runs in plain old ruby (and you can
work
with your models for test setup etc.) and only celerity runs in jruby
from then on all communication has to go through pipes (in, out) so i
am
passing the browser config through those pipes to the newsly spawned
jruby
process
when a test fails the jruby process doesn’t get killed, that’s the
java
processes you see. don’t have a good idea how to solve this yet. for now
you
will have to kill those processes by hand.
that has improved since now there’s a first attempt for built in support
to
kill orfan java processes at:
culerity trick happen at step_definitions/common_celerity.rb Before and
After hooks, where you build and kill a spawned jruby around every step.
There it is easy to see the gain if we could do those in an around All
steps
manner
On Sun, Feb 15, 2009 at 2:21 PM, Joaquin Rivera P. [email protected] wrote:
hey there,
the short version:
right now Cucumber provides hooks Before and After to be run around every
step, I have notice some use case where BeforeAll and AfterAll hooks would
be useful.
are ther plans that they be provided? what you think would be the best place
to do it (mother_step.rb)? any ideas about this could be accomplished?
BeforeAll is equivalent to just calling code up in env.rb.
AfterAll is equivalent to registering a ruby at_exit hook in your
env.rb.
Of course they don’t have to go in your env.rb, you could put them in
another file, and then require them from env.rb or just let cucumber
auto-load them if they’re in your support/ directory.
processes you see. don’t have a good idea how to solve this yet. for now you
BeforeAll is equivalent to just calling code up in env.rb.
AfterAll is equivalent to registering a ruby at_exit hook in your env.rb.
Of course they don’t have to go in your env.rb, you could put them in
another file, and then require them from env.rb or just let cucumber
auto-load them if they’re in your support/ directory.
To illustrate what Zach is saying here is an example I used on the
wiki[1] before:
would
be useful.
are ther plans that they be provided? what you think would be the best
place
to do it (mother_step.rb)? any ideas about this could be accomplished?
BeforeAll is equivalent to just calling code up in env.rb.
AfterAll is equivalent to registering a ruby at_exit hook in your env.rb.
Yes it’s equivalent (largely), but it does make the intent more clear.
And expressing intent is a big part of Cucumber (and RSpec) IMHO.
The main problem w/ this for me is that before(:all) in RSpec means
something different here (before(:all) the examples in one group).
There is also a rarely used before(:suite), which is more akin to what
you’re proposing here. So if we add Before[… some scope …], I’d
prefer it be aligned (or at least not conflict) w/ RSpec’s meaning (so
ppl don’t have to remember which to use where).