diff options
Diffstat (limited to 'tools/build')
-rw-r--r-- | tools/build/Makefile.in | 6 | ||||
-rw-r--r-- | tools/build/module-install.pl | 36 | ||||
-rw-r--r-- | tools/build/modules-test.pl | 60 |
3 files changed, 77 insertions, 25 deletions
diff --git a/tools/build/Makefile.in b/tools/build/Makefile.in index 7152691..29d5071 100644 --- a/tools/build/Makefile.in +++ b/tools/build/Makefile.in @@ -3,7 +3,7 @@ MOAR_DIR = moarvm NQP_DIR = nqp RAKUDO_DIR = rakudo -STAR_VERSION = 2019.03 +STAR_VERSION = 2020.01 # install location PREFIX_DIR = @prefix@ @@ -67,12 +67,12 @@ modules-install-m: rakudo-install modules-test: @backend_modules_test@ verbose-modules-test: @backend_modules_test@ -modules-test-j: modules-install-j +modules-test-j: $(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_J_INSTALL) $(MODULES) verbose-modules-test-j: modules-install-j $(PERL) tools/build/modules-test.pl --verbose $(CURDIR) $(DESTDIR)$(PERL6_J_INSTALL) $(MODULES) -modules-test-m: modules-install-m +modules-test-m: $(PERL) tools/build/modules-test.pl $(CURDIR) $(DESTDIR)$(PERL6_M_INSTALL) $(MODULES) verbose-modules-test-m: modules-install-m $(PERL) tools/build/modules-test.pl --verbose $(CURDIR) $(DESTDIR)$(PERL6_M_INSTALL) $(MODULES) diff --git a/tools/build/module-install.pl b/tools/build/module-install.pl index 9f7e038..eadb99e 100644 --- a/tools/build/module-install.pl +++ b/tools/build/module-install.pl @@ -2,21 +2,37 @@ use warnings; use strict; + my $perl6bin = shift @ARGV; my $zefbin = shift @ARGV; +my $exit = 0; +my $path_sep = $^O eq 'MSWin32' ? '\\' : '/'; -my $exit = 0; +while (<>) { + # Skip comments + next if /^\s*(#|$)/; -my $path_sep = "/"; -$path_sep = "\\" if ( $^O eq 'MSWin32' ); + # Extract only the module name from the current line + my ($module) = /(\S+)/; -while (<>) { - next if /^\s*(#|$)/; - my ($module) = /(\S+)/; - $exit ||= system $perl6bin, $zefbin, - '--/build-depends', '--/test-depends', '--/depends', - '--/p6c', '--/metacpan', '--/cpan', - '--force', 'install', "./modules$path_sep$module"; + # Create the command list + my @cmd = ( + $perl6bin, + $zefbin, + '--/build-depends', + '--/depends', + '--/test', + '--/test-depends', + '--force', + 'install', + "./modules$path_sep$module" + ); + + # Show the command that's going to be ran, for debugging purposes + printf "@cmd\n"; + + # Actually run the command + $exit ||= system "@cmd"; } exit $exit; diff --git a/tools/build/modules-test.pl b/tools/build/modules-test.pl index 396f066..c4b9d00 100644 --- a/tools/build/modules-test.pl +++ b/tools/build/modules-test.pl @@ -1,5 +1,8 @@ #! perl +use warnings; +use strict; + use Cwd; use Getopt::Long; @@ -7,19 +10,52 @@ GetOptions('verbose' => \my $verbose); my $base = shift @ARGV; my $perl6 = shift @ARGV; +my @failures; while (<>) { - next if /^\s*(#|$)/; - my ($moduledir) = /(\S+)/; - print "Testing modules/$moduledir with $perl6...\n"; - if (-d "$base/modules/$moduledir/t") { - chdir("$base/modules/$moduledir"); - system('prove', $verbose ? '-v' : (), '-e', $perl6, '-r', 't'); - } - else { - print "...no t/ directory found.\n"; - } - print "\n"; + # Skip comments + next if /^\s*(#|$)/; + + # Extract only the module name from the current line + my ($moduledir) = /(\S+)/; + + if (! -d "$base/modules/$moduledir/t") { + print "[" . getcwd . "] ...no t/ directory found.\n"; + next; + } + + # Run the tests through prove + chdir("$base/modules/$moduledir"); + + my @cmd = ( + 'prove', + $verbose ? '-v' : (), + '-e', $perl6, + '-r', + 't', + ); + + # Show the command that's going to be ran, for debugging purposes + print "[" . getcwd . "] @cmd\n"; + + # Actually run the command + my $exit = system "@cmd"; + + # Exit early if any errors occurred + if ($exit) { + push @failures, $_; + } + + print "\n"; } -0; +# If we reach this, no errors have been found +if (@failures) { + print "The following modules failed their tests:\n"; + + foreach (@failures) { + print "- $_\n"; + } + + exit 1; +} |