File: testconformance.pl

package info (click to toggle)
openhpi 3.8.0-2.3
  • links: PTS
  • area: main
  • in suites: sid, trixie
  • size: 31,888 kB
  • sloc: ansic: 225,326; cpp: 63,687; java: 16,472; cs: 15,161; python: 11,884; sh: 11,508; makefile: 4,945; perl: 1,529; xml: 36; asm: 13
file content (90 lines) | stat: -rwxr-xr-x 2,429 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/perl

#       $Id: testconformance.pl 7043 2010-02-16 21:31:59Z avpak $

#  (C) Copyright IBM Corp. 2004

#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  This
#  file and program are licensed under a BSD style license.  See
#  the Copying file included with the OpenHPI distribution for
#  full licensing terms.

#  Authors:
#      Sean Dague <http://dague.net/sean>

use strict;
use Cwd;
use File::Basename;



chdir("../../");

my $start = cwd();

# set up env
my $plugroot = "$start/plugins";
$ENV{OPENHPI_CONF} = "$start/openhpi.conf";
$ENV{OPENHPI_UID_MAP} = "$start/uid_map";
$ENV{LD_LIBRARY_PATH} .= "$start/baselib/.libs:$start/utils/.libs";
$ENV{LIBRARY_PATH} .= "$start/baselib/.libs:$start/utils/.libs";
$ENV{OPENHPI_PATH} .= "$plugroot/dummy:$plugroot/ipmi:$plugroot/ipmidirect:$plugroot/watchdog:$plugroot/sysfs:$plugroot/text_remote:$plugroot/snmp_bc";


# first we have to rebuild the library with --enable-testcover
system("./bootstrap && ./configure --enable-testcover @ARGV && make clean && make");

chdir("../hpitest");

system("./hpitest --clean --hpiversion B.1.01 openhpi");


foreach my $dir (qw(src utils)) {
    chdir($start);

    my $report = "";

    chdir($dir);
    my @files = ();

    # We are only testing files in openhpi/src for conformance coverage
    opendir(IN,".");
    while(my $file = readdir(IN)) {
        if($file =~ /\.c$/) {
            push @files, "$file";
        }
    }
    close(IN);

    foreach my $file (@files) {

        print STDERR "Cwd is now" . cwd() . "\n";
        my $cmd = "gcov -blf -o .libs $file";

        my $report = "Coverage Report for $dir/$file\n\n";
        my $body = "";
        my $header = "";
        open(GCOV,"$cmd |");
        while(<GCOV>) {
            if(s{^(File.*)($file)}{$1$dir/$file}) {
                $header .= $_; # File
                $header .= <GCOV>; # Lines
                $header .= <GCOV>; # Branches
                $header .= <GCOV>; # Taken
                $header .= <GCOV>; # Calls
                $header .= "\n";
                last; # and now we are *done*
            } else {
                $body .= $_;
            }
        }
        close(GCOV);

        open(OUT,">$file.summary");
        print OUT $report, $header, $body;
        close(OUT);
    }
}