On Tue, 01 Aug 2017 11:18:30 +0300, Niko Tyni wrote:

> Since 0.37, we're running 'prove --recurse' by default in the smoke
> test. This has resulted in ~50 regressions according to ci.d.n:
> there are packages ship .t files under t/ subdirectories (or starting
> with a dot) that are not run during builds and are either broken
> or not intended to be run at all.  Fixing these by adding t/*.t in
> debian/tests/pkg-perl/smoke-tests gets boring quite quickly, though it's
> certainly doable.

Hm, interesting finding ..

What triggered the change was that adding all the tests in
subdirectories also became boring. I had a look: Currently we have 24
debian/tests/pkg-perl/smoke-tests files with something like:

% cat libhtml-formfu-perl/debian/tests/pkg-perl/smoke-tests
t/*.t
t/*/*.t
t/*/*/*.t
t/*/*/*/*.t
 
> All these packages seem to be relying on the ExtUtils::MakeMaker default
> of TEST_FILES => t/*.t. I'm wondering if we should try to parse that
> out of Makefile.PL during autopkgtest instead of always recursing,
> though that does seem somewhat error prone.

libhtml-formfu-perl's Makefile.PL has

  "test" => {
    "TESTS" => "t/*.t t/bugs/*.t t/constraints/*.t t/deflators/*.t 
t/elements/*.t t/examples/*.t t/filters/*.t t/force_errors/*.t t/form/*.t 
t/i18n/*.t t/inflators/*.t …
  }

> FWIW, Module::Build seems to have a related 'recursive_test_files'
> option that is off by default (see Module::Build::API(3pm)).
> 
> It might help a bit to collect some statistics about the number of
> packages with *.t files in subdirectories, and whether those have
> TEST_FILES specified in Makefile.PL. Currently I have no idea if the
> failing packages are just a small minority of the affected ones, or if
> almost all of them are failing now.

Not sure if TEST_FILES is actually that helpful:

% grep TEST_FILES */Makefile.PL      
ack-grep/Makefile.PL:TEST_FILES=t/*.t t/lib/*.t
ack-grep/Makefile.PL:   $(FULLPERLRUN) t/runtests.pl 0 $(TEST_VERBOSE) 
"$(INST_LIB)" "$(INST_ARCHLIB)" $(TEST_FILES)
ack-grep/Makefile.PL:   $(FULLPERLRUN) t/runtests.pl 1 $(TEST_VERBOSE) 
"$(INST_LIB)" "$(INST_ARCHLIB)" $(TEST_FILES)
libanyevent-gearman-perl/Makefile.PL:                    .q{ $(TEST_FILES)} . 
"\n";
libapache2-mod-perl2/Makefile.PL:TEST_FILES =
libapache2-mod-perl2/Makefile.PL:       t/TEST -bugreport 
-verbose=$(TEST_VERBOSE) $(TEST_FILES)
libautovivification-perl/Makefile.PL:   PERL_DL_NONLAZY=1 
PERLDB_OPTS="NonStop=1" $(FULLPERLRUN) -MTAP::Harness -e 
'TAP::Harness->new({verbosity => q{$(VERBOSE)}, lib => [ q{$(INST_LIB)}, 
q{$(INST_ARCHLIB)} ], switches => [ q{-d} ]})->runtests(@ARGV)' $(TEST_FILES)
libcpanel-json-xs-perl/Makefile.PL:    s/TEST_FILES = /TEST_FILES = 
-Mcommon::sense /;
libdata-messagepack-perl/Makefile.PL:            .q{ $(TEST_FILES)};
libdata-peek-perl/Makefile.PL:              $(TEST_FILES) 3>valgrind.log
libdata-peek-perl/Makefile.PL:      '   -@env TEST_FILES="xt/*.t" make -e 
test_dynamic',
libdata-peek-perl/Makefile.PL:  q{      sandbox/leaktest $(FULLPERLRUN) 
"test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" 
$(TEST_FILES)},
libdbd-csv-perl/Makefile.PL:        '   -@env DBI_SQL_NANO=1 make -e 
test_dynamic TEST_FILES=t/[1-9]*.t',
libdbd-csv-perl/Makefile.PL:        '   -@env TEST_FILES="xt/*.t" make -e 
test_dynamic',
libgeo-distance-xs-perl/Makefile.PL:\t\$(MAKE) -e \$(TEST_TYPE) 
TEST_FILES="xt/*.t"
libmemcached-libmemcached-perl/Makefile.PL:     
HARNESS_PERL_SWITCHES='-MDevel::Cover=-coverage,branch,-coverage,condition,-coverage,pod,-coverage,statement,-coverage,subroutine'
 PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" 
"test_harness($(TEST_VERBOSE), '$(INST_LIB)','$(INST_ARCHLIB)')" $(TEST_FILES)
libpoe-perl/Makefile.PL:  TEST_FILES
libpoe-perl/Makefile.PL:  test           => { TESTS => TEST_FILES  },
libppix-regexp-perl/Makefile.PL:        '$(FULLPERLRUN)', '$(AUTHORTEST_FILES)' 
);
libppix-regexp-perl/Makefile.PL:AUTHORTEST_FILES = t/*.t xt/author/*.t
libscope-upper-perl/Makefile.PL:        PERL_DL_NONLAZY=1 
PERLDB_OPTS="NonStop=1" $(FULLPERLRUN) -MTAP::Harness -e 
'TAP::Harness->new({verbosity => q{$(TEST_VERBOSE)}, lib => [ q{$(INST_LIB)}, 
q{$(INST_ARCHLIB)} ], switches => [ q{-d} ]})->runtests(@ARGV)' $(TEST_FILES)
libsoap-wsdl-perl/Makefile.PL:    test => { RECURSIVE_TEST_FILES => 1, },
libspreadsheet-read-perl/Makefile.PL:               $(TEST_FILES) 3>valgrind.log
libspreadsheet-read-perl/Makefile.PL:   q{      sandbox/leaktest $(FULLPERLRUN) 
"test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" 
$(TEST_FILES)},
libsystem-info-perl/Makefile.PL:                    $(TEST_FILES) 3>valgrind.log
libsystem-info-perl/Makefile.PL:            '   -@env TEST_FILES="xt/*.t" make 
-e test_dynamic',
libsystem-info-perl/Makefile.PL:        q{      sandbox/leaktest $(FULLPERLRUN) 
"test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" 
$(TEST_FILES)},
libtext-csv-xs-perl/Makefile.PL:                    $(TEST_FILES) 3>valgrind.log
libtext-csv-xs-perl/Makefile.PL:            '   -@env TEST_FILES="xt/*.t" make 
-e test_dynamic',
libtext-csv-xs-perl/Makefile.PL:        q{      sandbox/leaktest  
$(FULLPERLRUN) "test_harness($(TEST_VERBOSE), '$(INST_LIB)', 
'$(INST_ARCHLIB)')" $(TEST_FILES)},
libtext-csv-xs-perl/Makefile.PL:        q{      sandbox/leaktrace 
$(FULLPERLRUN) "test_harness($(TEST_VERBOSE), '$(INST_LIB)', 
'$(INST_ARCHLIB)')" $(TEST_FILES)},


Another random grep:

% egrep 't/\*/\*\.t' */{Makefile,Build}.PL
libauthen-simple-ldap-perl/Makefile.PL:tests 't/*.t t/*/*.t';
libauthen-simple-perl/Makefile.PL:tests 't/*.t t/*/*.t';
libb-utils-perl/Makefile.PL:    test          => { TESTS => 't/*.t t/*/*.t' },
libclass-data-accessor-perl/Makefile.PL:tests "t/*.t t/*/*.t";
libcrypt-rijndael-perl/Makefile.PL:    'TESTS' => 't/*.t t/*/*.t'
libdata-clone-perl/Makefile.PL:tests 't/*.t t/*/*.t';
libdevel-cover-perl/Makefile.PL:push @tests, grep !/e2e/, glob "t/*/*.t";
libdevel-cover-perl/Makefile.PL:                                         : 
"t/*/*.t"
libextutils-modulemaker-perl/Makefile.PL:    test        => { TESTS => join q{ 
}, map {glob} qw( t/*.t t/*/*.t ) },
libfile-zglob-perl/Makefile.PL:tests 't/*.t t/*/*.t t/*/*/*.t t/*/*/*/*.t';
libimager-perl/Makefile.PL:my $tests = 't/*.t t/*/*.t';
libio-file-withpath-perl/Makefile.PL:tests 't/*.t t/*/*.t t/*/*/*.t 
t/*/*/*/*.t';
libmakefile-dom-perl/Makefile.PL:tests('t/*.t t/mdom/*.t t/mdom/*/*.t'); # 
t/*/*.t t/*/*/*t t/*/*/*/*.t');
libmango-perl/Makefile.PL:  test      => {TESTS       => 't/*.t t/*/*.t'}
libminion-perl/Makefile.PL:  test      => {TESTS       => 't/*.t t/*/*.t'}
libmodule-cpants-analyse-perl/Makefile.PL:  test => {TESTS => 't/*.t t/*/*.t'},
libmojo-pg-perl/Makefile.PL:  test      => {TESTS       => 't/*.t t/*/*.t'}
libmojolicious-perl/Makefile.PL:  test => {TESTS => 't/*.t t/*/*.t'}
libmojomojo-perl/Makefile.PL:tests(join ' ', (glob('t/*.t'), glob('t/*/*.t')));
libmousex-types-perl/Makefile.PL:tests 't/*.t t/*/*.t';
libplack-app-proxy-perl/Makefile.PL:tests 't/*.t t/*/*.t';
libregexp-common-perl/Makefile.PL:my @tests = qw [t/*.t t/*/*.t];
libset-object-perl/Makefile.PL:  test => { TESTS => join(' ', glob('t/*/*.t')) 
},
libtest-without-module-perl/Makefile.PL:my @tests = map {glob $_ } 't/*.t', 
't/*/*.t';
libtext-mecab-perl/Makefile.PL:tests 't/*.t t/*/*.t';
libtext-mecab-perl/Makefile.PL:##             TESTS    => 't/*.t t/*/*.t'
libunicode-utf8-perl/Makefile.PL:tests 't/*.t t/*/*.t';
libwww-mechanize-shell-perl/Makefile.PL:my @tests = map { glob $_ } 't/*.t', 
't/*/*.t';
libyaml-syck-perl/Makefile.PL:tests           't/*.t t/*/*.t';
libclass-dbi-sweet-perl/Build.PL:    test_files         => [ glob('t/*.t'), 
glob('t/*/*.t') ]
libgenome-perl/Build.PL:  #test_files => [qw|t/*.t t/*/*.t t/*/*/*.t 
t/*/*/*/*.t|],
libgetopt-complete-perl/Build.PL:  #test_files => [qw|t/*.t t/*/*.t t/*/*/*.t 
t/*/*/*/*.t|],


alexm has more idea, we'll add something hopefully more coherent later :)


Cheers,
gregor

-- 
 .''`.  https://info.comodo.priv.at/ - Debian Developer https://www.debian.org
 : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D  85FA BB3A 6801 8649 AA06
 `. `'  Member of VIBE!AT & SPI, fellow of the Free Software Foundation Europe
   `-   

Attachment: signature.asc
Description: Digital Signature

Reply via email to