X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=README;h=c123f9791edf7a4b1331551141f792be49c986f5;hb=e88c20f0a4b0b3c4f2177c1200a9a37d53fbe14a;hp=acbd863cb62d0428c47f1f438205bdac9cd089a0;hpb=41a4b907f4846f2d35b170f517fb83ceb13f298c;p=perl%2Fmodules%2FTest-Valgrind.git diff --git a/README b/README index acbd863..c123f97 100644 --- a/README +++ b/README @@ -1,13 +1,13 @@ NAME - Test::Valgrind - Test your code through valgrind. + Test::Valgrind - Test Perl code through valgrind. VERSION - Version 0.01 + Version 0.07 SYNOPSIS use Test::More; eval 'use Test::Valgrind'; - plan skip_all => 'Test::Valgrind is required to test your distribution with valgrind'; + plan skip_all => 'Test::Valgrind is required to test your distribution with valgrind' if $@; # Code to inspect for memory leaks/errors. @@ -20,40 +20,85 @@ DESCRIPTION parent then parses the report output by valgrind and pass or fail tests accordingly. + You can also use it from the command-line to test a given script : + + perl -MTest::Valgrind leaky.pl + + Due to the nature of perl's memory allocator, this module can't track + leaks of Perl objects. This includes non-mortalized scalars and memory + cycles. However, it can track leaks of chunks of memory allocated in XS + extensions with "Newx" and friends or "malloc". As such, it's + complementary to the other very good leak detectors listed in the "SEE + ALSO" section. + CONFIGURATION You can pass parameters to "import" as a list of key / value pairs, where valid keys are : - "supp => $file" + * "supp => $file" + Also use suppressions from $file besides perl's. - "no_supp => $bool" + * "no_supp => $bool" + If true, do not use any suppressions. - "callers => $number" + * "callers => $number" + Specify the maximum stack depth studied when valgrind encounters an - error. Raising this number improves granularity. Default is 50. + error. Raising this number improves granularity. Default is 12. + + * "extra => [ @args ]" - "extra => [ @args ]" Add @args to valgrind parameters. - "diag => $bool" + * "diag => $bool" + If true, print the raw output of valgrind as diagnostics (may be quite verbose). - "no_test => $bool" + * "no_test => $bool" + If true, do not actually output the plan and the tests results. + * "cb => sub { my ($val, $name) = @_; ...; return $passed }" + + Specifies a subroutine to execute for each test instead of + "Test::More::is". It receives the number of bytes leaked in $_[0] + and the test name in $_[1], and is expected to return true if the + test passed and false otherwise. Defaults to + + sub { + is($_[0], 0, $_[1]); + (defined $_[0] and $_[0] == 0) : 1 : 0 + } + CAVEATS You can't use this module to test code given by the "-e" command-line - switch. This module is not really secure. It's definitely not taint - safe. That shouldn't be a problem for test files. If your tests output - to STDERR, everything will be eaten in the process. + switch. + + Perl 5.8 is notorious for leaking like there's no tomorrow, so the + suppressions are very likely not to be very accurate on it. Anyhow, + results will most likely be better if your perl is built with debugging + enabled. Using the latest valgrind available will also help. + + This module is not really secure. It's definitely not taint safe. That + shouldn't be a problem for test files. + + What your tests output to STDOUT is eaten unless you pass the "diag" + option, in which case it will be reprinted as diagnostics. STDERR is + kept untouched. DEPENDENCIES Valgrind 3.1.0 (). - Carp, POSIX (core modules since perl 5) and Test::More (since 5.6.2). + Carp, Fcntl, POSIX (core modules since perl 5) and Test::Builder (since + 5.6.2). + + Perl::Destruct::Level. + +SEE ALSO + Devel::Leak, Devel::LeakTrace, Devel::LeakTrace::Fast. AUTHOR Vincent Pit, "", . @@ -73,6 +118,13 @@ SUPPORT perldoc Test::Valgrind +ACKNOWLEDGEMENTS + Rafaël Garcia-Suarez, for writing and instructing me about the + existence of Perl::Destruct::Level (Elizabeth Mattijsen is a close + second). + + H.Merijn Brand, for daring to test this thing. + COPYRIGHT & LICENSE Copyright 2008 Vincent Pit, all rights reserved.