annotate t/harness6 @ 0:c341f82e7ad7 default tip

Rakudo branch in cr.ie.u-ryukyu.ac.jp
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 26 Dec 2019 16:50:27 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #!/usr/bin/env perl6
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 # note: Due to a limitation in argument parsing options that should be passed
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 # through to fudgeall have to come after all other options
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 # We keep TAP module in a non-core repo, so here we either clone
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 # it or just pull in any changes into the directory with the module
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 # that we then load:
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 use lib <t/packages/tap-harness6/lib>;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 constant $tap-dir = 't/packages/tap-harness6'.IO;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 constant $tap-repo = 'https://github.com/perl6/tap-harness6';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 if $tap-dir.d {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 say 'Updating TAP::Harness checkout...';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 run :cwd($tap-dir), <git pull>;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 else {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 say 'TAP::Harness checkout not found; going to clone...';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 run <git clone>, $tap-repo, $tap-dir.absolute;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 require ::('TAP');
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 constant FULL_ROAST_TEST_LIST_FILE = 't/spectest.data';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 constant ROAST_VERSION_FILE = 't/spec/VERSION';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 my $vm = $*VM.name;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 sub MAIN(
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 Str :$tests-from-file is copy = Str,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 Bool :$fudge = False,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 Int :$verbosity = (%*ENV<TEST_VERBOSE> // 0).Int,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 Int :$jobs = (%*ENV<TEST_JOBS> // 1).Int,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 Bool :$quick = False,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 Bool :$stress = False,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 Bool :$randomize = False,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 Bool :$no-mix-slow = $*DISTRO.is-win || $jobs == 1,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 Str :$perlpath = ~$*EXECUTABLE,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 Str :$perl5path = 'perl',
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 *@files,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 ) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 my @slow;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 with $tests-from-file {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 $tests-from-file .= &convert-to-versioned-file;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 my $inline-perl5-is-installed = run(
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 $perlpath, '-e', 'exit 1 if (try require Inline::Perl5) === Nil'
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 ).exitcode == 0;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 unless $inline-perl5-is-installed {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 say 'Inline::Perl5 not installed: not running Perl 5 integration tests';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 say 'You can install Inline::Perl5 into the build directory with';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 say '';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 say " zef --install-to=inst#{$*PROGRAM.parent}/../gen/build_rakudo_home/site install Inline::Perl5";
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 say '';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 my %traits = :perl5($inline-perl5-is-installed),
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 :long(!$quick), :$stress, :slow,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 :jvm($vm eq 'jvm'), :moar($vm eq 'moar'),
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 :conc(?($vm eq any("jvm","moar")));
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 my $recode-path = $*SPEC !~~ IO::Spec::Unix;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 for $tests-from-file.IO.lines {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 next if / ^ \s* '#' / or not m/ \S /;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 my ($fn, $fudgespec) = .trim.split(/ \s+ '#' \s* /);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 my @specs = $fudgespec ?? $fudgespec.words !! ();
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 next if not all(%traits{@specs});
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 $fn ~~ s{ ^ <!before "t/spec/"> } = "t/spec/";
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 $fn = $*SPEC.catdir($fn.split('/')) if $recode-path;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 if $fn.IO ~~ :r {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 if not $no-mix-slow and any(@specs) eq 'slow' {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 push @slow, $fn;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 else {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 push @files, $fn;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 } else {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 warn "Missing test file: $fn\n";
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 my @tfiles = $randomize ?? @files.flatmap(&all-in).pick(*) !! @files.flatmap(&all-in).sort;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 if (@slow) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 @slow.=flatmap(&all-in);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 @tfiles = (roundrobin @slow, batch(@tfiles / @slow, @tfiles)).flat;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 if $fudge {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 @tfiles = batch(200, @tfiles).flatmap(&fudge);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 my $harness = ::('TAP::Harness').new(
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 :handlers[get-handler($vm, :$perlpath)],
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 :ignore-exit,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 # :trap,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 :$jobs,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 :$verbosity,
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 :err('ignore'),
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 );
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 await $harness.run(@tfiles).waiter;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 sub batch(Int(Real) $size, @files) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 gather {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 while @files {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 my @batch = @files.splice: 0, $size;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 take @batch;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 multi all-in(Str $start) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 all-in($start.IO);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 multi all-in(IO::Path $start) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 return ~$start unless $start.d;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 return gather {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 listdir($start);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 sub listdir(IO::Path $start) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 state $test = none($*SPEC.updir, $*SPEC.curdir, '.git');
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 for $start.dir(:$test) -> $file {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 if $file.d {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 listdir($file);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 elsif $file ~~ / \. t $ / {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 take ~$file;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 sub fudge(@files) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 my $cmd = run($perl5path, 't/spec/fudgeall', '--keep-exit-code', "rakudo.$vm", |@files, :out);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 $cmd.out.slurp-rest.split(' ').map(*.chomp);
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 # multi sub get-handler('jvm') {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 # unlink 'TESTTOKEN';
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 # state $server = run ".".IO.child("perl6-eval-server"), <-bind-stdin -cookie TESTTOKEN -app perl6.jar>, :in;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 # sleep 1;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 # ::('TAP::Harness::SourceHandler::Exec').new($perl5path, './eval-client.pl', 'TESTTOKEN', 'run');
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 # }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 multi sub get-handler(Any, :$perlpath) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 ::('TAP::Harness::SourceHandler::Perl6').new(:incdirs['lib'], :path($perlpath));
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 sub note-in-box { note "{'#' x 76}\n\n$^text\n\n{'#' x 76}\n" }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 sub convert-to-versioned-file ($file) {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 return $file unless $file eq FULL_ROAST_TEST_LIST_FILE;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 my $ver = .lines.grep({!/\s* '#'/ and .trim.chars}).head.trim
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 with ROAST_VERSION_FILE.IO.open
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 orelse note-in-box "Failed to open roast VERSION file in "
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 ~ "{ROAST_VERSION_FILE}: " ~ .exception.message
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 ~ "\nDefaulting to test files from $file"
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 and return $file;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 # Make a new test file name using the version of the roast. The master
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 # branch would have version something like `6.d-proposals`; in such
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 # a case, we'll use the default test file list
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 my $new-file = $file ~ (".$ver" unless $ver.lc.contains: 'propos');
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 if $new-file.IO.r {
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 say "Testing Roast version $ver using test file list from $new-file";
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 return $new-file;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 note-in-box "Test list file `$new-file` for Roast version $ver does not exist\n"
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 ~ "or isn't readable. Defaulting to $file";
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 return $file;
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 sub USAGE { say "\n" ~ (require ::('Pod::To::Text')).render($=pod[0]) ~ "\n" }
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 =begin pod
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 =head1 NAME
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 t/harness - run the harness tests for Rakudo.
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 =head1 SYNOPSIS
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 t/harness [options] [files]
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 Options:
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 --help - display the help message.
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 --tests-from-file=[filename] - get the tests from the filename.
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 --fudge - apply backend specific fixups to various files
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 --verbosity=[level] - set the verbosity level.
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 --jobs - number of jobs. Defaults to TEST_JOBS env var if specified, or 1
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 --quick - do not run tests marked as long-running
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 --stress - run tests marked as stress tests
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 --randomize randomize the order in which test-files are processed.
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 --no-mixslow - don't spread tests marked "slow" equally over the run (on non-Win)
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 --perlpath - path to perl6 (defaults to $*EXECUTABLE)
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 --perl5path - path to Perl executable for various helper utilities (defaults to 'perl')
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201
c341f82e7ad7 Rakudo branch in cr.ie.u-ryukyu.ac.jp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 =end pod