---
name: "Test2::Todo"
section: "3pm"
platform: "linux"
package: "libtest-simple-perl"
version: "1.302210-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Test2::Todo/3pm"
---

# Test2::Todo(3pm)

TODO extension for Test2.

## NAME

Test2::Todo - TODO extension for Test2.

## DESCRIPTION

This is an object that lets you create and manage TODO states for tests. This is an extension, not a plugin or a tool. This library can be used by plugins and tools to manage todo states.

If you simply want to write a todo test then you should look at the `"todo"` function provided by Test2::Tools::Basic.

## SYNOPSIS

```
    use Test2::Todo;
    # Start the todo
    my $todo = Test2::Todo->new(reason => 'Fix later');
    # Will be considered todo, so suite still passes
    ok(0, "oops");
    # End the todo
    $todo->end;
    # TODO has ended, this test will actually fail.
    ok(0, "oops");
```

## CONSTRUCTION OPTIONS

- reason (required)

  The reason for the todo, this can be any defined value.

- hub (optional)

  The hub to which the TODO state should be applied. If none is provided then the current global hub is used.

## INSTANCE METHODS

- $todo-\>end

  End the todo state.

## CLASS METHODS

- $count = Test2::Todo-\>hub\_in\_todo($hub)

  If the hub has any todo objects this will return the total number of them. If the hub has no todo objects it will return 0.

## OTHER NOTES

### How it works

When an instance is created a filter sub is added to the Test2::Hub. This filter will set the `"todo"` and `"diag_todo"` attributes on all events as they come in. When the instance is destroyed, or `end()` is called, the filter is removed.

When a new hub is pushed (such as when a subtest is started) the new hub will inherit the filter, but it will only set `"diag_todo"`, it will not set `"todo"` on events in child hubs.

### $todo-\>end is called at destruction

If your `$todo` object falls out of scope and gets garbage collected, the todo will end.

### Can I use multiple instances?

Yes. The most recently created one that is still active will win.

## SOURCE

The source code repository for Test2-Suite can be found at *https://github.com/Test-More/test-more/*.

## MAINTAINERS

- Chad Granum \<exodist@cpan.org\>

  ## AUTHORS

- Chad Granum \<exodist@cpan.org\>

  ## COPYRIGHT

Copyright Chad Granum \<exodist@cpan.org\>.

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

See *http://dev.perl.org/licenses/*
