---
name: "Test2::Harness::Collector::TapParser"
section: "3pm"
platform: "linux"
package: "libtest2-harness-perl"
version: "1.000158-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Test2::Harness::Collector::TapParser"
---

# Test2::Harness::Collector::TapParser(3pm)

Produce EventFacets from a line of TAP.

## NAME

Test2::Harness::Collector::TapParser - Produce EventFacets from a line of TAP.

## DESCRIPTION

This module is responsible for reading and processing any TAP output from tests. Lines of TAP output are processed into Test2::Event facet data. Note that `"Test2 -> TAP -> Test2"` is lossy at the `"Test2 -> TAP"` step.

## SYNOPSIS

```
    use Test2::Harness::Collector::TapParser qw/parse_tap_line/;
    my $facet_data = parse_tap_line("1..1");
    is(
        $facet_data,
        {
            trace => {nested => 0},
            hubs  => [{nested => 0}],
            plan  => {
                details => '',
                count   => 1,
                skip    => 0,
            },
        },
        "Parsed the plan"
    );
    $facet_data = parse_tap_line("# foo");
    is(
        $facet_data,
    {
              trace => { nested => 0 },
              hubs => [ { nested => 0 } ],
              info => [
                          {
                            tag => 'NOTE',
                            details => 'foo',
                            debug => 0,
                          },
                        ],
            },
        "Parsed the note"
    );
    $facet_data = parse_tap_line("ok 1");
    is(
        $facet_data,
        {
            trace  => {nested => 0},
            hubs   => [{nested => 0}],
            assert => {
                no_debug => 1,
                pass     => 1,
                number   => '1',
                details  => '',
            },
        },
        "Parsed the assertion"
    );
```

## EXPORTS

- $facet\_data = parse\_tap\_line($line)

  Parse a line of TAP. It is assumed to be STDOUT thus all comments are turned into notes. Using this export will **NOT** add the usual `"from_tap"` facet. It is better to use one of the other 2 exports.

- $facet\_data = parse\_stdout\_tap($line)

  Parse a line of TAP from stdout.

- $facet\_data = parse\_stderr\_tap($line)

  Parse a line of TAP from stderr. This will **ONLY** parse comment lines (ones that start with a `"#"`, which may be indented). All comments will be treated as diag's, all other lines will be ignored.

## SOURCE

The source code repository for Test2-Harness can be found at *http://github.com/Test-More/Test2-Harness/*.

## MAINTAINERS

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

  ## AUTHORS

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

  ## COPYRIGHT

Copyright 2020 Chad Granum \<exodist7@gmail.com\>.

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/*
