]> git.vpit.fr Git - perl/modules/Test-Valgrind.git/blob - t/70-session.t
Test Session->new arguments in a new t/70-session.t
[perl/modules/Test-Valgrind.git] / t / 70-session.t
1 #!perl
2
3 use strict;
4 use warnings;
5
6 use Test::Valgrind::Session;
7
8 use File::Temp;
9
10 use Test::More tests => 7;
11
12 my $sess = eval { Test::Valgrind::Session->new(
13  search_dirs => [ ],
14 ) };
15 like $@, qr/^Empty valgrind candidates list/, 'no search_dirs';
16
17 $sess = eval { Test::Valgrind::Session->new(
18  valgrind => 'wut',
19 ) };
20 like $@, qr/^No appropriate valgrind executable/, 'nonexistant valgrind';
21
22 sub fake_vg {
23  my ($version) = @_;
24  return <<" FAKE_VG";
25 #!$^X
26 if (\@ARGV == 1 && \$ARGV[0] eq '--version') {
27  print "valgrind-$version\n";
28 } else {
29  print "hlagh\n";
30 }
31  FAKE_VG
32 }
33
34 my $vg_old = File::Temp->new(UNLINK => 1);
35 print $vg_old fake_vg('3.0.0');
36 close $vg_old;
37 chmod 0755, $vg_old->filename;
38
39 my $sess = eval { Test::Valgrind::Session->new(
40  valgrind    => $vg_old->filename,
41  min_version => '3.1.0',
42 ) };
43 like $@, qr/^No appropriate valgrind executable/, 'old valgrind';
44
45 my $vg_new = File::Temp->new(UNLINK => 1);
46 print $vg_new fake_vg('3.4.0');
47 close $vg_new;
48 chmod 0755, $vg_new->filename;
49
50 $sess = eval { Test::Valgrind::Session->new(
51  valgrind    => $vg_new->filename,
52  min_version => '3.1.0',
53 ) };
54 is     $@,    '',                        'new valgrind';
55 isa_ok $sess, 'Test::Valgrind::Session', 'new valgrind isa Test::Valgrind::Session';
56
57 $sess = eval { Test::Valgrind::Session->new(
58  search_dirs => [ ],
59  valgrind    => [ $vg_old->filename, $vg_new->filename ],
60  min_version => '3.1.0',
61 ) };
62 is     $@,    '',                        'old and new valgrind';
63 isa_ok $sess, 'Test::Valgrind::Session', 'old and new valgrind isa Test::Valgrind::Session';