1 package Test::Valgrind::FakeValgrind;
10 sub _dummy_valgrind_code {
14 unless (-e $perl and -x $perl) {
15 $perl = $Config::Config{perlpath};
16 unless (-e $perl and -x $perl) {
23 if (\@ARGV == 1 && \$ARGV[0] eq '--version') {
24 print "valgrind-$version\n";
30 my ($class, %args) = @_;
32 my $exe_name = $args{exe_name};
33 my $version = $args{version} || '3.1.0';
37 if (defined $exe_name) {
38 $self->{tmp_dir_obj} = File::Temp->newdir(CLEANUP => 1);
39 $self->{tmp_dir} = $self->{tmp_dir_obj}->dirname;
40 $self->{tmp_file} = File::Spec->catfile($self->{tmp_dir}, $exe_name);
42 $self->{tmp_file_obj} = File::Temp->new(UNLINK => 1);
43 $self->{tmp_file} = $self->{tmp_file_obj}->filename;
44 my ($vol, $dir) = File::Spec->splitpath($self->{tmp_file});
45 $self->{tmp_dir} = File::Spec->catpath($vol, $dir, '');
48 my $code = _dummy_valgrind_code($version);
49 return 'Could not generate the dummy valgrind executable' unless $code;
51 return 'Temporary file already exists' if -s $self->{tmp_file};
54 open my $vg_fh, '>', $self->{tmp_file};
57 chmod 0755, $self->{tmp_file};
63 sub path { $_[0]->{tmp_file} }
65 sub dir { $_[0]->{tmp_dir} }