1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #! /usr/bin/env perl
- use strict;
- use Config;
- BEGIN {
- unshift @INC, 't';
- require TestBC;
- }
- use Test::More;
- # but works locally
- plan skip_all => "mingw on appveyor"
- if $^O eq 'MSWin32' and $Config{cc} eq 'gcc' and $ENV{APPVEYOR};
- plan tests => 4;
- my $runperl = $^X =~ m/\s/ ? qq{"$^X"} : $^X;
- my $Mblib = Mblib();
- my $perlcc = perlcc();
- $perlcc .= " --Wc=-O1" if $ENV{PERL_CORE} and $Config{ccflags} =~ /-flto/;
- my $exe = $^O eq 'MSWin32' ? 'ccode_argv.exe' : 'ccode_argv';
- my $pl = $^O eq 'MSWin32' ? "t\\c_argv.pl" : "t/c_argv.pl";
- my $plc = $pl . "c";
- my $d = <DATA>;
- open F, ">", $pl;
- print F $d;
- close F;
- diag "$runperl $Mblib $perlcc -O3 -o $exe -r $pl ok 1" if $ENV{TEST_VERBOSE};
- is(`$runperl $Mblib $perlcc -O3 -o $exe -r $pl ok 1`, "ok 1\n", #1
- "perlcc -r file args");
- unlink($exe);
- open F, ">", $pl;
- my $d2 = $d;
- $d2 =~ s/ ok 1/ ok 2/;
- print F $d2;
- close F;
- {
- my $result = `$runperl $Mblib $perlcc -O -o $exe -r $pl ok 2`;
- my $expected = "ok 2\n";
- my $cmt = "perlcc -O -r file args";
- if ($result eq $expected) {
- is ($result, $expected, $cmt); #2
- } else {
- TODO: {
- local $TODO = "unreliable CC testcase";
- is($result, $expected, $cmt);
- }
- }
- }
- unlink($exe);
- open F, ">", $pl;
- my $d3 = $d;
- $d3 =~ s/ ok 1/ ok 3/;
- print F $d3;
- close F;
- if ($] < 5.022) {
- is(`$runperl $Mblib $perlcc -B -r $pl ok 3`, "ok 3\n", #3
- "perlcc -B -r file args");
- } else {
- ok(1, "SKIP BC 5.22");
- }
- # issue 30
- $d = '
- sub f1 {
- my($self) = @_;
- $self->f2;
- }
- sub f2 {}
- sub new {}
- print "@ARGV\n";';
- open F, ">", $pl;
- print F $d;
- close F;
- `$runperl $Mblib $perlcc -o $exe $pl`;
- $exe = "./$exe" unless $^O eq 'MSWin32';
- is (`$exe a b c`, "a b c\n",
- "issue 30: perlcc -o $exe; $exe args"); #4
- END {
- unlink($exe, $pl, $plc);
- }
- __DATA__
- print @ARGV?join(" ",@ARGV):"not ok 1 # empty \@ARGV","\n";
|