BEGIN { if ($ENV{PERL_CORE}) { chdir 't' if -d 't'; @INC = ("../lib", "lib/compress"); } } use lib qw(t t/compress); use strict; use warnings; use bytes; use File::Spec ; use Test::More ; my $Zstd ; my $UnZstd ; use CompTestUtils; my $shortContent = "hello world"; my $longContent = <$outfile") == 0 ) { $_[0] = readFile($outfile); return 1 } diag "'$UnZstd' failed: \$?=$? \$!=$!"; return 0 ; } sub getZstdInfo { my $file = shift ; } sub writeWithZstd { my $file = shift ; my $content = shift ; my $options = shift || ''; my $lex = new LexFile my $infile; writeFile($infile, $content); unlink $file ; my $comp = "$Zstd -c $options <$infile >$file" ; return 1 if system($comp) == 0 ; diag "'$comp' failed: \$?=$? \$!=$!"; return 0 ; } BEGIN { # Check external zstd is available my $zstd = 'zstd'; my $unzstd = 'unzstd'; for my $dir (reverse split ":", $ENV{PATH}) { $Zstd = File::Spec->catfile($dir, $zstd) if -x File::Spec->catfile($dir, $zstd) ; $UnZstd = File::Spec->catfile($dir, $unzstd) if -x File::Spec->catfile($dir, $unzstd) ; } plan(skip_all => "Cannot find zstd") if ! $Zstd ; plan(skip_all => "Cannot find unzstd") if ! $UnZstd ; # Handle spaces in path to zstd $Zstd = "\"$Zstd\"" if defined $Zstd && $Zstd =~ /\s/; $UnZstd = "\"$UnZstd\"" if defined $UnZstd && $UnZstd =~ /\s/; plan(skip_all => "$zstd doesn't work as expected") if ! ExternalZstdWorks(); # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; plan tests => 16 + $extra ; use_ok('IO::Compress::Zstd', qw(:all)) ; use_ok('IO::Uncompress::UnZstd', qw(:all)) ; } # Use short & long content to trigger sroring & compression respectively. for my $content ($shortContent, $longContent) { title "Test interop with $Zstd" ; my $file; my $file1; my $lex = new LexFile $file, $file1; my $got; is writeWithZstd($file, $content), 1, " writeWithZstd ok"; ok unzstd($file => \$got), " unzstd ok" ; is $got, $content, " got expected content"; ok zstd(\$content => $file1), " zstd ok"; $got = ''; is readWithZstd($file1, $got), 1, "readWithZstd returns 0"; is $got, $content, "got content"; }