1#! perl
2# Copyright (C) 2007-2009,2014, Parrot Foundation.
3
4use strict;
5use warnings;
6use 5.008;
7
8use Cwd;
9use Getopt::Long;
10use File::Spec::Functions;
11
12use Test::More tests => 34;
13
14=head1 NAME
15
16tools/install/smoke_languages.pl - checks some languages in install directory
17
18=head1 SYNOPSIS
19
20parrot in install tree
21
22    % cd /usr/local/parrot-$version
23    % perl tools/install/smoke_languages.pl
24
25parrot in build tree
26
27    % perl tools/install/smoke_languages.pl --bindir=.
28
29test installation in DESTDIR:
30
31    % cd /usr/src/parrot
32    % mkdir .inst
33    % make install DESTDIR=.inst
34    % perl tools/install/smoke_languages.pl DESTDIR=.inst
35
36=head1 DESCRIPTION
37
38Checks that most of things run (or just start) into the install directory,
39try to detect missing parts.
40
41=head1 OPTIONS
42
43=over
44
45=item --bindir=/usr/bin
46
47Override default value : 'bin'
48
49=back
50
51=cut
52
53my ($bindir, $DESTDIR);
54my $opts = GetOptions(
55    'bindir=s'  => \$bindir,
56    'DESTDIR=s' => \$DESTDIR,
57);
58
59$bindir = 'bin' unless $bindir;
60
61chdir($DESTDIR) if ($DESTDIR);
62my $pwd = getcwd();
63
64sub quote {
65    my $exe = shift;
66    $exe .= '.exe' if ($^O eq 'MSWin32');
67    $exe = '"' . $exe . '"' if ($exe =~ / /);
68    return $exe;
69}
70
71my $filename;
72my $exe;
73my $out;
74my $FH;
75my $parrot = quote(catfile($pwd, $bindir, 'parrot'));
76my $winxed = quote(catfile($pwd, $bindir, 'winxed'));
77
78$out = `$parrot -V`;
79$out =~ m/version (\S+) built/;
80my $version = $1;
81
82my $langdir = ($bindir eq 'bin')
83            ? ($^O eq 'MSWin32') ? 'lib/parrot/languages' : "lib/parrot/$version/languages"
84            : 'languages';
85
86#
87# some languages
88#
89
90SKIP:
91{
92$exe = quote(catfile($pwd, $bindir, 'parrot-abc'));
93skip("abc", 1) unless (-d "$pwd/$langdir/abc" || -e $exe);
94chdir("$pwd/$langdir/abc");
95$filename = 'test.bc';
96open $FH, '>', $filename
97        or die "Can't open $filename ($!).\n";
98print $FH "1 + 2\n";
99close $FH;
100$exe = "$parrot abc.pbc" unless (-e $exe);
101$out = `$exe $filename`;
102ok($out eq "3\n", "check abc");
103unlink($filename);
104}
105
106SKIP:
107{
108$exe = quote(catfile($pwd, $bindir, 'parrot-befunge'));
109skip("Befunge", 1) unless (-d "$pwd/$langdir/befunge" || -e $exe);
110chdir("$pwd/$langdir/befunge");
111$filename = 'test.bef';
112open $FH, '>', $filename
113        or die "Can't open $filename ($!).\n";
114print $FH <<'CODE';
115<                   p 04   "v"
116  ^ >
117I                       @   _v
118                            !,
119  _   2! |                  :
120    . \-  %2/36 `21  $   <  ^<   "<- then everything is ok!" +37
121  !      #
122  3      >
123         <       v  ,  _ ^# -8 : g20 "f you can see a 4 here ->" 8 4
124                 > :8- ^
125CODE
126close $FH;
127$exe = "$parrot befunge.pbc" unless (-e $exe);
128$out = `$exe $filename`;
129ok($out eq "If you can see a 4 here ->4 <- then everything is ok!\n", "check befunge");
130unlink($filename);
131}
132
133SKIP:
134{
135$exe = quote(catfile($pwd, $bindir, 'parrot-bf'));
136skip("bf", 3) unless (-d "$pwd/$langdir/bf" || -e $exe);
137chdir("$pwd/$langdir/bf");
138$exe = "$parrot bf.pbc" unless (-e $exe);
139$out = `$exe`;
140ok($out =~ /^usage/, "check bf");
141$exe = quote(catfile($pwd, $bindir, 'parrot-bfc'));
142$exe = "$parrot bfc.pbc" unless (-e $exe);
143$out = `$exe`;
144ok($out =~ /^usage/, "check bfc");
145$exe = quote(catfile($pwd, $bindir, 'parrot-bfco'));
146$exe = "$parrot bfco.pbc" unless (-e $exe);
147$out = `$exe`;
148ok($out =~ /^usage/, "check bfco");
149}
150
151SKIP:
152{
153if (-d "$pwd/$langdir/blizkost") {
154    chdir("$pwd/$langdir/blizkost");
155}
156elsif (-d "$pwd/$langdir/perl5") {
157    chdir("$pwd/$langdir/perl5");
158}
159else {
160    skip("blizkost", 1)
161}
162$exe = quote(catfile($pwd, $bindir, 'parrot-blizkost'));
163$filename = 'test.pl';
164open $FH, '>', $filename
165        or die "Can't open $filename ($!).\n";
166print $FH "print qq{Hello, World!\n};\n";
167close $FH;
168$exe = "$parrot perl5.pbc" unless (-e $exe);
169$out = `$exe $filename`;
170ok($out eq "Hello, World!\n" || $out eq "Hello, World!\r\n", "check blizkost");
171unlink($filename);
172}
173
174SKIP:
175{
176$exe = quote(catfile($pwd, $bindir, 'parrot-cardinal'));
177skip("Cardinal", 1) unless (-d "$pwd/$langdir/cardinal" || -e $exe);
178chdir("$pwd/$langdir/cardinal");
179system($winxed, "setup.winxed");
180$exe = "$parrot cardinal.pbc" unless (-e $exe);
181$out = `$exe -e "print 'hello world';"`;
182ok($out eq "hello world", "check cardinal");
183system($winxed, "setup.winxed", "test");
184}
185
186SKIP:
187{
188$exe = quote(catfile($pwd, $bindir, 'parrot-chitchat'));
189skip("ChitChat", 1) unless (-d "$pwd/$langdir/chitchat" || -e $exe);
190chdir("$pwd/$langdir/chitchat");
191$filename = 'test.smalltalk';
192open $FH, '>', $filename
193        or die "Can't open $filename ($!).\n";
194print $FH "Transcript show: 'Hello, world!'.";
195close $FH;
196$exe = "$parrot chitchat.pbc" unless (-e $exe);
197$out = `$exe $filename`;
198ok($out eq "Hello, world!\n", "check chitchat");
199unlink($filename);
200}
201
202SKIP:
203{
204skip(".NET", 1) unless (-d "$pwd/$langdir/dotnet");
205chdir("$pwd/$langdir/dotnet");
206$out = `$parrot dotnet/net2pbc.pbc`;
207ok($out =~ /^Usage/, "check dotnet");
208}
209
210SKIP:
211{
212$exe = quote(catfile($pwd, $bindir, 'parrot-js'));
213skip("EcmaScript", 1) unless (-d "$pwd/$langdir/ecmascript" || -e $exe);
214chdir("$pwd/$langdir/ecmascript");
215$filename = 'test.js';
216open $FH, '>', $filename
217        or die "Can't open $filename ($!).\n";
218print $FH "print(\"Hello World from JS\");";
219close $FH;
220$exe = "$parrot js.pbc" unless (-e $exe);
221$out = `$exe $filename`;
222ok($out eq "Hello World from JS\n", "check ecmascript");
223unlink($filename);
224}
225
226SKIP:
227{
228$exe = quote(catfile($pwd, $bindir, 'parrot-fun'));
229skip("fun", 1) unless (-d "$pwd/$langdir/fun" || -e $exe);
230chdir("$pwd/$langdir/fun");
231$filename = 'test.fun';
232open $FH, '>', $filename
233        or die "Can't open $filename ($!).\n";
234print $FH "\"Hello World!\".";
235close $FH;
236$exe = "$parrot fun.pbc" unless (-e $exe);
237$out = `$exe $filename`;
238ok($out eq "Hello World!\n", "check fun");
239unlink($filename);
240}
241
242SKIP:
243{
244$exe = quote(catfile($pwd, $bindir, 'parrot-forth'));
245skip("fun", 1) unless (-d "$pwd/$langdir/forth" || -e $exe);
246chdir("$pwd/$langdir/forth");
247$filename = 'test.frt';
248open $FH, '>', $filename
249        or die "Can't open $filename ($!).\n";
250print $FH ".\" Hello World!\" CR";
251close $FH;
252$exe = "$parrot forth.pbc" unless (-e $exe);
253$out = `$exe $filename`;
254ok($out eq "Hello World!\n", "check forth");
255unlink($filename);
256}
257
258SKIP:
259{
260$exe = quote(catfile($pwd, $bindir, 'parrot-gil'));
261skip("gil", 1) unless (-d "$pwd/$langdir/gil" || -e $exe);
262chdir("$pwd/$langdir/gil");
263$filename = 'test.gil';
264open $FH, '>', $filename
265        or die "Can't open $filename ($!).\n";
266print $FH q{say('Hello, world!');};
267close $FH;
268$exe = "$parrot gil.pbc" unless (-e $exe);
269$out = `$exe $filename`;
270ok($out eq "Hello, world!\n", "check gil");
271unlink($filename);
272}
273
274SKIP:
275{
276$exe = quote(catfile($pwd, $bindir, 'parrot-hq9plus'));
277skip("HQ9Plus", 1) unless (-d "$pwd/$langdir/hq9plus" || -e $exe);
278chdir("$pwd/$langdir/hq9plus");
279$filename = 'test.HQ9Plus';
280open $FH, '>', $filename
281        or die "Can't open $filename ($!).\n";
282print $FH "H";
283close $FH;
284$exe = "$parrot hq9plus.pbc" unless (-e $exe);
285$out = `$exe $filename`;
286ok($out eq "Hello, world!\n", "check HQ9Plus");
287unlink($filename);
288}
289
290SKIP:
291{
292$exe = quote(catfile($pwd, $bindir, 'parrot-lisp'));
293skip("Lisp", 1) unless (-d "$pwd/$langdir/lisp" || -e $exe);
294chdir("$pwd/$langdir/lisp");
295$filename = 'test.l';
296open $FH, '>', $filename
297        or die "Can't open $filename ($!).\n";
298print $FH "( print \"Hello, World!\" )\n";
299close $FH;
300$exe = "$parrot lisp.pbc" unless (-e $exe);
301$out = `$exe $filename`;
302ok($out eq "Hello, World!\n", "check lisp");
303unlink($filename);
304}
305
306SKIP:
307{
308$exe = quote(catfile($pwd, $bindir, 'parrot-lolcode'));
309skip("LOLCODE", 1) unless (-d "$pwd/$langdir/lolcode" || -e $exe);
310chdir("$pwd/$langdir/lolcode");
311$filename = 'test.lolcode';
312open $FH, '>', $filename
313        or die "Can't open $filename ($!).\n";
314print $FH <<'CODE';
315HAI 1.2
316    VISIBLE "HAI WORLD!"
317KTHXBYE
318CODE
319close $FH;
320$exe = "$parrot lolcode.pbc" unless (-e $exe);
321$out = `$exe $filename`;
322ok($out eq "HAI WORLD!\n", "check lolcode");
323unlink($filename);
324}
325
326SKIP:
327{
328delete $ENV{LUA_INIT};
329delete $ENV{LUA_PATH};
330$exe = quote(catfile($pwd, $bindir, 'parrot-lua'));
331skip("Lua", 1) unless (-d "$pwd/$langdir/lua" || -e $exe);
332chdir("$pwd/$langdir/lua");
333$exe = "$parrot lua.pbc" unless (-e $exe);
334$out = `$exe -e "print(nil)"`;
335ok($out eq "nil\n", "check lua");
336}
337
338SKIP:
339{
340$exe = quote(catfile($pwd, $bindir, 'parrot-m4'));
341skip("m4", 1) unless (-d "$pwd/$langdir/m4" || -e $exe);
342chdir("$pwd/$langdir/m4");
343$exe = "$parrot m4.pbc" unless (-e $exe);
344$out = `$exe`;
345ok($out =~ /^Usage/, "check m4");
346}
347
348SKIP:
349{
350$exe = quote(catfile($pwd, $bindir, 'parrot-markdown'));
351skip("Markdown", 1) unless (-d "$pwd/$langdir/markdown" || -e $exe);
352chdir("$pwd/$langdir/markdown");
353$filename = 'test.text';
354open $FH, '>', $filename
355        or die "Can't open $filename ($!).\n";
356print $FH "Hello, World!\n\n";
357close $FH;
358$exe = "$parrot markdown.pbc" unless (-e $exe);
359$out = `$exe $filename`;
360ok($out eq "<p>Hello, World!</p>\n", "check markdown");
361unlink($filename);
362}
363
364SKIP:
365{
366$exe = quote(catfile($pwd, $bindir, 'parrot-matrixy'));
367skip("matrixy", 1) unless (-d "$pwd/$langdir/matrixy" || -e $exe);
368chdir("$pwd/$langdir/matrixy");
369$filename = 'test.oct';
370open $FH, '>', $filename
371        or die "Can't open $filename ($!).\n";
372print $FH "printf(\"Hello, world!\n\");";
373close $FH;
374$exe = "$parrot matrixy.pbc" unless (-e $exe);
375$out = `$exe $filename`;
376ok($out eq "Hello, world!\n", "check matrixy");
377unlink($filename);
378}
379
380SKIP:
381{
382$exe = quote(catfile($pwd, $bindir, 'parrot-apl'));
383skip("Paraplegic", 1) unless (-d "$pwd/$langdir/paraplegic" || -e $exe);
384chdir("$pwd/$langdir/paraplegic");
385$filename = 'test.apl';
386open $FH, '>', $filename
387        or die "Can't open $filename ($!).\n";
388print $FH "\"Hello world!\"";
389close $FH;
390$exe = "$parrot apl.pbc" unless (-e $exe);
391$out = `$exe $filename`;
392ok($out eq "Hello world!\n", "check Paraplegic");
393unlink($filename);
394}
395
396SKIP:
397{
398$exe = quote(catfile($pwd, $bindir, 'parrot-pheme'));
399skip("Pheme", 1) unless (-d "$pwd/$langdir/pheme" || -e $exe);
400chdir("$pwd/$langdir/pheme");
401$filename = 'test.l';
402open $FH, '>', $filename
403        or die "Can't open $filename ($!).\n";
404print $FH "( write \"Hello, World!\\n\" )\n";
405close $FH;
406$exe = "$parrot pheme.pbc" unless (-e $exe);
407$out = `$exe $filename`;
408ok($out eq "Hello, World!\n", "check pheme");
409unlink($filename);
410}
411
412SKIP:
413{
414$exe = quote(catfile($pwd, $bindir, 'parrot-pipp'));
415skip("Pipp", 1) unless (-d "$pwd/$langdir/pipp" || -e $exe);
416chdir("$pwd/$langdir/pipp");
417$filename = 'test.php';
418open $FH, '>', $filename
419        or die "Can't open $filename ($!).\n";
420print $FH "<?php echo \"Hello, World!\\n\"; ?>";
421close $FH;
422$exe = "$parrot pipp.pbc" unless (-e $exe);
423$out = `$exe $filename`;
424ok($out eq "Hello, World!\n", "check pipp");
425unlink($filename);
426}
427
428SKIP:
429{
430$exe = quote(catfile($pwd, $bindir, 'parrot-porcupine'));
431skip("porcupine", 1) unless (-d "$pwd/$langdir/porcupine" || -e $exe);
432chdir("$pwd/$langdir/porcupine");
433$filename = 'test.pas';
434open $FH, '>', $filename
435        or die "Can't open $filename ($!).\n";
436print $FH <<'CODE';
437program hello;
438begin
439    writeln('Hello, world!');
440end.
441CODE
442close $FH;
443$exe = "$parrot porcupine.pbc" unless (-e $exe);
444$out = `$exe $filename`;
445ok($out eq "Hello, world!\n", "check porcupine");
446unlink($filename);
447}
448
449SKIP:
450{
451$exe = quote(catfile($pwd, $bindir, 'parrot-primitivearc'));
452skip("primitivearc", 1) unless (-d "$pwd/$langdir/primitivearc" || -e $exe);
453chdir("$pwd/$langdir/primitivearc");
454$filename = 'test.arc';
455open $FH, '>', $filename
456        or die "Can't open $filename ($!).\n";
457print $FH q{"Hello, world!\n"};
458close $FH;
459$exe = "$parrot primitivearc.pbc" unless (-e $exe);
460$out = `$exe $filename`;
461ok($out eq "Hello, world!\n\n", "check primitivearc");
462unlink($filename);
463}
464
465SKIP:
466{
467$exe = quote(catfile($pwd, $bindir, 'parrot-punie'));
468skip("Punie", 1) unless (-d "$pwd/$langdir/punie" || -e $exe);
469chdir("$pwd/$langdir/punie");
470$filename = 'test.p1';
471open $FH, '>', $filename
472        or die "Can't open $filename ($!).\n";
473print $FH "print \"Hello, World!\";\n";
474close $FH;
475$exe = "$parrot punie.pbc" unless (-e $exe);
476$out = `$exe $filename`;
477ok($out eq "Hello, World!", "check punie");
478unlink($filename);
479}
480
481SKIP:
482{
483$exe = quote(catfile($pwd, $bindir, 'parrot-pynie'));
484skip("Pynie", 1) unless (-d "$pwd/$langdir/pynie" || -e $exe);
485chdir("$pwd/$langdir/pynie");
486$filename = 'test.py';
487open $FH, '>', $filename
488        or die "Can't open $filename ($!).\n";
489print $FH "print('Hello, World!')\n";
490close $FH;
491$exe = "$parrot pynie.pbc" unless (-e $exe);
492$out = `$exe $filename`;
493ok($out eq "Hello, World!\n", "check pynie");
494unlink($filename);
495}
496
497SKIP:
498{
499$exe = quote(catfile($pwd, $bindir, 'perl6'));
500skip("Rakudo", 1) unless (-d "$pwd/$langdir/rakudo" || -e $exe);
501chdir("$pwd/$langdir/rakudo");
502$exe = "$parrot perl6.pbc" unless (-e $exe);
503$out = `$exe -e "say 'hello world'"`;
504ok($out eq "hello world\n", "check rakudo");
505}
506
507SKIP:
508{
509$exe = quote(catfile($pwd, $bindir, 'parrot-shakespeare'));
510skip("Shakespeare", 1) unless (-d "$pwd/$langdir/shakespeare" || -e $exe);
511chdir("$pwd/$langdir/shakespeare");
512$filename = 'test.spl';
513open $FH, '>', $filename
514        or die "Can't open $filename ($!).\n";
515print $FH <<'CODE';
516The Infamous Hello World Program.
517
518Romeo, a young man with a remarkable patience.
519Juliet, a likewise young woman of remarkable grace.
520Ophelia, a remarkable woman much in dispute with Hamlet.
521Hamlet, the flatterer of Andersen Insulting A/S.
522
523
524                    Act I: Hamlet's insults and flattery.
525
526                    Scene I: The insulting of Romeo.
527
528[Enter Hamlet and Romeo]
529
530Hamlet:
531 You lying stupid fatherless big smelly half-witted coward!
532 You are as stupid as the difference between a handsome rich brave
533 hero and thyself! Speak your mind!
534
535 You are as brave as the sum of your fat little stuffed misused dusty
536 old rotten codpiece and a beautiful fair warm peaceful sunny summer's
537 day. You are as healthy as the difference between the sum of the
538 sweetest reddest rose and my father and yourself! Speak your mind!
539
540 You are as cowardly as the sum of yourself and the difference
541 between a big mighty proud kingdom and a horse. Speak your mind.
542
543 Speak your mind!
544
545[Exit Romeo]
546
547                    Scene II: The praising of Juliet.
548
549[Enter Juliet]
550
551Hamlet:
552 Thou art as sweet as the sum of the sum of Romeo and his horse and his
553 black cat! Speak thy mind!
554
555[Exit Juliet]
556
557                    Scene III: The praising of Ophelia.
558
559[Enter Ophelia]
560
561Hamlet:
562 Thou art as lovely as the product of a large rural town and my amazing
563 bottomless embroidered purse. Speak thy mind!
564
565 Thou art as loving as the product of the bluest clearest sweetest sky
566 and the sum of a squirrel and a white horse. Thou art as beautiful as
567 the difference between Juliet and thyself. Speak thy mind!
568
569[Exeunt Ophelia and Hamlet]
570
571
572                    Act II: Behind Hamlet's back.
573
574                    Scene I: Romeo and Juliet's conversation.
575
576[Enter Romeo and Juliet]
577
578Romeo:
579 Speak your mind. You are as worried as the sum of yourself and the
580 difference between my small smooth hamster and my nose. Speak your
581 mind!
582
583Juliet:
584 Speak YOUR mind! You are as bad as Hamlet! You are as small as the
585 difference between the square of the difference between my little pony
586 and your big hairy hound and the cube of your sorry little
587 codpiece. Speak your mind!
588
589[Exit Romeo]
590
591                    Scene II: Juliet and Ophelia's conversation.
592
593[Enter Ophelia]
594
595Juliet:
596 Thou art as good as the quotient between Romeo and the sum of a small
597 furry animal and a leech. Speak your mind!
598
599Ophelia:
600 Thou art as disgusting as the quotient between Romeo and twice the
601 difference between a mistletoe and an oozing infected blister! Speak
602 your mind!
603
604[Exeunt]
605
606CODE
607close $FH;
608$exe = "$parrot shakespeare.pbc" unless (-e $exe);
609$out = `$exe $filename`;
610ok($out eq "Hello World!\n", "check shakespeare");
611unlink($filename);
612}
613
614SKIP:
615{
616$exe = quote(catfile($pwd, $bindir, 'parrot-steme'));
617skip("steme", 1) unless (-d "$pwd/$langdir/steme" || -e $exe);
618chdir("$pwd/$langdir/steme");
619$filename = 'test.scm';
620open $FH, '>', $filename
621        or die "Can't open $filename ($!).\n";
622print $FH "( say \"Hello, World!\" )\n";
623close $FH;
624$exe = "$parrot steme.pbc" unless (-e $exe);
625$out = `$exe $filename`;
626ok($out eq "Hello, World!\n", "check steme");
627unlink($filename);
628}
629
630SKIP:
631{
632$exe = quote(catfile($pwd, $bindir, 'parrot-squaak'));
633skip("Squaak", 1) unless (-d "$pwd/$langdir/squaak" || -e $exe);
634chdir("$pwd/$langdir/squaak");
635$filename = 'test.squaak';
636open $FH, '>', $filename
637        or die "Can't open $filename ($!).\n";
638print $FH "print(\"Hello, World!\")\n";
639close $FH;
640$exe = "$parrot squaak.pbc" unless (-e $exe);
641$out = `$exe $filename`;
642ok($out eq "Hello, World!\n", "check squaak");
643unlink($filename);
644}
645
646SKIP:
647{
648$exe = quote(catfile($pwd, $bindir, 'parrot-unl'));
649skip("unlambda", 1) unless (-d "$pwd/$langdir/unlambda" || -e $exe);
650chdir("$pwd/$langdir/unlambda");
651$filename = 'test.unl';
652open $FH, '>', $filename
653        or die "Can't open $filename ($!).\n";
654print $FH <<'CODE';
655# hello world
656`r```````````.H.e.l.l.o. .w.o.r.l.di
657CODE
658close $FH;
659$exe = "$parrot unl.pbc" unless (-e $exe);
660$out = `$exe $filename`;
661ok($out eq "Hello world\n", "check unlambda");
662unlink($filename);
663}
664
665SKIP:
666{
667$exe = quote(catfile($pwd, $bindir, 'winxed'));
668skip("Winxed", 1) unless (-d "$pwd/$langdir/winxed" || -e $exe);
669chdir("$pwd/$langdir/winxed");
670$exe = "$parrot build/winxed_installed.pbc" unless (-e $exe);
671$out = `$exe -e "print('hello world');"`;
672ok($out eq "hello world", "check winxed");
673}
674
675SKIP:
676{
677$exe = quote(catfile($pwd, $bindir, 'parrot-wmlsi'));
678skip("WMLScript", 1) unless (-d "$pwd/$langdir/wmlscript" || -e $exe);
679skip("WMLScript, not wmlsc", 1) unless (`wmlsc -h` =~ /wmlsc/);
680chdir("$pwd/$langdir/wmlscript");
681
682$filename = 'test.wmls';
683open $FH, '>', $filename
684        or die "Can't open $filename ($!).\n";
685print $FH <<'CODE';
686extern function main()
687{
688    Console.println("Hello World!");
689}
690CODE
691close $FH;
692`wmlsc $filename`;
693$exe = "$parrot wmlsi.pbc" unless (-e $exe);
694$out = `$exe ${filename}c main`;
695ok($out eq "Hello World!\n", "check wmlscript");
696unlink($filename);
697unlink($filename . 'c');
698}
699
700# Local Variables:
701#   mode: cperl
702#   cperl-indent-level: 4
703#   fill-column: 100
704# End:
705# vim: expandtab shiftwidth=4:
706