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