Ticket #1893: tt1893_quickcover.aaf80082aa.diff

File tt1893_quickcover.aaf80082aa.diff, 12.3 KB (added by jkeenan, 4 years ago)

diff of tt1893_quickcover branch from its branch point to date

  • Configure.pl

    diff --git a/Configure.pl b/Configure.pl
    index f598cda..195ae37 100644
    a b  
    196196Store the results of each configuration step in a Storable F<.sto> file on 
    197197disk, for later analysis by F<Parrot::Configure::Trace> methods. 
    198198 
     199=item C<--coveragedir> 
     200 
     201In preparation for calling C<make quickcover> to perform coverage analysis, 
     202provide a user-specified directory for top level of HTML output. 
     203 
    199204=item Operating system-specific configuration options 
    200205 
    201206=over 4 
  • (a) /dev/null vs. (b) b/config/auto/coverage.pm

    diff --git a/config/auto/coverage.pm b/config/auto/coverage.pm
    new file mode 100644
    index 0000000..590dd03
    a b  
     1# Copyright (C) 2001-2008, Parrot Foundation. 
     2 
     3=head1 NAME 
     4 
     5config/auto/coverage- Check whether coverage analysis tools are present 
     6 
     7=head1 DESCRIPTION 
     8 
     9Coverage analysis is the measurement of the extent to which a program's source 
     10code is exercised by its tests. 
     11 
     12In Parrot, we can perform coverage analysis 
     13on our Parrot source code (well, at least on F<.c> and F<.pmc> files) and on 
     14the Perl 5 components used in our tools. 
     15 
     16To conduct such analysis, we need 
     17the C coverage utility F<gcov> and two utilities, F<cover> and F<gcov2perl>, 
     18which are included in the Devel-Cover distribution from CPAN.  (Paul 
     19Johnson++).  This configuration step determines whether those utilities are 
     20present. 
     21 
     22=cut 
     23 
     24package auto::coverage; 
     25 
     26use strict; 
     27use warnings; 
     28 
     29use File::Which; 
     30use base qw(Parrot::Configure::Step); 
     31use Parrot::Configure::Utils ':auto'; 
     32 
     33 
     34sub _init { 
     35    my $self = shift; 
     36    my %data; 
     37    $data{description} = q{Are coverage analysis tools installed}; 
     38    $data{result}      = q{}; 
     39    return \%data; 
     40} 
     41 
     42sub runstep { 
     43    my ( $self, $conf ) = @_; 
     44 
     45    my %utils_needed = map { $_ => undef } qw( gcov gcov2perl cover ); 
     46    foreach my $util (keys %utils_needed) { 
     47        $utils_needed{$util} = which($util); 
     48    } 
     49    my @utils_lacking = grep { ! defined $utils_needed{$_} } keys %utils_needed; 
     50    if (@utils_lacking) { 
     51        $self->set_result("lacking @utils_lacking"); 
     52    } 
     53    else { 
     54        $conf->data->set( 
     55            "has_coverage_tools" => 1, 
     56            %utils_needed, 
     57        ); 
     58        $self->set_result('yes'); 
     59    } 
     60    return 1; 
     61} 
     62 
     631; 
     64 
     65=head1 REFERENCES 
     66 
     67L<http://search.cpan.org/dist/Devel-Cover/>. 
     68 
     69=cut 
     70 
     71# Local Variables: 
     72#   mode: cperl 
     73#   cperl-indent-level: 4 
     74#   fill-column: 100 
     75# End: 
     76# vim: expandtab shiftwidth=4: 
  • config/auto/perldoc.pm

    diff --git a/config/auto/perldoc.pm b/config/auto/perldoc.pm
    index 41b7f34..8ff8465 100644
    a b  
    5252 
    5353E_NOTE 
    5454 
    55     opendir OPS, 'src/ops' or die "opendir ops: $!"; 
    56     my @ops = sort grep { !/^\./ && /\.ops$/ } readdir OPS; 
    57     closedir OPS; 
     55    opendir my $OPS, 'src/ops' or die "opendir ops: $!"; 
     56    my @ops = sort grep { !/^\./ && /\.ops$/ } readdir $OPS; 
     57    closedir $OPS; 
    5858 
    5959    my $TEMP_pod = join q{ } => 
    6060        map { my $t = $_; $t =~ s/\.ops$/.pod/; "ops/$t" } @ops; 
  • config/gen/makefiles/root.in

    diff --git a/config/gen/makefiles/root.in b/config/gen/makefiles/root.in
    index 53f691e..c7f776a 100644
    a b  
    3535DOC_DIR         = "@docdir@" 
    3636VERSION_DIR     = "@versiondir@" 
    3737SRC_DIR         = "@srcdir@" 
     38COVERAGE_DIR    = "@coveragedir@" 
    3839 
    3940############################################################################### 
    4041# 
     
    18231824# The --running-make-test argument is currently used by long-running tests 
    18241825# to disable GC_DEBUG. 
    18251826EXTRA_TEST_ARGS = --gc-debug 
    1826 DISTRO_TEST_FILES = \ 
    1827     t/distro/*.t 
     1827 
     1828# Directories holding tests 
     1829DYNOPLIBS_TESTS_DIR = t/dynoplibs 
     1830DYNPMC_TESTS_DIR = t/dynpmc 
     1831INSTALL_TOOLS_TESTS_DIR = $(TOOLS_TESTS_DIR)/install 
     1832OO_TESTS_DIR = t/oo 
     1833OP_TESTS_DIR = t/op 
     1834PIR_TESTS_DIR = t/pir 
     1835PMC_TESTS_DIR = t/pmc 
     1836HARNESS_TESTS_DIR = t/pharness 
     1837MANIFEST_TESTS_DIR = t/manifest 
     1838PMC2CUTILS_TESTS_DIR = $(TOOLS_TESTS_DIR)/pmc2cutils 
     1839TOOLS_TESTS_DIR = t/tools 
     1840 
    18281841BENCHMARK_TEST_FILES = \ 
    18291842    t/benchmark/*.t 
    1830 PERL_TEST_FILES = \ 
    1831     t/perl/*.t 
     1843BUILDTOOLS_TEST_FILES = \ 
     1844    $(PMC2CUTILS_TESTS_DIR)/*.t \ 
     1845    $(HARNESS_TESTS_DIR)/*.t 
    18321846CODINGSTD_TEST_FILES = \ 
    18331847    t/codingstd/*.t 
    1834 RUN_TEST_FILES = \ 
    1835     t/run/*.t 
    1836 RUNCORE_TEST_FILES = \ 
    1837     --runcore-tests 
    1838 SRC_TEST_FILES = \ 
    1839     t/src/*.t 
    1840 TOOLS_TEST_DIR = t/tools 
    1841 TOOLS_TEST_FILES = $(TOOLS_TEST_DIR)/tools/*.t 
    1842 LIBRARY_TEST_FILES = @library_tests@ 
    1843 PMC2CUTILS_DIR = $(TOOLS_TEST_DIR)/pmc2cutils 
    1844 HARNESS_DIR = t/pharness 
    1845 BUILDTOOLS_TEST_FILES = \ 
    1846     $(PMC2CUTILS_DIR)/*.t \ 
    1847     $(HARNESS_DIR)/*.t 
    1848 MANIFEST_DIR = t/manifest 
    1849 INSTALL_TOOLS_DIR = $(TOOLS_TEST_DIR)/install 
    1850 MANIFEST_TEST_FILES = \ 
    1851     $(MANIFEST_DIR)/*.t \ 
    1852     $(INSTALL_TOOLS_DIR)/*.t 
    1853 EXAMPLES_TEST_FILES = \ 
    1854     t/examples/*.t 
    18551848CONFIGURE_TEST_FILES = \ 
    18561849    t/configure/*.t \ 
    18571850    t/steps/*.t 
     1851DISTRO_TEST_FILES = \ 
     1852    t/distro/*.t 
     1853DYNOPLIBS_TEST_FILES = $(DYNOPLIBS_TESTS_DIR)/*.t 
     1854DYNPMC_TEST_FILES = $(DYNPMC_TESTS_DIR)/*.t 
     1855EXAMPLES_TEST_FILES = \ 
     1856    t/examples/*.t 
     1857HEADERIZER_TEST_FILES = $(TOOLS_TESTS_DIR)/dev/headerizer/*.t 
     1858LIBRARY_TEST_FILES = @library_tests@ 
     1859MANIFEST_TEST_FILES = \ 
     1860    $(MANIFEST_TESTS_DIR)/*.t \ 
     1861    $(INSTALL_TOOLS_TESTS_DIR)/*.t 
     1862OO_TEST_FILES = $(OO_TESTS_DIR)/*.t 
     1863OP_TEST_FILES = $(OP_TESTS_DIR)/*.t 
    18581864PBC_TEST_FILES = \ 
    18591865    t/op/testlib/test_strings.pbc \ 
    18601866    t/pmc/testlib/annotations.pbc \ 
    18611867    t/pmc/testlib/number.pbc 
    1862 HEADERIZER_TEST_FILES = $(TOOLS_TEST_DIR)/dev/headerizer/*.t 
     1868PERL_TEST_FILES = \ 
     1869    t/perl/*.t 
     1870PIR_TEST_FILES = $(PIR_TESTS_DIR)/*.t 
     1871PMC_TEST_FILES = $(PMC_TESTS_DIR)/*.t 
     1872RUN_TEST_FILES = \ 
     1873    t/run/*.t 
     1874RUNCORE_TEST_FILES = \ 
     1875    --runcore-tests 
     1876SRC_TEST_FILES = \ 
     1877    t/src/*.t 
     1878TOOLS_TEST_FILES = $(TOOLS_TESTS_DIR)/tools/*.t 
    18631879 
    18641880# pbc files used for several tests; 
    18651881# not needed for build, hence this target is not included in 'all' 
     
    18901906test_core: test_prep 
    18911907        $(PERL) t/harness $(EXTRA_TEST_ARGS) 
    18921908 
     1909test_runcore: test_prep 
     1910        $(PERL) t/harness $(EXTRA_TEST_ARGS) $(RUNCORE_TEST_FILES) 
     1911 
    18931912# run the test suite, create a TAP archive and send it off to smolder 
    18941913smolder_test : test_prep 
    18951914        $(PERL) t/harness $(EXTRA_TEST_ARGS) --archive --send-to-smolder 
     
    19651984src_tests : 
    19661985        $(PERL) t/harness $(SRC_TEST_FILES) 
    19671986 
     1987dynoplibs_tests : 
     1988        $(PERL) t/harness $(DYNOPLIBS_TEST_FILES) 
     1989 
     1990dynpmc_tests : 
     1991        $(PERL) t/harness $(DYNPMC_TEST_FILES) 
     1992 
     1993oo_tests : 
     1994        $(PERL) t/harness $(OO_TEST_FILES) 
     1995 
     1996op_tests : 
     1997        $(PERL) t/harness $(OP_TEST_FILES) 
     1998 
     1999pir_tests : 
     2000        $(PERL) t/harness $(PIR_TEST_FILES) 
     2001 
     2002pmc_tests : 
     2003        $(PERL) t/harness $(PMC_TEST_FILES) 
     2004 
    19682005# Command line and various environments 
    19692006run_tests : 
    19702007        $(PERL) t/harness $(RUN_TEST_FILES) 
     
    24552492                | grep -v 'Source code error generation point' 
    24562493 
    24572494COVER_FLAGS = -fprofile-arcs -ftest-coverage 
     2495 
    24582496COVER_DIRS = \ 
    24592497    src \ 
    24602498    src/call \ 
     
    24622500    src/dynpmc \ 
    24632501    src/gc \ 
    24642502    src/interp \ 
     2503    src/io \ 
     2504    src/nci \ 
    24652505    src/ops \ 
    24662506    src/packfile \ 
    24672507    src/pmc \ 
    24682508    src/runcore \ 
    24692509    src/string \ 
    24702510    src/string/encoding \ 
     2511    frontend/parrot \ 
     2512    frontend/parrot_debugger \ 
     2513    frontend/pbc_dump \ 
     2514    frontend/pbc_merge \ 
    24712515    $(BUILD_DIR) \ 
    24722516    $(BUILD_DIR)/t/perl \ 
    2473     src/io \ 
    24742517    compilers/imcc 
    24752518 
    24762519cover: \ 
     
    24972540    done 
    24982541        cover -ignore_re '^\/usr\/local\/bin' 
    24992542 
     2543QUICKCOVER_DIRS = \ 
     2544    src \ 
     2545    src/call \ 
     2546    src/dynoplibs \ 
     2547    src/dynpmc \ 
     2548    src/gc \ 
     2549    src/interp \ 
     2550    src/io \ 
     2551    src/nci \ 
     2552    src/ops \ 
     2553    src/packfile \ 
     2554    src/pmc \ 
     2555    src/runcore \ 
     2556    src/string \ 
     2557    src/string/encoding \ 
     2558    frontend/parrot \ 
     2559    frontend/parrot_debugger \ 
     2560    frontend/pbc_dump \ 
     2561    frontend/pbc_merge \ 
     2562    compilers/imcc 
     2563 
     2564COVER       = @cover@ 
     2565GCOV        = @gcov@ 
     2566GCOV2PERL   = @gcov2perl@ 
     2567 
     2568quickcover: \ 
     2569    cover.dummy \ 
     2570    cover-test_runcore 
     2571        build_dir=$$PWD; \ 
     2572    $(COVER) -delete; \ 
     2573    for dir in $(QUICKCOVER_DIRS); \ 
     2574    do \ 
     2575        cd $$dir; \ 
     2576        $(GCOV) *.c; \ 
     2577        cd $$build_dir; \ 
     2578        $(GCOV2PERL) -db $(COVERAGE_DIR) $$dir/*.gcov; \ 
     2579    done 
     2580        $(COVER) $(COVERAGE_DIR) -ignore_re '^\/usr\/local\/bin' 
     2581 
    25002582cover.dummy: 
    25012583        $(PERL) Configure.pl --ccflags="$(CC_FLAGS) $(COVER_FLAGS)" \ 
    25022584    --linkflags="$(COVER_FLAGS)" --ldflags="$(COVER_FLAGS)" 
    25032585 
     2586cover-test_runcore: cover.dummy 
     2587        -@make@ test_runcore 
     2588 
    25042589cover-testb: cover.dummy 
    25052590        -@make@ testb 
    25062591 
     
    25192604cover-src: cover.dummy 
    25202605        -@make@ src_tests 
    25212606 
     2607cover-dynoplibs: cover.dummy 
     2608        -@make@ dynoplibs_tests 
     2609 
     2610cover-dynpmc: cover.dummy 
     2611        -@make@ dynpmc_tests 
     2612 
     2613cover-oo: cover.dummy 
     2614        -@make@ oo_tests 
     2615 
     2616cover-op: cover.dummy 
     2617        -@make@ op_tests 
     2618 
     2619cover-pir: cover.dummy 
     2620        -@make@ pir_tests 
     2621 
     2622cover-pmc: cover.dummy 
     2623        -@make@ pmc_tests 
     2624 
    25222625cover-run: cover.dummy 
    25232626        -@make@ run_tests 
    25242627 
     
    25442647        -@make@ distro_tests 
    25452648 
    25462649cover-clean: 
    2547         $(PERL) -MCwd -e 'for my $$dir ( qw ( $(COVER_DIRS) ) ) {my $$cwd = cwd(); chdir $$dir; print "Deleting gcov-generated files in $$dir\n"; unlink glob( "*.gcda *.gcno *.gcov" ); chdir $$cwd;}' 
     2650        $(PERL) -MCwd -e 'for my $$dir ( qw ( $(COVER_DIRS) $(QUICKCOVER_DIRS) t/src ) ) {my $$cwd = cwd(); chdir $$dir; print "Deleting gcov-generated files in $$dir\n"; unlink glob( "*.gcda *.gcno *.gcov" ); chdir $$cwd;}' 
    25482651 
    25492652############################################################################### 
    25502653# 
  • config/init/defaults.pm

    diff --git a/config/init/defaults.pm b/config/init/defaults.pm
    index 2d295ac..00efe0b 100644
    a b  
    248248        tempdir => File::Spec->tmpdir, 
    249249 
    250250        PKGCONFIG_DIR => $conf->options->get('pkgconfigdir') || '', 
     251        coveragedir => $conf->options->get('coveragedir') || $build_dir, 
    251252    ); 
    252253 
    253254    # TT #855:  Profiling options are too specific to GCC 
  • lib/Parrot/Configure/Options/Conf/Shared.pm

    diff --git a/lib/Parrot/Configure/Options/Conf/Shared.pm b/lib/Parrot/Configure/Options/Conf/Shared.pm
    index 2de3a0b..05ed095 100644
    a b  
    1717    ccflags 
    1818    ccwarn 
    1919    configure_trace 
     20    coveragedir 
    2021    cxx 
    2122    darwin_no_fink 
    2223    darwin_no_macports 
  • lib/Parrot/Configure/Step/List.pm

    diff --git a/lib/Parrot/Configure/Step/List.pm b/lib/Parrot/Configure/Step/List.pm
    index 1bbc6d4..a0446dd 100644
    a b  
    5757    auto::gettext 
    5858    auto::snprintf 
    5959    auto::perldoc 
     60    auto::coverage 
    6061    auto::pod2man 
    6162    auto::ctags 
    6263    auto::revision 
  • (a) /dev/null vs. (b) b/t/steps/auto/coverage-01.t

    diff --git a/t/steps/auto/coverage-01.t b/t/steps/auto/coverage-01.t
    new file mode 100644
    index 0000000..7b7d1f0
    a b  
     1#! perl 
     2# Copyright (C) 2007, Parrot Foundation. 
     3# auto/coverage-01.t 
     4 
     5use strict; 
     6use warnings; 
     7use Test::More tests =>  7; 
     8use Carp; 
     9use lib qw( lib t/configure/testlib ); 
     10use_ok('config::auto::coverage'); 
     11use Parrot::BuildUtil; 
     12use Parrot::Configure::Options qw( process_options ); 
     13use Parrot::Configure::Step::Test; 
     14use Parrot::Configure::Test qw( 
     15    test_step_constructor_and_description 
     16); 
     17 
     18########## regular ########## 
     19 
     20my ($args, $step_list_ref) = process_options( { 
     21    argv            => [], 
     22    mode            => q{configure}, 
     23} ); 
     24 
     25my $conf = Parrot::Configure::Step::Test->new; 
     26$conf->include_config_results( $args ); 
     27 
     28my $pkg = q{auto::coverage}; 
     29 
     30$conf->add_steps($pkg); 
     31 
     32my $serialized = $conf->pcfreeze(); 
     33 
     34$conf->options->set(%{$args}); 
     35my $step = test_step_constructor_and_description($conf); 
     36ok($step->runstep($conf), "runstep() completed successfully"); 
     37ok(defined($step->result), "Result was defined"); 
     38 
     39pass("Completed all tests in $0"); 
     40 
     41################### DOCUMENTATION ################### 
     42 
     43=head1 NAME 
     44 
     45auto/coverage-01.t - test auto::coverage 
     46 
     47=head1 SYNOPSIS 
     48 
     49    % prove t/steps/auto/coverage-01.t 
     50 
     51=head1 DESCRIPTION 
     52 
     53The files in this directory test functionality used by F<Configure.pl>. 
     54 
     55The tests in this file test auto::coverage. 
     56 
     57=head1 AUTHOR 
     58 
     59James E Keenan 
     60 
     61=head1 SEE ALSO 
     62 
     63config::auto::coverage, F<Configure.pl>. 
     64 
     65=cut 
     66 
     67# Local Variables: 
     68#   mode: cperl 
     69#   cperl-indent-level: 4 
     70#   fill-column: 100 
     71# End: 
     72# vim: expandtab shiftwidth=4: