🌻 📖 Test2::Tools::MemoryCycle

NAME

Test2::Tools::MemoryCycle - Check for memory leaks and circular memory references

VERSION

version 0.01

SYNOPSIS

 use Test2::V0;
 use Test2::Tools::MemoryCycle;

 my $foo = { bar => 1 };
 
 memory_cycle_ok $foo;  # pass
 
 $foo->{baz} = sub {
   print $foo->{bar}, "\n";
 };

 memory_cycle_ok $foo;  # fail

 done_testing;

DESCRIPTION

Perl's garbage collection has one big problem: Circular references can't get cleaned up. The above example is the sort of thing that sometimes trips me up, where a code reference inside a data structure refers to another part of the data structure. There already exists a good testing module to find these sort of problems: Test::Memory::Cycle, so why write this one? Well that module uses Test::Builder, and this one instead uses Test2::API. If you want to write Test2::Suite tests without pulling in Test::Builder then this is the cycle testing module for you.

This module also uses the standard Exporter interface, instead of letting you specify a test plan. That behavior was once in vogue I guess, but I do not care for it.

FUNCTIONS

memory_cycle_ok

 memory_cycle_ok $reference, $message;
 memory_cycle_ok $reference;

Checks that $reference doesn't have any circular memory references.

CAVEATS

This module is based on and quite similar to Test::Memory::Cycle. That module is more mature, and has more features. So far I only need the one test function. Other features may be added in the future.

SEE ALSO

Test::Memory::Cycle
Devel::Cycle

AUTHOR

Graham Ollis <plicease@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2022 by Graham Ollis.

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