The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/pugs

use v6;
use Test;

=pod

Test evaluation a script read from STDIN, as
indicated by the C<-> switch.

=cut

my @examples = map -> Junction $_ { $_.values } (
   any('say qq.Hello Pugs.',
       'say @ARGS',
   )
);

plan +@examples;

diag "Running under $*OS";

my ($pugs,$redir,$echo) = ("./pugs", ">", "echo");

if($*OS eq any<MSWin32 mingw msys cygwin>) {
  $pugs = 'pugs.exe';
};

sub nonce () { return (".$*PID." ~ (int rand 1000) ~ ".tmp") }
my $tempfile = "temp-ex-output" ~ nonce;
for @examples -> $ex {
  my $command = qq($echo $ex | $pugs - "Hello Pugs" $redir $tempfile);
  diag $command;
  system $command;

  my $expected = "Hello Pugs\n";
  my $got      = slurp $tempfile;

  is $got, $expected, "Running a script from stdin works";
  unlink $tempfile;
}