|
Packit |
0bf95d |
#!/usr/bin/perl
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# tests with $Archive::Zip::UNICODE
|
|
Packit |
0bf95d |
use utf8; #utf8 source code
|
|
Packit |
0bf95d |
use strict;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
BEGIN {
|
|
Packit |
0bf95d |
$| = 1;
|
|
Packit |
0bf95d |
$^W = 1;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
use Test::More;
|
|
Packit |
0bf95d |
use Archive::Zip;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use File::Temp;
|
|
Packit |
0bf95d |
use File::Path;
|
|
Packit |
0bf95d |
use File::Spec;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use lib 't';
|
|
Packit |
0bf95d |
use common;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
#Initialy written for MSWin32 only, but I found a bug in memberNames() so
|
|
Packit |
0bf95d |
# other systems should be tested too.
|
|
Packit |
0bf95d |
#if( $^O ne 'MSWin32' ) {
|
|
Packit |
0bf95d |
# plan skip_all => 'Test relevant only on MSWin32';
|
|
Packit |
0bf95d |
# done_testing();
|
|
Packit |
0bf95d |
# exit;
|
|
Packit |
0bf95d |
#}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
$Archive::Zip::UNICODE=1;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
mkpath([File::Spec->catdir(TESTDIR, 'folder')]);
|
|
Packit |
0bf95d |
my $euro_filename = "euro-€";
|
|
Packit |
0bf95d |
my $zero_file = File::Spec->catfile(TESTDIR, 'folder', $euro_filename);
|
|
Packit |
0bf95d |
open(EURO, ">$zero_file");
|
|
Packit |
0bf95d |
print EURO "File EURO\n";
|
|
Packit |
0bf95d |
close(EURO);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# create member called $euro_filename with addTree
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
$archive->addTree(File::Spec->catfile(TESTDIR, 'folder'), 'folder',);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
#TEST
|
|
Packit |
0bf95d |
is_deeply(
|
|
Packit |
0bf95d |
[ $archive->memberNames()],
|
|
Packit |
0bf95d |
[ "folder/", "folder/$euro_filename" ],
|
|
Packit |
0bf95d |
"Checking that a file named with unicode chars was added properly"
|
|
Packit |
0bf95d |
);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# create member called $euro_filename with addString
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Create member $euro_filename with addString
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
my $string_member = $archive->addString(TESTSTRING => $euro_filename);
|
|
Packit |
0bf95d |
$archive->writeToFileNamed(OUTPUTZIP);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
#TEST
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Read member $euro_filename
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
|
|
Packit |
0bf95d |
is_deeply(
|
|
Packit |
0bf95d |
[$archive->memberNames()],
|
|
Packit |
0bf95d |
[$euro_filename],
|
|
Packit |
0bf95d |
"Checking that a file named with unicode chars was added properly by addString");
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
unlink(OUTPUTZIP);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Create member called $euro_filename with addFile
|
|
Packit |
0bf95d |
# use a temp file so it's name doesn't match internal name
|
|
Packit |
0bf95d |
my $tmp_file = File::Temp->new;
|
|
Packit |
0bf95d |
$tmp_file->print("File EURO\n");
|
|
Packit |
0bf95d |
$tmp_file->flush;
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
my $string_member = $archive->addFile($tmp_file->filename => $euro_filename);
|
|
Packit |
0bf95d |
$archive->writeToFileNamed(OUTPUTZIP);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
#TEST
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Read member $euro_filename
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
|
|
Packit |
0bf95d |
is_deeply(
|
|
Packit |
0bf95d |
[$archive->memberNames()],
|
|
Packit |
0bf95d |
[$euro_filename],
|
|
Packit |
0bf95d |
"Checking that a file named with unicode chars was added properly by addFile");
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
unlink(OUTPUTZIP);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Create member called $euro_filename with addDirectory
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
my $string_member = $archive->addDirectory(
|
|
Packit |
0bf95d |
File::Spec->catdir(TESTDIR, 'folder') => $euro_filename);
|
|
Packit |
0bf95d |
$archive->writeToFileNamed(OUTPUTZIP);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
#TEST
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Read member $euro_filename
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
|
|
Packit |
0bf95d |
is_deeply(
|
|
Packit |
0bf95d |
[$archive->memberNames()],
|
|
Packit |
0bf95d |
[$euro_filename.'/'],
|
|
Packit |
0bf95d |
"Checking that a file named with unicode chars was added properly by addDirectory");
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
unlink(OUTPUTZIP);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Create member called $euro_filename with addFileOrDirectory from a directory
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
my $string_member = $archive->addFileOrDirectory(
|
|
Packit |
0bf95d |
File::Spec->catdir(TESTDIR, 'folder') => $euro_filename);
|
|
Packit |
0bf95d |
$archive->writeToFileNamed(OUTPUTZIP);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
#TEST
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Read member $euro_filename
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
|
|
Packit |
0bf95d |
is_deeply(
|
|
Packit |
0bf95d |
[$archive->memberNames()],
|
|
Packit |
0bf95d |
[$euro_filename.'/'],
|
|
Packit |
0bf95d |
"Checking that a file named with unicode chars was added properly by addFileOrDirectory from a direcotry");
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
unlink(OUTPUTZIP);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Create member called $euro_filename with addFileOrDirectory from a file
|
|
Packit |
0bf95d |
# use a temp file so it's name doesn't match internal name
|
|
Packit |
0bf95d |
my $tmp_file = File::Temp->new;
|
|
Packit |
0bf95d |
$tmp_file->print("File EURO\n");
|
|
Packit |
0bf95d |
$tmp_file->flush;
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
my $string_member = $archive->addFileOrDirectory(
|
|
Packit |
0bf95d |
$tmp_file->filename => $euro_filename);
|
|
Packit |
0bf95d |
$archive->writeToFileNamed(OUTPUTZIP);
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
#TEST
|
|
Packit |
0bf95d |
{
|
|
Packit |
0bf95d |
# Read member $euro_filename
|
|
Packit |
0bf95d |
my $archive = Archive::Zip->new;
|
|
Packit |
0bf95d |
is($archive->read(OUTPUTZIP), Archive::Zip::AZ_OK);
|
|
Packit |
0bf95d |
is_deeply(
|
|
Packit |
0bf95d |
[$archive->memberNames()],
|
|
Packit |
0bf95d |
[$euro_filename],
|
|
Packit |
0bf95d |
"Checking that a file named with unicode chars was added properly by addFileOrDirectory from a file");
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
unlink(OUTPUTZIP);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
rmtree([File::Spec->catdir(TESTDIR, 'folder')]);
|
|
Packit |
0bf95d |
done_testing();
|