http://qs321.pair.com?node_id=11121954


in reply to Re^3: Can Test::MockObject mock a file?
in thread Can Test::MockObject mock a file?

Done and thank you!

Here is my test file. I hope I wrote it correctly, and it is well formed. All the tests passed.

#!perl use strict; use warnings; use v5.10.0; use Test::More tests => "5"; use FindBin qw($Bin); BEGIN { use_ok( 'Fancy::Open', qw(fancy_open) ) or die "Fancy::Open is not available\n"; } diag( "Testing Fancy::Open $Fancy::Open::VERSION, Perl $], $^X" ); my $file = "$Bin/test-open.txt"; my @plain_array_wanted = qw(red orange yellow spring green teal cyan a +zure blue violet magenta pink white black gray); my @plain_array_run = Fancy::Open::fancy_open($file); is_deeply( \@plain_array_run, \@plain_array_wanted, "testing a plain array" ); my @before_array_wanted = ( "solid red", "solid orange", "solid yellow", "solid spring", "solid green", "solid teal", "solid cyan", "solid azure", "solid blue", "solid violet", "solid magenta", "solid pink", "solid white", "solid black", "solid gray" ); my @before_array_run = Fancy::Open::fancy_open($file, { 'before' => 's +olid ' }); is_deeply( \@before_array_wanted, \@before_array_run, "testing an array with before option" ); my @after_array_wanted = ( "red bead", "orange bead", "yellow bead", "spring bead", "green bead", "teal bead", "cyan bead", "azure bead", "blue bead", "violet bead", "magenta bead", "pink bead", "white bead", "black bead", "gray bead" ); my @after_array_run = Fancy::Open::fancy_open($file, { 'after' => ' be +ad' }); is_deeply( \@after_array_wanted, \@after_array_run, "testing an array with after option" ); my @both_array_wanted = ( "solid red bead", "solid orange bead", "solid yellow bead", "solid spring bead", "solid green bead", "solid teal bead", "solid cyan bead", "solid azure bead", "solid blue bead", "solid violet bead", "solid magenta bead", "solid pink bead", "solid white bead", "solid black bead", "solid gray bead" ); my @both_array_run = Fancy::Open::fancy_open($file, { 'before' => 'sol +id ', 'after' => ' bead' }); is_deeply( \@both_array_wanted, \@both_array_run, "testing an array with before and after options" ); done_testing();

My OS is Debian 10 (Buster); my perl versions are 5.28.1 local and 5.16.3 or 5.30.0 on web host depending on the shebang.

No matter how hysterical I get, my problems are not time sensitive. So, relax, have a cookie, and a very nice day!
Lady Aleena

Replies are listed 'Best First'.
Re^5: Can Test::MockObject mock a file?
by tobyink (Canon) on Sep 20, 2020 at 08:20 UTC

    You could make it less repetitive, but looks good apart from that.

    #!perl use strict; use warnings; use v5.10.0; use Test::More tests => "5"; use FindBin qw($Bin); BEGIN { use_ok( 'Fancy::Open', qw(fancy_open) ) or die "Fancy::Open is not available\n"; } diag( "Testing Fancy::Open $Fancy::Open::VERSION, Perl $], $^X" ); my $file = "$Bin/test-open.txt"; my @wanted = qw( red orange yellow spring green teal cyan azure blue violet magenta pink white black gray ); is_deeply( [ Fancy::Open::fancy_open($file) ], [ @wanted ], "testing a plain array" ); is_deeply( [ Fancy::Open::fancy_open($file, { 'before' => 'solid ' }) ], [ map "solid $_", @wanted ], "testing an array with before option" ); is_deeply( [ Fancy::Open::fancy_open($file, { 'after' => ' bead' }) ], [ map "$_ bead", @wanted ], "testing an array with after option" ); is_deeply( [ Fancy::Open::fancy_open($file, { 'before' => 'solid ', 'after' => +' bead' }) ], [ map "solid $_ bead", @wanted ], "testing an array with before and after options" ); done_testing();

    You might also want to test it on a file that ends with a "\n" and a file that doesn't end with a "\n", and see if the behaviour differs between them. Having checked your module, I don't think it will, but it might be useful to have a test for it, so you don't accidentally change that in the future without realizing it.