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

my $dir = Path::Class::tempdir(CLEANUP => 1);
copy_dist_files_into_dir($dir);
chdir $dir;

my $status = system 'dzil build >/dev/null 2>/dev/null';
is $status << 0, 0, 'zero exit status';

my $dist_dir = $dir->subdir('Internal-Deps-Script-0.42');
ok -d $dist_dir,
    'dist dir';

ok -f $dir->file('Internal-Deps-Script-0.42.tar.gz'),
    'dist tar.gz';

my $packed_script_file = $dist_dir->file('bin/internal_deps.pl');
like scalar $packed_script_file->slurp,
    qr{\A [#]!/usr/bin/env \s perl}xms,
    'shebang';

is `$^X $packed_script_file`,
    'script with internal deps is running',
    'script output';

done_testing;


sub copy_dist_files_into_dir {
    my $dir = shift;

    foreach my $subdir (qw(t lib/Internal/Deps bin)) {
        $dir->subdir($subdir)->mkpath;
    }

    $dir->file('dist.ini')->spew(dist_ini());
    $dir->file('lib/Internal/Deps/Script.pm')->spew(script_pm());
    $dir->file('bin/internal_deps.pl')->spew(script());
}

sub dist_ini { <<'DIST_INI' }
name    = Internal-Deps-Script
version = 0.42
author  = CPAN Tester
license = Perl_5
copyright_holder = CPAN Tester

[@Classic]

[FatPacker]
script = bin/internal_deps.pl
DIST_INI

sub script_pm { <<'SCRIPT_PM' }
package Internal::Deps::Script;
# ABSTRACT: Internal Deps Script

sub new {
    my $class = shift;

    return bless {}, $class;
}

sub run {
    my $self = shift;

    print 'script with internal deps is running';
}

1;
SCRIPT_PM

sub script { <<'NO_DEPS_PL' }
#!/usr/bin/env perl
use strict;
use warnings;
use Internal::Deps::Script;

Internal::Deps::Script->new->run;

NO_DEPS_PL