Blob Blame History Raw
use strict;
use warnings;

use lib 't/lib';

use Cwd qw( abs_path );
use File::Temp qw( tempdir );
use Test::AnyOf;
use Test::More 0.96;

use File::LibMagic;

{
    ## no critic (InputOutput::RequireCheckedSyscalls)
    skip 'This platform does not support symlinks', 1
        unless eval { symlink( q{}, q{} ); 1 };
    ## use critic

    my $dir = tempdir( CLEANUP => 1 );
    my $link_file = "$dir/link-to-tiny.pdf";
    symlink abs_path() . '/t/samples/tiny.pdf' => $link_file
        or die "Cannot create symlink to t/samples/tiny.pdf: $!";

    my $info = File::LibMagic->new( follow_symlinks => 1 )
        ->info_from_filename($link_file);

    if ( is( ref $info, 'HASH', 'info_from_filename returns hash' ) ) {
        is_deeply(
            [ sort keys %$info ],
            [qw[ description encoding mime_type mime_with_encoding ]],
            'info hash contains the expected keys'
        );
        is(
            $info->{description}, 'PDF document, version 1.4',
            'description'
        );
        is( $info->{mime_type}, 'application/pdf', 'mime type' );
        like( $info->{encoding}, qr/^(?:binary|unknown)$/, 'encoding' );
        like(
            $info->{mime_with_encoding},
            qr{^application/pdf; charset=(?:binary|unknown)$},
            'mime with charset'
        );
    }
}

{
    my $info
        = File::LibMagic->new()->info_from_filename('t/samples/tiny-pdf.gz');

    is_any_of(
        $info->{mime_type},
        [ 'application/gzip', 'application/x-gzip' ],
        'gzip file is application/gzip or application/x-gzip by default'
    );

    $info
        = File::LibMagic->new( uncompress => 1 )
        ->info_from_filename('t/samples/tiny-pdf.gz');

    is(
        $info->{mime_type},
        'application/pdf',
        'gzip file is application/pdf when uncompressed'
    );
}

done_testing();