]> git.vpit.fr Git - perl/modules/Test-Valgrind.git/blob - t/70-session.t
Also run the session test on darwin
[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 SKIP: {
35  skip 'Only on linux or darwin' => 5 unless $^O eq 'linux' or $^O eq 'darwin';
36
37  my $vg_old = File::Temp->new(UNLINK => 1);
38  print $vg_old fake_vg('3.0.0');
39  close $vg_old;
40  chmod 0755, $vg_old->filename;
41
42  my $sess = eval { Test::Valgrind::Session->new(
43   valgrind    => $vg_old->filename,
44   min_version => '3.1.0',
45  ) };
46  like $@, qr/^No appropriate valgrind executable/, 'old valgrind';
47
48  my $vg_new = File::Temp->new(UNLINK => 1);
49  print $vg_new fake_vg('3.4.0');
50  close $vg_new;
51  chmod 0755, $vg_new->filename;
52
53  $sess = eval { Test::Valgrind::Session->new(
54   valgrind    => $vg_new->filename,
55   min_version => '3.1.0',
56  ) };
57  is     $@,    '',                        'new valgrind';
58  isa_ok $sess, 'Test::Valgrind::Session', 'new valgrind isa Test::Valgrind::Session';
59
60  $sess = eval { Test::Valgrind::Session->new(
61   search_dirs => [ ],
62   valgrind    => [ $vg_old->filename, $vg_new->filename ],
63   min_version => '3.1.0',
64  ) };
65  is     $@,    '',                        'old and new valgrind';
66  isa_ok $sess, 'Test::Valgrind::Session', 'old and new valgrind isa Test::Valgrind::Session';
67 }