5 testadozen - randomly pick several perls to test a distro
9 testadozen [options] distro ...
17 my @opt = <<'=back' =~ /B<--(\S+)>/g;
21 Default: /home/src/perl/repoperls/installed-perls/perl
23 The directory where the perls are found
29 The number of tests to run.
35 Only pick directories matching the glob.
46 use Hash
::Util
qw(lock_keys);
47 use Pod
::Usage
qw(pod2usage);
48 use Text
::Glob
qw(match_glob);
49 use Time
::HiRes
qw(sleep);
52 lock_keys
%Opt, map { /([^=]+)/ } @opt;
57 my(@distro) = @ARGV or pod2usage
(1);
59 $Opt{n
} = 12 unless defined $Opt{n
};
61 $Opt{pat
} = "v*" unless defined $Opt{pat
};
63 $Opt{dir
} = "/home/src/perl/repoperls/installed-perls/perl" unless defined $Opt{dir
};
65 opendir my $dh, $Opt{dir
} or die "Could not open '$Opt{dir}': $!";
67 for my $dirent (readdir $dh) {
68 next if $dirent =~ /^\.\.?$/;
70 next unless match_glob
$Opt{pat
}, $dirent;
74 for (my $i = 0; $i < $Opt{n
}; $i++) {
75 my $j = int rand @cand;
76 my $dirent = splice @cand, $j, 1;
78 for my $distro (@distro) {
79 0 == system "$Opt{dir}/$dirent/bin/perl -MCPAN -e 'install q[$distro]'";