[ANN] heckle 1.2.0 Released

R

Ryan Davis

heckle version 1.2.0 has been released!

http://www.rubyforge.org/projects/seattlerb
by Ryan Davis and Kevin Clark

Heckle is a mutation tester. It modifies your code and runs your
tests to make sure they fail. The idea is that if code can be changed
and your tests don't notice, either that code isn't being covered or
it doesn't do anything.

Changes:

== 1.2.0 / 2007-01-15

* 2 major enhancements:
* Timeout for tests set dynamically and overridable with -T
* Class method support with "self.method_name"
* 3 minor enhancements:
* -b allows heckling of branches only
* Restructured class heirarchy and got rid of Base and others.
* Revamped the tests and reduced size by 60%.
* 1 bug fix:
* Fixed the infinite loop caused by syntax errors

http://www.rubyforge.org/projects/seattlerb
by Ryan Davis and Kevin Clark
 
R

Ryan Davis

heckle version 1.2.0 has been released!

OOPS! I must opened an old email file. 1.3.0 was released today, not
1.2.0.

== 1.3.0 / 2007-02-12

* 1 major enhancement:
* Unified diffs for mutatated methods
* 4 minor enhancements:
* Now returns exit status 1 if failed.
* Added a simple report at the end.
* Runs are now sorted by method.
* Autodetects rails and changes test_pattern accordingly.
* 2 bug fixes:
* Aborts when an unknown method is supplied.
* Escapes slashes in random regexps.
 
R

Ryan Davis

OOPS! I must have grabbed the wrong paragraph by mistake. We released
1.3.0 today, not 1.2.0.

== 1.3.0 / 2007-02-12

* 1 major enhancement:
* Unified diffs for mutatated methods
* 4 minor enhancements:
* Now returns exit status 1 if failed.
* Added a simple report at the end.
* Runs are now sorted by method.
* Autodetects rails and changes test_pattern accordingly.
* 2 bug fixes:
* Aborts when an unknown method is supplied.
* Escapes slashes in random regexps.

http://www.rubyforge.org/projects/seattlerb
by Ryan Davis and Kevin Clark
 
D

Daniel Schierbeck

heckle version 1.2.0 has been released!

http://www.rubyforge.org/projects/seattlerb
by Ryan Davis and Kevin Clark

Heckle is a mutation tester. It modifies your code and runs your
tests to make sure they fail. The idea is that if code can be changed
and your tests don't notice, either that code isn't being covered or
it doesn't do anything.

Hey Ryan, great stuff! I've just got one question: I'm adding some
methods to Integer, String, etc., and I'm having trouble heckling my
tests - when I do `heckle Integer' for example, it runs though *each*
method on Integer, not just the ones defined by myself. Is there a way
to restrict the scope of the heckling?


Cheers,
Daniel
 
J

Jan Friedrich

Daniel said:
tests - when I do `heckle Integer' for example, it runs though *each*
method on Integer, not just the ones defined by myself. Is there a way
to restrict the scope of the heckling?
heckle --help
Usage: heckle class_name [method_name]
[snip]

==> heckle Integer your_method

Regards,
Jan
 
D

Daniel Berger

OOPS! I must have grabbed the wrong paragraph by mistake. We released
1.3.0 today, not 1.2.0.

<snip>

Solaris 10
Sun Studio Compiler 11

djberge-/export/home/djberge/workspace-550>sudo gem install heckle
Install required dependency hoe? [Yn] Y
Install required dependency rubyforge? [Yn] Y
Successfully installed heckle-1.3.0
Successfully installed hoe-1.2.0
Successfully installed rubyforge-0.4.0

(and later...)

djberge-/export/home/djberge/src/ruby-580>heckle --help
cc: illegal option -Wall
/usr/local/lib/ruby/gems/1.8/gems/RubyInline-3.6.2/./inline.rb:408:in
`build': error executing cc -G -xO5 -xipo -xtarget=ultra2e -Wall -W -
Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wmissing-
noreturn -Werror -dalign -fns -xbuiltin=%all -xlibmil -xtarget=ultra2e
-xO5 -xipo -I /usr/local/lib/ruby/1.8/sparc-solaris2.10 -o "/export/
home/djberge/.ruby_inline/Inline_ParseTree_a424.so" "/export/home/
djberge/.ruby_inline/Inline_ParseTree_a424.c" : 256 (CompilationError)
Renamed /export/home/djberge/.ruby_inline/Inline_ParseTree_a424.c to /
export/home/djberge/.ruby_inline/Inline_ParseTree_a424.c.bad from /usr/
local/lib/ruby/gems/1.8/gems/RubyInline-3.6.2/./inline.rb:628:in
`inline'
from /usr/local/lib/ruby/gems/1.8/gems/ParseTree-1.7.0/lib/
parse_tree.rb:214
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/heckle-1.3.0/bin/../lib/
heckle.rb:2
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/heckle-1.3.0/bin/../lib/
test_unit_heckler.rb:4
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/heckle-1.3.0/bin/heckle:
4
from /usr/local/bin/heckle:18:in `load'
from /usr/local/bin/heckle:18

I upgraded to ParseTree 1.7.0 but that didn't seem to help. How do I
make this work with Sun's cc?

Thanks,

Dan
 
R

Ryan Davis

Hey Ryan, great stuff! I've just got one question: I'm adding some
methods to Integer, String, etc., and I'm having trouble heckling my
tests - when I do `heckle Integer' for example, it runs though *each*
method on Integer, not just the ones defined by myself. Is there a way
to restrict the scope of the heckling?

Other than the single method heckling that Jan points out, there is
little I can offer. Because of the way that ruby and ParseTree work,
heckle can't really tell what is extending a class and what isn't.
That is pretty much just how it works internally. We do a good job of
not bothering with the core methods, but YAML and a bunch of other
stuff get layered on through rubygems and such.

I'd suggest either the single method heckling route or moving your
code to a module and heckling that. We can extend heckle's single
method arg in the future to be more convenient. I want a persistent
heckle mode that knows what failed last time.
 
D

Daniel Schierbeck

Other than the single method heckling that Jan points out, there is
little I can offer. Because of the way that ruby and ParseTree work,
heckle can't really tell what is extending a class and what isn't.
That is pretty much just how it works internally. We do a good job of
not bothering with the core methods, but YAML and a bunch of other
stuff get layered on through rubygems and such.

I'd suggest either the single method heckling route or moving your
code to a module and heckling that. We can extend heckle's single
method arg in the future to be more convenient. I want a persistent
heckle mode that knows what failed last time.

How about, when heckle first runs the tests, recording what methods were
called, and then restricting the heckling to that? RCov should be able
to point out if a method isn't being covered at all, so heckle really
just needs to test the quality of the tests and implementation.


Cheers,
Daniel
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,780
Messages
2,569,611
Members
45,270
Latest member
TopCryptoTwitterChannels_

Latest Threads

Top