The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DB::Pluggable::BreakOnTestNumber - Debugger plugin to break on Test::Builder-based tests

SYNOPSIS

    $ cat ~/.perldb

    use DB::Pluggable;
    use YAML;

    $DB::PluginHandler = DB::Pluggable->new(config => Load <<EOYAML);
    global:
      log:
        level: error

    plugins:
      - module: BreakOnTestNumber
    EOYAML

    $DB::PluginHandler->run;

    $ perl -d foo.pl

    Loading DB routines from perl5db.pl version 1.28
    Editor support available.

    Enter h or `h h' for help, or `man perldebug' for more help.

    1..9
    ...
      DB<1> b #5
      DB<2> r
    

DESCRIPTION

This debugger plugin extends the debugger's b command - used to set breakpoints - with the ability to stop at a specific test number. Andy Armstrong had the idea and wrote the original code, see http://use.perl.org/~AndyArmstrong/journal/35792.

METHODS

register

Registers the hooks.

plugin_init

Hook handler for the plugin.init hook. Does some initializations, surprisingly.

cmd_b

Hook handler for the db.cmd.b hook. Checks whether the command is of the form b #12 or b #12, 34, .... If so, it sets breakpoints to break as soon as the code leading up to the given test is encountered. For example, given b #12, it breaks as soon as test 11 has been finished. If it has handled the command, it returns the DB::Pluggable::Constants HANDLED. If not, it returns DECLINED.

If it handles the command, it enables the watchfunction().

watchfunction

Hook handler for the db.watchfunction hook. Checks the current test number from Test::Builder and instructs the debugger to stop if an appropriate test number has been reached.

DB::Pluggable::BreakOnTestNumber inherits from Hook::Modular::Plugin.

The superclass Hook::Modular::Plugin defines these methods and functions:

    new(), assets_dir(), class_id(), conf(), decrypt_config(),
    dispatch_rule_on(), do_walk(), init(), load_assets(), log(),
    plugin_id(), rule(), walk_config_encryption()

The superclass Class::Accessor::Fast defines these methods and functions:

    make_accessor(), make_ro_accessor(), make_wo_accessor()

The superclass Class::Accessor defines these methods and functions:

    _carp(), _croak(), _mk_accessors(), accessor_name_for(),
    best_practice_accessor_name_for(), best_practice_mutator_name_for(),
    follow_best_practice(), get(), mk_accessors(), mk_ro_accessors(),
    mk_wo_accessors(), mutator_name_for(), set()

TAGS

If you talk about this module in blogs, on del.icio.us or anywhere else, please use the dbpluggable tag.

VERSION

This document describes version 0.01 of DB::Pluggable::BreakOnTestNumber.

BUGS AND LIMITATIONS

No bugs have been reported.

Please report any bugs or feature requests to <bug-db-pluggable@rt.cpan.org>, or through the web interface at http://rt.cpan.org.

INSTALLATION

See perlmodinstall for information and options on installing Perl modules.

AVAILABILITY

The latest version of this module is available from the Comprehensive Perl Archive Network (CPAN). Visit <http://www.perl.com/CPAN/> to find a CPAN site near you. Or see <http://www.perl.com/CPAN/authors/id/M/MA/MARCEL/>.

AUTHOR

Marcel Grünauer, <marcel@cpan.org>

COPYRIGHT AND LICENSE

Copyright 2007-2008 by Marcel Grünauer

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.