File: diff.t

package info (click to toggle)
libtest-snapshot-perl 0.06-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 116 kB
  • sloc: perl: 234; makefile: 2
file content (66 lines) | stat: -rw-r--r-- 1,533 bytes parent folder | download
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
61
62
63
64
65
66
use Test::More 0.96;
use Test::Snapshot;
use File::Temp qw/ tempfile tempdir /;
use Capture::Tiny qw(capture);
use App::Prove;

sub tempcopy {
  my ($text, $dir) = @_;
  my ($tfh, $filename) = tempfile( DIR => $dir );
  print $tfh $text;
  close $tfh;
  $filename;
}

sub write_file {
  my ($filename, $data) = @_;
  open my $fh, '>', $filename or die "$filename: $!";
  print $fh $data;
}

$ENV{TEST_SNAPSHOT_UPDATE} = 0; # override to ensure known value

my $dir = tempdir( CLEANUP => 1 );
my $filename = tempcopy(<<'EOF', $dir);
use Test::More 0.96;
use Test::Snapshot;
is_deeply_snapshot { message => 'output' }, 'desc';
done_testing;
EOF

sub do_test {
  my ($filename, $update, $expect, $description) = @_;
  my ($out, $err, $exit) = capture {
    local $ENV{TEST_SNAPSHOT_UPDATE} = $update;
    my $app = App::Prove->new;
    $app->process_args(qw(-b), $filename);
    $app->run ? 0 : 1;
  };
  is $exit, $expect, $description
    or diag 'Output was: ', $out, 'Error was: ', $err;
  ($out, $err);
}

do_test($filename, 1, 1, 'fails first time, generate snapshots');
write_file($filename, <<'EOF');
use Test::More 0.96;
use Test::Snapshot;
is_deeply_snapshot { message => 'different' }, 'desc';
done_testing;
EOF
my ($out, $err) = do_test($filename, 0, 1, 'fails second time, check diffs');
isnt $out, '';
$err =~ s#^.* at .* line \d+\.$##m;
is $err, <<'EOF';

#   Failed test 'desc'

# @@ -1,3 +1,3 @@
#  {
# -  'message' => 'output'
# +  'message' => 'different'
#  }
# Looks like you failed 1 test of 1.
EOF

done_testing;