This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
4e6c33801d3fadc9ff7342d4fc008e02b84b655a
[perl5.git] / t / perf / benchmarks.t
1 #!./perl
2 #
3 # Execute the various code snippets in t/perf/benchmarks
4 # to ensure that they are all syntactically correct
5
6 BEGIN {
7     chdir 't';
8     require './test.pl';
9     @INC = ('.', '../lib');
10 }
11
12 use warnings;
13 use strict;
14
15
16 my $file = 'perf/benchmarks';
17 my $benchmarks = do $file;
18 die $@ if $@;
19 die "$! while trying to read '$file'" if $!;
20 die "'$file' did not return a hash ref\n" unless ref $benchmarks eq 'HASH';
21
22 plan keys(%$benchmarks) * 3;
23
24
25 # check the hash of hashes is minimally consistent in format
26
27 for my $token (sort keys %$benchmarks) {
28     like($token, qr/^[a-zA-Z]\w*$/a, "legal token: $token");
29     my $keys = join('-', sort keys %{$benchmarks->{$token}});
30     is($keys, 'code-desc-setup', "legal keys:  $token");
31 }
32
33 # check that each bit of code compiles and runs
34
35 for my $token (sort keys %$benchmarks) {
36     my $b = $benchmarks->{$token};
37     my $code = "package $token; $b->{setup}; for (1..1) { $b->{code} } 1;";
38     ok(eval $code, "running $token")
39         or do {
40             diag("code:");
41             diag($code);
42             diag("gave:");
43             diag($@);
44         }
45 }
46
47