Test::Vars(3)
πΈ NAME πΈ
Test::Vars(3) β yep, thatβs the manual page name, from the User Contributed Perl Documentation crew β and it Detects unused variables in perl modules. π
π VERSION π
This document describes Test::Vars version 0.017. π
β¨ SYNOPSIS β¨
okay so hereβs the whole vibe at a glance, bestie:
use Test::Vars;
# Check all libs that are listed in the MANIFEST file
all_vars_ok();
# Check an arbitrary file
vars_ok('t/lib/MyLib.pm');
# Ignore some variables while checking
vars_ok 't/lib/MyLib2.pm', ignore_vars => [ '$an_unused_var' ];
π¦ DESCRIPTION π¦
Test::Vars provides test functions to report unused variables either in an entire distribution or in some files of your choice, in order to keep your source code tidy. β¨ Itβs giving βclean up your room, but make it Perl.β π§Ή
π₯ INTERFACE π₯
π«Ά Exported π«Ά
all_vars_ok(%args)
Tests libraries in your distribution with %args. π
libraries are collected from the MANIFEST file.
If you want to ignore variables, for example $foo, you can tell it to the test routines:
"ignore_vars => { '$foo' => 1 }"
"ignore_vars => [qw($foo)]"
"ignore_if => sub{ $_ eq '$foo' }"
Note that $self will be ignored by default unless you pass explicitly { '$self' => 0 } to ignore_vars. π«£
vars_ok($lib, %args)
Tests $lib with %args.
See all_vars_ok. π―
π§ͺ <test_vars($lib, $result_handler, %args)> π§ͺ
This subroutine tests variables, but instead of outputting TAP, calls the $result_handler subroutine reference provided with the results of the test. π
The $result_handler sub will be called once, with the following arguments:
$filenameβ the file that was checked for unused variables. π$exit_codeβ the value of$?from the child process that actually did the tests. This will be0if the tests passed. β$resultsβ this is an array reference which in turn contains zero or more array references. Each of those references contains two elements, aTest::Buildermethod, eitherdiagornote, and a message. π§Ύ
If the method is diag, the message contains an actual error. If the method is notes, the message contains extra information about the test, but is not indicative of an error. π
π§ MECHANISM π§
Test::Vars is similar to a part of Test::Perl::Critic, but the mechanism is different. No cap. π
While Perl::Critic, the backend of Test::Perl::Critic, scans the source code as text, this module scans the compiled opcodes (or AST: abstract syntax tree) using the B module. See also B and its submodules. π
βοΈ CONFIGURATION βοΈ
TEST_VERBOSE = 1 | 2 shows the way this module works. πͺ
β οΈ CAVEATS β οΈ
Over time there have been reported a number of cases where Test-Vars fails to report unused variables. You can review most of these cases by going to our issue tracker on GitHub and selecting issues with the Bug label: π
https://github.com/houseabsolute/p5-Test-Vars/issues?q=is%3Aopen+is%3Aissue+label%3ABug
π¦ DEPENDENCIES π¦
Perl 5.10.0 or later. πͺ
π BUGS π
Please report new issues at our issue tracker on GitHub: https://github.com/houseabsolute/p5-Test-Vars/issues. We no longer use rt.cpan.org for bug reports. π«
π SEE ALSO π
Perl::Criticwarnings::unusedBTest::Builder::Module
π AUTHOR π
Goro Fuji (gfx) <gfuji(at)cpan.org> π«Ά
π LICENSE AND COPYRIGHT π
Copyright (c) 2010, Goro Fuji (gfx). All rights reserved. π
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic for details. π
And thatβs the tea, bestie: this page came from perl v5.42.2, dated 2024-09-18, and itβs Test::Vars(3) β slay. π
β¨
π¦ where this page comes from
- alpine 3.24: perl-test-vars-doc 0.017-r0 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms