UNPKG

jsx

Version:

a faster, safer, easier JavaScript

67 lines (57 loc) 1.67 kB
#!perl use strict; use warnings; use File::Temp qw(tempdir); use File::Copy qw(copy); use Test::More; plan skip_all => 'JSX_OPTS specified' if $ENV{JSX_OPTS}; plan tests => 36; my @opts = ( "", "--release", "--minify", "--release --minify", ); { my $tmpdir = tempdir('test.tmp.XXXXXX', CLEANUP => 1, DIR => "."); my @expected_src; # compile 2nd gens, and store the expected source (to be compared with the result of 3rd gens) for (my $gen2 = 0; $gen2 < @opts; $gen2++) { is compile( "bin/jsx", "$tmpdir/gen2-$gen2", $opts[$gen2], ), 0, "create 2nd gen '$opts[$gen2]'"; $expected_src[$gen2] = slurp("$tmpdir/gen2-$gen2"); } # compile 3rd gens, and check their output for (my $gen2 = 0; $gen2 < @opts; $gen2++) { for (my $gen3 = 0; $gen3 < @opts; $gen3++) { is compile( "$tmpdir/gen2-$gen2", "$tmpdir/gen3.tmp", $opts[$gen3], ), 0, "create 3rd gen '$opts[$gen3]' from 2nd gen '$opts[$gen2]'"; ok( $expected_src[$gen3] eq slurp("$tmpdir/gen3.tmp"), "output of 3rd gen is same for '$opts[$gen3]'" ); } } } done_testing; sub compile { my ($bootstrap, $target, @opts) = @_; system( "make", "compiler-core", "BOOTSTRAP_COMPILER=$bootstrap", "COMPILER_TARGET=$target", "COMPILER_COMPILE_OPTS=" . join(" ", @opts, "--executable", "node"), ); } sub slurp { my $fn = shift; open my $fh, "<", $fn or die "could not open file:$fn:$!"; do { local $/; <$fh> }; }