Convos

 view release on metacpan or  search on metacpan

t/init-script.t  view on Meta::CPAN

use Mojo::Base -strict;
use Mojo::Asset::File;
use Mojo::Util 'spurt';
use File::Spec;
use Test::More;

my $convos = File::Spec->catfile(qw( script convos ));
$ENV{CONVOS_INIT_CONFIG_FILE} = 't/etc/default/convos';
plan skip_all => "Cannot execute $convos" unless -x $convos;
plan skip_all => "This test requires your Perl to to be the default one in your PATH.\n"
  . "Set CONVOS_TEST_INIT=1 to run it"
  unless $ENV{CONVOS_TEST_INIT};

{
  my $script = get_init_file('backend');
  my $src    = $script->slurp;

  like $src, qr{\bconvos-backend \$1},      'convos-backend init script generated by script/convos';
  like $src, qr{/etc/default/convos},       'convos-backend init script source /etc/default/convos';
  like $src, qr{^MOJO_MODE='production';}m, 'MOJO_MODE is set for convos-backend';
  like $src, qr{^set -a;}m,                 'export on for convos-frontend';

  delete $script->{handle};
  like run($script->path, 'help'), qr{Usage: convos backend.*start.*stop}, 'backend init script can help';
  like run($script->path, 'env'), qr{CONVOS_WHATEVER=bar}, 'init script source environemnt variables';
}

{
  my $script = get_init_file('frontend');
  my $src    = $script->slurp;

  like $src, qr{\bconvos-frontend \$1},     'convos-frontend init script generated by script/convos';
  like $src, qr{/etc/default/convos},       'convos-frontend init script source /etc/default/convos';
  like $src, qr{^MOJO_MODE='production';}m, 'MOJO_MODE is set for convos-frontend';
  like $src, qr{^set -a;}m,                 'export on for convos-backend';

  delete $script->{handle};
  like run($script->path, 'help'), qr{Usage: convos frontend.*start.*stop}, 'frontend init script can help';
}

done_testing;

sub get_init_file {
  my $type  = shift;
  my $asset = Mojo::Asset::File->new;
  open my $INIT_FILE, '-|', $convos => $type => 'get_init_file' or die $!;
  $asset->add_chunk($_) while <$INIT_FILE>;
  $asset;
}

sub run {
  my $output = '';
  chmod 0750, $_[0];
  open my $CMD, '-|', @_ or die "@_: $!";
  $output .= $_ while <$CMD>;
  $output;
}



( run in 2.108 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )