source: branches/ali/UNIT_TESTER/list_undefined_units.pl

Last change on this file was 18426, checked in by westram, 5 years ago
  • Property svn:executable set to *
File size: 1.7 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6my $ARBHOME = $ENV{ARBHOME};
7if (not defined $ARBHOME) { die "environment variable 'ARBHOME' is not defined"; }
8
9my %locs = ();
10sub get_loc($) {
11  my ($makevar) = @_;
12
13  my $loc = $locs{$makevar};
14  if (not defined $loc) {
15    my $makefile = $ARBHOME.'/Makefile';
16    open(IN,'<'.$makefile) || die "cannot read $makefile";
17
18    my $reg = qr/$makevar/;
19    my $line;
20  LINE: while (defined($line=<IN>)) {
21      if ($line =~ $reg) {
22        if (not $line =~ /^\s*\#/o) {
23          $locs{$makevar} = $loc = $.;
24          last LINE;
25        }
26      }
27    }
28    close(IN);
29  }
30
31  return "Makefile:$loc";
32}
33
34sub main() {
35  my $args = scalar(@ARGV);
36  if ($args<1) {
37    print "Usage: list_undefined_units.pl [defined*] -- [archives*]\n";
38    print "detects inconsistencies in listed testunits\n";
39  }
40  else {
41    my @def = ();
42
43    while (scalar(@ARGV) and ($ARGV[0] ne '--')) {
44      push @def, shift @ARGV;
45    }
46    if (not ((scalar(@ARGV)>0) and ($ARGV[0] eq '--'))) {
47      die "expected to see argument '--'";
48    }
49    shift @ARGV; # drop '--'
50
51    my @arch = @ARGV;
52
53    my %def = map { $_ => 1; } @def;
54    my %arch = map { $_ => 1; } @arch;
55
56    my @both = sort ( @arch, @def );
57
58    foreach my $unit (@both) {
59      if (exists $arch{$unit}) {
60        if (not exists $def{$unit}) {
61          my $manual_loc = get_loc('DEFINED_TEST_UNITS');
62          print "${manual_loc}: Warning: $unit not listed in DEFINED_TEST_UNITS (manual lists)\n";
63        }
64        # else ok
65      }
66      elsif (exists $def{$unit}) {
67        my $auto_loc = get_loc('TESTED_UNITS_AUTO');
68        print "${auto_loc}: Warning: $unit not listed in TESTED_UNITS_AUTO (detected archives)\n";
69      }
70      else {
71        die;
72      }
73    }
74  }
75}
76main();
Note: See TracBrowser for help on using the repository browser.