[rspec-users] Extra Options to Heckle

Scott Taylor mailing_lists at railsnewbie.com
Sun Aug 19 04:25:21 EDT 2007

On Aug 19, 2007, at 2:52 AM, Robert Feldt wrote:

> > One alternative I thought of is to have a standard way to "promote"
> > options to other tools that spec invokes. Along the lines of:
> >
> > spec --heckle --options-heckle "--verbose --branches
> > MyModule::MyClass#my_method" ...
> >
> > and the argument to --options-heckle (or --options-rcov etc) would
> > simply be passed along in the call to heckle. This would cover more
> > situations with a single solution.
> >
> I've cooked up a patch for a tiny-little recursive parser in the
> command line parsing to deal with the promotion of options, so that
> you could do something like this:
> spec --heckle "MyClass --verbose --timeout 10"
> So far only the --verbose and --timeout options are used (and I'm not
> sure that they are even working yet, since I haven't used heckle on
> anything but an rspec project).
> I haven't worked more on the patch because I figured it would get
> rejected for the added complexity in command line parsing of  
> arguments.
> Robert: Maybe if you would like to take a look at my changes, I could
> email you what I have so far, and we could divide up work on the rest
> of the heckle options.  So far I have two, and there are only 8 or
> so, and at this point most of them look pretty trivial to implement.
> But why do you need to parse the contents of the string with the  
> options that should be passed onto heckle? The idea is that it  
> should simply be passed on. I'm probably missing something... ;)

Well - parsing in two regards:

1. On the command line, so that Ruby's OptionParser doesn't think  
that a "--verbose" is a command to rspec.  This alone isn't really an  
issue until you factor in spec.opts, which is read in as a string (so  
some detection of escaping must occur).
2. So that it can be used by the RSpec wrapper to Heckle.  Heckle has  
a base Heckle class, as well as a TestUnitHeckler class, which  
descends from the Heckle class.  All Hecker's (the command you run,  
not the class) option parser does is set some default class variables  
in the two classes (Heckle & TestUnitHeckler), so some of those class  
level setters would need to be changed, anyway.  This would probably  
be clearer just by looking at the code for heckle + the relevant code  
in rspec.


More information about the rspec-users mailing list