Skip to content

Commit d5c1b0a

Browse files
committed
Merge pull request #319 from toddr-bot/koan.toddr.bot/fix-issue-310
fix: return true from BINMODE on mocked filehandles
1 parent 4e7877d commit d5c1b0a

2 files changed

Lines changed: 43 additions & 1 deletion

File tree

lib/Test/MockFile/FileHandle.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,7 @@ exists on this method.
556556

557557
sub BINMODE {
558558
my ($self) = @_;
559-
return;
559+
return 1;
560560
}
561561

562562
=head2 OPEN

t/binmode.t

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/perl -w
2+
3+
use strict;
4+
use warnings;
5+
6+
use Test2::Bundle::Extended;
7+
use Test2::Tools::Explain;
8+
use Test2::Plugin::NoWarnings;
9+
10+
use Test::MockFile ();
11+
12+
subtest 'binmode returns true on mocked filehandle' => sub {
13+
my $mock = Test::MockFile->file( '/tmp/binmode_test', "hello world" );
14+
15+
open my $fh, '<', '/tmp/binmode_test' or die "open: $!";
16+
my $ret = binmode($fh);
17+
ok( $ret, 'binmode() returns a true value on mocked filehandle' );
18+
close $fh;
19+
};
20+
21+
subtest 'binmode with encoding layer returns true' => sub {
22+
my $mock = Test::MockFile->file( '/tmp/binmode_enc', "hello world" );
23+
24+
open my $fh, '<', '/tmp/binmode_enc' or die "open: $!";
25+
my $ret = binmode( $fh, ':utf8' );
26+
ok( $ret, 'binmode($fh, ":utf8") returns a true value on mocked filehandle' );
27+
close $fh;
28+
};
29+
30+
subtest 'binmode or die pattern works' => sub {
31+
my $mock = Test::MockFile->file( '/tmp/binmode_die', "content" );
32+
33+
open my $fh, '<', '/tmp/binmode_die' or die "open: $!";
34+
my $lived = eval {
35+
binmode($fh) or die "binmode failed: $!";
36+
1;
37+
};
38+
ok( $lived, 'binmode($fh) or die does not die on mocked filehandle' );
39+
close $fh;
40+
};
41+
42+
done_testing();

0 commit comments

Comments
 (0)