99-test_fuzz.t: Clean up and re-organize such that sub-tests could be split easily
[openssl.git] / test / recipes / fuzz.pl
1 # Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
2 #
3 # Licensed under the Apache License 2.0 (the "License").  You may not use
4 # this file except in compliance with the License.  You can obtain a copy
5 # in the file LICENSE in the source distribution or at
6 # https://www.openssl.org/source/license.html
7
8 use strict;
9 use warnings;
10
11 use OpenSSL::Glob;
12 use OpenSSL::Test qw/:DEFAULT srctop_file/;
13
14 sub fuzz_tests {
15     my @fuzzers = @_;
16
17     foreach my $f (@fuzzers) {
18         subtest "Fuzzing $f" => sub {
19             my @dir = glob(srctop_file('fuzz', 'corpora', "$f"));
20
21             plan skip_all => "No directory fuzz/corpora/$f" unless @dir;
22             plan tests => scalar @dir; # likely 1
23
24             foreach (@dir) {
25                 ok(run(fuzz(["$f-test", $_])));
26             }
27         }
28     }
29 }
30
31 1;