-
Notifications
You must be signed in to change notification settings - Fork 14
/
pod2markdown.t
73 lines (59 loc) · 1.71 KB
/
pod2markdown.t
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
67
68
69
70
71
72
73
# vim: set ts=2 sts=2 sw=2 expandtab smarttab:
use strict;
use warnings;
use Test::More;
use Test::Differences;
use Pod::Markdown;
use File::Temp qw{ tempfile }; # core
use File::Spec::Functions qw( catfile ); # core
my ($lib, $bin) = scalar(grep { /\bblib\Wlib$/ } @INC)
? ('blib/lib', 'blib/script')
: ('lib', 'bin');
my $script = catfile($bin, qw(pod2markdown));
my ($tmp_in, $infile) = tempfile( 'pod2markdown-in.XXXXXX', TMPDIR => 1, UNLINK => 1 );
print $tmp_in "=head1 Temp\n\nI<File>\n";
close $tmp_in;
my ($tmp_out, $outfile) = tempfile( 'pod2markdown-out.XXXXXX', TMPDIR => 1, UNLINK => 1 );
print $tmp_out "overwrite me\n";
close $tmp_out;
# I tried this with IPC::Open2, but windows hangs waiting for more <STDIN>...
sub testp2m {
my ($args, $desc) = @_;
unshift @$args, $^X, "-I$lib", $script;
{
open(my $fh, '>', $outfile) or die "Failed to open $outfile: $!";
print $fh "oops\n";
close $fh;
}
is slurp_file($outfile), "oops\n", 'output file prepared';
system(join ' ', map { length($_) > 1 ? qq["$_"] : $_ } @$args);
is slurp_file($outfile), "# Temp\n\n_File_\n", $desc;
}
testp2m(
['<', $infile, '>', $outfile],
'no args: < in > out',
);
testp2m(
[$infile, '>', $outfile],
'1 arg: input file, stdout',
);
testp2m(
[$infile, $outfile],
'2 args: input file, output file',
);
testp2m(
['-', $outfile, '<', $infile],
'2 args: - (stdin), output file',
);
testp2m(
['-', '-', '<', $infile, '>', $outfile],
'both dashes: - (stdin) - (stdout)',
);
done_testing;
sub slurp_file {
my $path = shift;
open(my $fh, '<', $path)
or die "Failed to open $path: $!";
slurp_fh($fh)
}
sub slurp_fh { my $fh = shift; local $/; <$fh>; }