perl: check for perl warnings while running tests
We set "use warnings" in most of our perl code to catch problems. But as the name implies, warnings just emit a message to stderr and don't otherwise affect the program. So our tests are quite likely to miss that warnings are being spewed, as most of them do not look at stderr. We could ask perl to make all warnings fatal, but this is likely annoying for non-developers, who would rather have a running program with a warning than something that refuses to work at all. So instead, let's teach the perl code to respect an environment variable (GIT_PERL_FATAL_WARNINGS) to increase the severity of the warnings. This can be set for day-to-day running if people want to be really pedantic, but the primary use is to trigger it within the test suite. We could also trigger that for every test run, but likewise even the tests failing may be annoying to distro builders, etc (just as -Werror would be for compiling C code). So we'll tie it to a special test-mode variable (GIT_TEST_PERL_FATAL_WARNINGS) that can be set in the environment or as a Makefile knob, and we'll automatically turn the knob when DEVELOPER=1 is set. That should give developers and CI the more careful view without disrupting normal users or packagers. Note that the mapping from the GIT_TEST_* form to the GIT_* form in test-lib.sh is necessary even if they had the same name: the perl scripts need it to be normalized to a perl truth value, and we also have to make sure it's exported (we might have gotten it from the environment, but we might also have gotten it from GIT-BUILD-OPTIONS directly). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
69986e19ff
commit
5338ed2b26
3
Makefile
3
Makefile
|
@ -2767,6 +2767,9 @@ ifdef GIT_INTEROP_MAKE_OPTS
|
||||||
endif
|
endif
|
||||||
ifdef GIT_TEST_INDEX_VERSION
|
ifdef GIT_TEST_INDEX_VERSION
|
||||||
@echo GIT_TEST_INDEX_VERSION=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_INDEX_VERSION)))'\' >>$@+
|
@echo GIT_TEST_INDEX_VERSION=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_INDEX_VERSION)))'\' >>$@+
|
||||||
|
endif
|
||||||
|
ifdef GIT_TEST_PERL_FATAL_WARNINGS
|
||||||
|
@echo GIT_TEST_PERL_FATAL_WARNINGS=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_PERL_FATAL_WARNINGS)))'\' >>$@+
|
||||||
endif
|
endif
|
||||||
@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
|
@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
|
||||||
|
|
||||||
|
|
|
@ -45,3 +45,5 @@ ifeq ($(filter gcc5,$(COMPILER_FEATURES)),)
|
||||||
DEVELOPER_CFLAGS += -Wno-uninitialized
|
DEVELOPER_CFLAGS += -Wno-uninitialized
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
GIT_TEST_PERL_FATAL_WARNINGS = YesPlease
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# Copyright (C) 2006, Eric Wong <normalperson@yhbt.net>
|
# Copyright (C) 2006, Eric Wong <normalperson@yhbt.net>
|
||||||
# License: GPL v2 or later
|
# License: GPL v2 or later
|
||||||
use 5.008;
|
use 5.008;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use strict;
|
use strict;
|
||||||
use vars qw/ $AUTHOR $VERSION
|
use vars qw/ $AUTHOR $VERSION
|
||||||
$oid $oid_short $oid_length
|
$oid $oid_short $oid_length
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
package Error;
|
package Error;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
|
|
||||||
use vars qw($VERSION);
|
use vars qw($VERSION);
|
||||||
use 5.004;
|
use 5.004;
|
||||||
|
|
|
@ -9,7 +9,7 @@ package Git;
|
||||||
|
|
||||||
use 5.008;
|
use 5.008;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
|
|
||||||
use File::Temp ();
|
use File::Temp ();
|
||||||
use File::Spec ();
|
use File::Spec ();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package Git::I18N;
|
package Git::I18N;
|
||||||
use 5.008;
|
use 5.008;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
BEGIN {
|
BEGIN {
|
||||||
require Exporter;
|
require Exporter;
|
||||||
if ($] < 5.008003) {
|
if ($] < 5.008003) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package Git::IndexInfo;
|
package Git::IndexInfo;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use Git qw/command_input_pipe command_close_pipe/;
|
use Git qw/command_input_pipe command_close_pipe/;
|
||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package Git::LoadCPAN;
|
package Git::LoadCPAN;
|
||||||
use 5.008;
|
use 5.008;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package Git::LoadCPAN::Error;
|
package Git::LoadCPAN::Error;
|
||||||
use 5.008;
|
use 5.008;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use Git::LoadCPAN (
|
use Git::LoadCPAN (
|
||||||
module => 'Error',
|
module => 'Error',
|
||||||
import => 1,
|
import => 1,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package Git::LoadCPAN::Mail::Address;
|
package Git::LoadCPAN::Mail::Address;
|
||||||
use 5.008;
|
use 5.008;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use Git::LoadCPAN (
|
use Git::LoadCPAN (
|
||||||
module => 'Mail::Address',
|
module => 'Mail::Address',
|
||||||
import => 0,
|
import => 0,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package Git::Packet;
|
package Git::Packet;
|
||||||
use 5.008;
|
use 5.008;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
BEGIN {
|
BEGIN {
|
||||||
require Exporter;
|
require Exporter;
|
||||||
if ($] < 5.008003) {
|
if ($] < 5.008003) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package Git::SVN;
|
package Git::SVN;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use Fcntl qw/:DEFAULT :seek/;
|
use Fcntl qw/:DEFAULT :seek/;
|
||||||
use constant rev_map_fmt => 'NH*';
|
use constant rev_map_fmt => 'NH*';
|
||||||
use vars qw/$_no_metadata
|
use vars qw/$_no_metadata
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package Git::SVN::Editor;
|
package Git::SVN::Editor;
|
||||||
use vars qw/@ISA $_rmdir $_cp_similarity $_find_copies_harder $_rename_limit/;
|
use vars qw/@ISA $_rmdir $_cp_similarity $_find_copies_harder $_rename_limit/;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use SVN::Core;
|
use SVN::Core;
|
||||||
use SVN::Delta;
|
use SVN::Delta;
|
||||||
use Carp qw/croak/;
|
use Carp qw/croak/;
|
||||||
|
|
|
@ -3,7 +3,7 @@ use vars qw/@ISA $_ignore_regex $_include_regex $_preserve_empty_dirs
|
||||||
$_placeholder_filename @deleted_gpath %added_placeholder
|
$_placeholder_filename @deleted_gpath %added_placeholder
|
||||||
$repo_id/;
|
$repo_id/;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use SVN::Delta;
|
use SVN::Delta;
|
||||||
use Carp qw/croak/;
|
use Carp qw/croak/;
|
||||||
use File::Basename qw/dirname/;
|
use File::Basename qw/dirname/;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package Git::SVN::GlobSpec;
|
package Git::SVN::GlobSpec;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
my ($class, $glob, $pattern_ok) = @_;
|
my ($class, $glob, $pattern_ok) = @_;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package Git::SVN::Log;
|
package Git::SVN::Log;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use Git::SVN::Utils qw(fatal);
|
use Git::SVN::Utils qw(fatal);
|
||||||
use Git qw(command
|
use Git qw(command
|
||||||
command_oneline
|
command_oneline
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
package Git::SVN::Memoize::YAML;
|
package Git::SVN::Memoize::YAML;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use strict;
|
use strict;
|
||||||
use YAML::Any ();
|
use YAML::Any ();
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ package Git::SVN::Migration;
|
||||||
# possible if noMetadata or useSvmProps are set; but should
|
# possible if noMetadata or useSvmProps are set; but should
|
||||||
# be no problem for users that use the (sensible) defaults.
|
# be no problem for users that use the (sensible) defaults.
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use Carp qw/croak/;
|
use Carp qw/croak/;
|
||||||
use File::Path qw/mkpath/;
|
use File::Path qw/mkpath/;
|
||||||
use File::Basename qw/dirname basename/;
|
use File::Basename qw/dirname basename/;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package Git::SVN::Prompt;
|
package Git::SVN::Prompt;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
require SVN::Core;
|
require SVN::Core;
|
||||||
use vars qw/$_no_auth_cache $_username/;
|
use vars qw/$_no_auth_cache $_username/;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package Git::SVN::Ra;
|
package Git::SVN::Ra;
|
||||||
use vars qw/@ISA $config_dir $_ignore_refs_regex $_log_window_size/;
|
use vars qw/@ISA $config_dir $_ignore_refs_regex $_log_window_size/;
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
use Memoize;
|
use Memoize;
|
||||||
use Git::SVN::Utils qw(
|
use Git::SVN::Utils qw(
|
||||||
canonicalize_url
|
canonicalize_url
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package Git::SVN::Utils;
|
package Git::SVN::Utils;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
|
||||||
|
|
||||||
use SVN::Core;
|
use SVN::Core;
|
||||||
|
|
||||||
|
|
|
@ -499,6 +499,12 @@ then
|
||||||
export GIT_INDEX_VERSION
|
export GIT_INDEX_VERSION
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -n "$GIT_TEST_PERL_FATAL_WARNINGS"
|
||||||
|
then
|
||||||
|
GIT_PERL_FATAL_WARNINGS=1
|
||||||
|
export GIT_PERL_FATAL_WARNINGS
|
||||||
|
fi
|
||||||
|
|
||||||
# Add libc MALLOC and MALLOC_PERTURB test
|
# Add libc MALLOC and MALLOC_PERTURB test
|
||||||
# only if we are not executing the test with valgrind
|
# only if we are not executing the test with valgrind
|
||||||
if test -n "$valgrind" ||
|
if test -n "$valgrind" ||
|
||||||
|
|
Loading…
Reference in New Issue