package main; use File::Next; sub slurp { my $iter = shift; my @files; while ( defined ( my $file = $iter->() ) ) { push( @files, $file ); } return @files; } sub sets_match { my @actual = @{+shift}; my @expected = @{+shift}; my $msg = shift; # Normalize all the paths for my $path ( @expected, @actual ) { $path = File::Next::reslash( $path ); } local $Test::Builder::Level = $Test::Builder::Level + 1; ## no critic eval 'use Test::Differences'; if ( !$@ ) { return eq_or_diff( [sort @actual], [sort @expected], $msg ); } else { return is_deeply( [sort @actual], [sort @expected], $msg ); } } 1;