]> git.vpit.fr Git - perl/modules/Test-Valgrind.git/commitdiff
Test Session->new arguments in a new t/70-session.t
authorVincent Pit <vince@profvince.com>
Tue, 22 Sep 2009 17:14:02 +0000 (19:14 +0200)
committerVincent Pit <vince@profvince.com>
Tue, 22 Sep 2009 17:14:02 +0000 (19:14 +0200)
MANIFEST
t/70-session.t [new file with mode: 0644]

index 158ed9035e2d04a6d3ca5018e8e57abd464a8e04..e0c368bf24fac45c5191ff95230fde8e4d08f119 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -31,6 +31,7 @@ samples/xml-output-protocol4.txt
 t/00-load.t
 t/10-good.t
 t/20-bad.t
+t/70-session.t
 t/80-suppressions.t
 t/91-pod.t
 t/92-pod-coverage.t
diff --git a/t/70-session.t b/t/70-session.t
new file mode 100644 (file)
index 0000000..3bfa7d0
--- /dev/null
@@ -0,0 +1,63 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::Valgrind::Session;
+
+use File::Temp;
+
+use Test::More tests => 7;
+
+my $sess = eval { Test::Valgrind::Session->new(
+ search_dirs => [ ],
+) };
+like $@, qr/^Empty valgrind candidates list/, 'no search_dirs';
+
+$sess = eval { Test::Valgrind::Session->new(
+ valgrind => 'wut',
+) };
+like $@, qr/^No appropriate valgrind executable/, 'nonexistant valgrind';
+
+sub fake_vg {
+ my ($version) = @_;
+ return <<" FAKE_VG";
+#!$^X
+if (\@ARGV == 1 && \$ARGV[0] eq '--version') {
+ print "valgrind-$version\n";
+} else {
+ print "hlagh\n";
+}
+ FAKE_VG
+}
+
+my $vg_old = File::Temp->new(UNLINK => 1);
+print $vg_old fake_vg('3.0.0');
+close $vg_old;
+chmod 0755, $vg_old->filename;
+
+my $sess = eval { Test::Valgrind::Session->new(
+ valgrind    => $vg_old->filename,
+ min_version => '3.1.0',
+) };
+like $@, qr/^No appropriate valgrind executable/, 'old valgrind';
+
+my $vg_new = File::Temp->new(UNLINK => 1);
+print $vg_new fake_vg('3.4.0');
+close $vg_new;
+chmod 0755, $vg_new->filename;
+
+$sess = eval { Test::Valgrind::Session->new(
+ valgrind    => $vg_new->filename,
+ min_version => '3.1.0',
+) };
+is     $@,    '',                        'new valgrind';
+isa_ok $sess, 'Test::Valgrind::Session', 'new valgrind isa Test::Valgrind::Session';
+
+$sess = eval { Test::Valgrind::Session->new(
+ search_dirs => [ ],
+ valgrind    => [ $vg_old->filename, $vg_new->filename ],
+ min_version => '3.1.0',
+) };
+is     $@,    '',                        'old and new valgrind';
+isa_ok $sess, 'Test::Valgrind::Session', 'old and new valgrind isa Test::Valgrind::Session';