Analizo

 view release on metacpan or  search on metacpan

lib/Test/Analizo.pm  view on Meta::CPAN


sub on_dir {
  my ($dir, $code) = @_;
  my $previous_pwd = `pwd`;
  chomp $previous_pwd;
  chdir $dir;
  if (wantarray()) {
    my @list = &$code();
    chdir $previous_pwd;
    return @list;
  }
  my $result = &$code();
  chdir $previous_pwd;
  return $result;
}

sub mock {
  my ($object) = @_;
  Test::MockObject::Extends->new($object);
}

sub tmpdir {
  my ($package, $filename, $line) = caller;
  return tmpdir_for($filename);
}

use Cwd 'abs_path';
sub tmpdir_for {
  my ($filename) = @_;
  $filename = abs_path($filename);
  return $filename . '.tmpdir';
}

sub on_tmpdir {
  my ($code) = @_;
  my $tmpdir = tmpdir;
  mkdir $tmpdir;
  my $result = on_dir($tmpdir, $code);
  remove_tree $tmpdir;
  return $result;
}

sub unpack_sample_git_repository {
  my ($code, @repos) = @_;
  if (!@repos) {
    @repos = ('evolution');
  }
  my ($package, $filename, $line) = caller;
  my $tmpdir = tmpdir_for($filename);
  system('mkdir', '-p', $tmpdir);
  for my $repo (@repos) {
    system('tar', 'xzf', "t/samples/$repo.tar.gz", '-C', $tmpdir,
        '--no-same-owner');
  }
  &$code();
  system('rm', '-rf', $tmpdir);
}

sub readfile {
  my ($filename) = @_;
  open INPUT, $filename;
  my @lines = <INPUT>;
  close INPUT;
  chomp @lines;
  return @lines;
}

1;



( run in 0.759 second using v1.01-cache-2.11-cpan-5b529ec07f3 )