#!/usr/bin/perl -w use strict; my $nt; BEGIN { $nt = 5 } use Test::More tests=> 2*$nt; SKIP: { skip "t/twolexers.eyp not found", $nt unless ($ENV{DEVELOPER} && -r "t/twolexers.eyp" && -x "./eyapp"); unlink 't/twolexers.pl'; my $r = system(q{perl -I./lib/ eyapp -TC -s -o t/twolexers.pl t/twolexers.eyp}); ok(!$r, "standalone option"); ok(-s "t/twolexers.pl", "modulino standalone exists"); ok(-x "t/twolexers.pl", "modulino standalone has execution permits"); local $ENV{PERL5LIB}; my $eyapppath = shift @INC; # Supress ~/LEyapp/lib from search path eval { $r = qx{t/twolexers.pl -t -i -m 1 -c 'AA%%BB'}; }; ok(!$@,'t/twolexers.eyp executed as standalone modulino'); my $expected = q{ In Lexer 1 In Lexer 1 In Lexer 1 In Lexer 2 In Lexer 2 In Lexer 2 s_is_first_second( first_is_A_first( TERMINAL[A], first_is_A( TERMINAL[A] ) ), second_is_A_second( TERMINAL[B], second_is_A( TERMINAL[B] ) ) ) }; $expected =~ s/\s+//g; $expected = quotemeta($expected); $expected = qr{$expected}; $r =~ s/\s+//g; like($r, $expected,'AST for "AA%%BB"'); unlink 't/twolexers.pl'; } SKIP: { skip "t/twolexers2.eyp not found", $nt unless ($ENV{DEVELOPER} && -r "t/twolexers2.eyp" && -x "./eyapp"); unlink 't/twolexers2.pl'; my $r = system(q{perl -I./lib/ eyapp -TC -s -o t/twolexers2.pl t/twolexers2.eyp}); ok(!$r, "standalone option"); ok(-s "t/twolexers2.pl", "modulino standalone exists"); ok(-x "t/twolexers2.pl", "modulino standalone has execution permits"); local $ENV{PERL5LIB}; my $eyapppath = shift @INC; # Supress ~/LEyapp/lib from search path eval { $r = qx{t/twolexers2.pl -t -i -m 1 -c 'A A %% x1 34 '}; }; ok(!$@,'t/twolexers2.eyp executed as standalone modulino'); my $expected = q{ In Lexer 2 In Lexer 2 In Lexer 2 s_is_first_second( first_is_A_first( TERMINAL[A], first_is_A( TERMINAL[A] ) ), second_is_A_second( TERMINAL[x1], second_is_A( TERMINAL[34] ) ) ) }; $expected =~ s/\s+//g; $expected = quotemeta($expected); $expected = qr{$expected}; $r =~ s/\s+//g; like($r, $expected,'AST for "A A %% x1 34 "'); unlink 't/twolexers2.pl'; }