---
name: "Test2::Util::Facets2Legacy"
section: "3p"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/Test2::Util::Facets2Legacy"
---

# Test2::Util::Facets2Legacy(3p)

Convert facet data to the legacy event API.

## NAME

Test2::Util::Facets2Legacy - Convert facet data to the legacy event API.

## DESCRIPTION

This module exports several subroutines from the older event API (see Test2::Event). These subroutines can be used as methods on any object that provides a custom `facet_data()` method. These subroutines can also be used as functions that take a facet data hashref as arguments.

## SYNOPSIS

### AS METHODS

```
    package My::Event;
    use Test2::Util::Facets2Legacy ':ALL';
    sub facet_data { return { ... } }
```

Then to use it:

```
    my $e = My::Event->new(...);
    my $causes_fail = $e->causes_fail;
    my $summary     = $e->summary;
    ....
```

### AS FUNCTIONS

```
    use Test2::Util::Facets2Legacy ':ALL';
    my $f = {
        assert => { ... },
        info => [{...}, ...],
        control => {...},
        ...
    };
    my $causes_fail = causes_fail($f);
    my $summary     = summary($f);
```

## NOTE ON CYCLES

When used as methods, all these subroutines call `"$e->facet_data()"`. The default `facet_data()` method in Test2::Event relies on the legacy methods this module emulates in order to work. As a result of this it is very easy to create infinite recursion bugs.

These methods have cycle detection and will throw an exception early if a cycle is detected. `uuid()` is currently the only subroutine in this library that has a fallback behavior when cycles are detected.

## EXPORTS

Nothing is exported by default. You must specify which methods to import, or use the ':ALL' tag.

- $bool = $e-\>**causes\_fail()**

  - $bool = causes\_fail($f)

  Check if the event or facets result in a failing state.

- $bool = $e-\>**diagnostics()**

  - $bool = diagnostics($f)

  Check if the event or facets contain any diagnostics information.

- $bool = $e-\>**global()**

  - $bool = global($f)

  Check if the event or facets need to be globally processed.

- $bool = $e-\>**increments\_count()**

  - $bool = increments\_count($f)

  Check if the event or facets make an assertion.

- $bool = $e-\>**no\_display()**

  - $bool = no\_display($f)

  Check if the event or facets should be rendered or hidden.

- ($max, $directive, $reason) = $e-\>**sets\_plan()**

  - ($max, $directive, $reason) = sets\_plan($f)

  Check if the event or facets set a plan, and return the plan details.

- $id = $e-\>**subtest\_id()**

  - $id = subtest\_id($f)

  Get the subtest id, if any.

- $string = $e-\>**summary()**

  - $string = summary($f)

  Get the summary of the event or facets hash, if any.

- $undef\_or\_int = $e-\>**terminate()**

  - $undef\_or\_int = terminate($f)

  Check if the event or facets should result in process termination, if so the exit code is returned (which could be 0). undef is returned if no termination is requested.

- $uuid = $e-\>**uuid()**

  - $uuid = uuid($f)

  Get the UUID of the facets or event.

  **Note:** This will fall back to `"$e->SUPER::uuid()"` if a cycle is detected and an event is used as the argument.

## SOURCE

The source code repository for Test2 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 \<https://dev.perl.org/licenses/\>
