Skip to content

Commit a1813c5

Browse files
JRaspasskhwilliamson
authored andcommitted
Modernise & improve SelectSaver.t coverage
- Use v5.40 and a modern testing framework. - Test different arguments to new. - Avoid writing to disk, it isn't necessary.
1 parent 322b787 commit a1813c5

File tree

1 file changed

+54
-15
lines changed

1 file changed

+54
-15
lines changed

lib/SelectSaver.t

Lines changed: 54 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,63 @@ BEGIN {
55
@INC = '../lib';
66
}
77

8-
print "1..3\n";
8+
use v5.40;
99

10-
use SelectSaver;
10+
use Test2::V0 -target => 'SelectSaver';
1111

12-
open(FOO, ">", "foo-$$") || die;
12+
ok dies { SelectSaver::new() }, 'Too few arguments to new dies';
13+
ok dies { CLASS->new(undef, undef) }, 'Too many arguments to new dies';
1314

14-
print "ok 1\n";
15-
{
16-
my $saver = new SelectSaver(FOO);
17-
print "foo\n";
18-
}
15+
subtest 'bareword filehandle' => sub {
16+
use feature 'bareword_filehandles';
17+
18+
is refaddr(select), refaddr(*STDOUT), 'STDOUT is initially selected';
19+
20+
open FOO, '>', undef;
21+
22+
{
23+
ok my $saver = CLASS->new(*FOO), 'SelectSaver->new(*FOO)';
24+
25+
is refaddr(select), refaddr(*FOO), 'FOO is now selected';
26+
}
27+
28+
is refaddr(select), refaddr(*STDOUT), 'STDOUT is selected again';
29+
30+
{
31+
ok my $saver = CLASS->new('FOO'), 'SelectSaver->new("FOO")';
32+
33+
is refaddr(select), refaddr(*FOO), 'FOO is now selected';
34+
}
35+
36+
is refaddr(select), refaddr(*STDOUT), 'STDOUT is selected again';
37+
};
38+
39+
subtest 'lexical filehandle' => sub {
40+
is refaddr(select), refaddr(*STDOUT), 'STDOUT is initially selected';
41+
42+
open my $fh, '>', undef;
43+
44+
{
45+
ok my $saver = CLASS->new($fh), 'SelectSaver->new($fh)';
46+
47+
is refaddr(select), refaddr($fh), '$fh is now selected';
48+
}
49+
50+
is refaddr(select), refaddr(*STDOUT), 'STDOUT is selected again';
51+
};
52+
53+
subtest 'no filehandle' => sub {
54+
is refaddr(select), refaddr(*STDOUT), 'STDOUT is initially selected';
55+
56+
{
57+
ok my $saver = CLASS->new, 'SelectSaver->new';
58+
59+
ok select(STDERR), 'select STDERR';
1960

20-
# Get data written to file
21-
open(FOO, "<", "foo-$$") || die;
22-
chomp($foo = <FOO>);
23-
close FOO;
24-
unlink "foo-$$";
61+
is refaddr(select), refaddr(*STDERR), 'STDERR is now selected';
62+
}
2563

26-
print "ok 2\n" if $foo eq "foo";
64+
is refaddr(select), refaddr(*STDOUT), 'STDOUT is selected again';
65+
};
2766

28-
print "ok 3\n";
67+
done_testing;

0 commit comments

Comments
 (0)