diff options
author | Norbert Preining <preining@logic.at> | 2007-12-26 12:04:03 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2007-12-26 12:04:03 +0000 |
commit | 2b8d3bc25a93d9bb46f26fe9d44e9a48d93b4894 (patch) | |
tree | 381673ee85063dc2f7d7164a54ceb12849750bf4 /Master | |
parent | d0cf613c61c18a9e20d986811e552db6917c5c27 (diff) |
add a coverage check script
git-svn-id: svn://tug.org/texlive/trunk@5920 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rwxr-xr-x | Master/tlpkg/bin/check-tlpdb-coverage | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/Master/tlpkg/bin/check-tlpdb-coverage b/Master/tlpkg/bin/check-tlpdb-coverage new file mode 100755 index 00000000000..4ab6510739c --- /dev/null +++ b/Master/tlpkg/bin/check-tlpdb-coverage @@ -0,0 +1,103 @@ +#!/usr/bin/env perl +# $Id: check-tlpdb-coverage 0 2007-10-14 20:32:44Z karl $ +# Copyright 2007 Norbert Preining +# This file is licensed under the GNU General Public License version 2 +# or any later version. +# +# Check that all package are contained in some collection. + +BEGIN { + $^W = 1; + ($mydir = $0) =~ s,/[^/]*$,,; + unshift (@INC, "$mydir/.."); +} + +our $mydir; + +use strict; + +use TeXLive::TLConfig; +use TeXLive::TLPOBJ; +use TeXLive::TLPDB; +use Getopt::Long; +use Pod::Usage; +use File::Path; + +my $help = 0; + +GetOptions("help|?" => \$help) or pod2usage(1); +pod2usage(-exitstatus => 0, -verbose => 2) if $help; + +exit (&main ()); + +sub main +{ + # get the db. + chomp (my $Master = `cd $mydir/../.. && pwd`); # xx TLPDB should default + my $tlpdb = TeXLive::TLPDB->new ("root" => "$Master"); + die("Cannot find tlpdb in $Master!\n") unless defined($tlpdb); + my @colls = $tlpdb->collections; + my %found; + for my $pkg ($tlpdb->list_packages) { + my $cat = $tlpdb->get_package($pkg)->category; + # ignore collections and schemes + next if ($cat eq "Collection"); + next if ($cat eq "Scheme"); + next if ($pkg =~ m/\./); + $found{$pkg}{'present'} = 1; + foreach my $c (@colls) { + if (grep(/^$pkg$/,$tlpdb->get_package($c)->depends)) { + $found{$pkg}{$c} = 1; + } + } + } + my @notincolls; + my @multicolls; + foreach my $pkg (keys %found) { + my @k = keys %{$found{$pkg}}; + if ($#k <= 0) { push @notincolls, $pkg; } + if ($#k > 1) { push @multicolls, $pkg; } + } + if (@notincolls) { + print "NOT COVERED PACKAGES: @notincolls\n"; + } + if (@multicolls) { + print "MULTIPLE COVERED PACKAGES: @multicolls\n"; + } +} + + + +__END__ + +=head1 NAME + +check-tlpdb-coverage - check that all packages are contained in some collection + +=head1 SYNOPSIS + +check-tlpdb-coverage + +=head1 OPTIONS + +There are no options bug C<-help>. + +=head1 DESCRIPTION + +Every package should be included in some collection. This program checks +for that and echos found problems to stdout. + +=head1 AUTHORS AND COPYRIGHT + +This script and its documentation were written for the TeX Live +distribution (L<http://tug.org/texlive>) and both are licensed under the +GNU General Public License Version 2 or later. + +=cut + +### Local Variables: +### perl-indent-level: 2 +### tab-width: 2 +### indent-tabs-mode: nil +### End: +# vim:set tabstop=2 expandtab: # |