The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use IO::Handle;

use Dancer::MIME;
use Dancer ':syntax';
use Dancer::ModuleLoader;

use Test::More import => ['!pass'];

plan tests => 3;

# Test that MIME::Types gets initialised before the fork, as it'll
# fail to read from DATA in all bar one child process in a
# mod_perl-type preforking situation.
#
# See the comment near the top of Dancer/MIME.pm, and GH#136. 

my @cts;
for (my $i = 0; $i < 3; $i++) {
    my ($p, $c) = (IO::Handle->new, IO::Handle->new);
    pipe($p, $c);

    if (my $pid = fork()) {
        # parent
        $c->close;
        my $ct = $p->getline;
        $p->close();
        waitpid($pid, 0);
        push @cts, $ct;
    }
    else {
        # child
        $p->close;
        my $mime = Dancer::MIME->instance();
        my $type = $mime->for_name('css');
        $c->print($type);
        $c->close;
        exit 0;
    }
}

is $cts[0] => 'text/css';
is $cts[1] => 'text/css';
is $cts[2] => 'text/css';