blob: 04f0353a98484b381401ac15a2f1d92d867c4e49 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
package Test::Class::Refresh;
use strict;
use warnings;
use File::Copy;
use File::Find;
use File::Temp;
use Exporter 'import';
our @EXPORT = qw(prepare_temp_dir_for update_temp_dir_for);
sub rcopy {
my ($from_dir, $to_dir) = @_;
find(
{
no_chdir => 1,
wanted => sub {
my $from = $File::Find::name;
(my $base = $from) =~ s/^$from_dir//;
return unless length $base;
my $to = $to_dir . $base;
if (-d) {
if (!-d $to) {
mkdir $to or die "Couldn't create dir $to: $!";
}
}
else {
copy($from, $to) or die "Couldn't copy $from to $to: $!";
utime(undef, undef, $to)
or die "Couldn't set modification time for $to: $!";
}
},
},
$from_dir
);
}
sub prepare_temp_dir_for {
my ($test_id, $subdir) = @_;
$subdir ||= 'before';
my $from_dir = 't/data/' . $test_id . "/$subdir";
my $to_dir = File::Temp->newdir;
rcopy($from_dir, $to_dir);
return $to_dir;
}
sub update_temp_dir_for {
my ($test_id, $to_dir, $subdir) = @_;
$subdir ||= 'after';
my $from_dir = 't/data/' . $test_id . "/$subdir";
rcopy($from_dir, $to_dir);
}
1;
|