summaryrefslogtreecommitdiff
path: root/perl
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2020-10-21 23:24:00 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-10-21 23:11:48 -0700
commit5338ed2b26ebf91de246c59e525ad254dcbc7a84 (patch)
treed8deb77b62829dc1d63c0d900b2b82dc2d69e014 /perl
parentGit 2.29 (diff)
downloadtgif-5338ed2b26ebf91de246c59e525ad254dcbc7a84.tar.xz
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>
Diffstat (limited to 'perl')
-rw-r--r--perl/FromCPAN/Error.pm2
-rw-r--r--perl/Git.pm2
-rw-r--r--perl/Git/I18N.pm2
-rw-r--r--perl/Git/IndexInfo.pm2
-rw-r--r--perl/Git/LoadCPAN.pm2
-rw-r--r--perl/Git/LoadCPAN/Error.pm2
-rw-r--r--perl/Git/LoadCPAN/Mail/Address.pm2
-rw-r--r--perl/Git/Packet.pm2
-rw-r--r--perl/Git/SVN.pm2
-rw-r--r--perl/Git/SVN/Editor.pm2
-rw-r--r--perl/Git/SVN/Fetcher.pm2
-rw-r--r--perl/Git/SVN/GlobSpec.pm2
-rw-r--r--perl/Git/SVN/Log.pm2
-rw-r--r--perl/Git/SVN/Memoize/YAML.pm2
-rw-r--r--perl/Git/SVN/Migration.pm2
-rw-r--r--perl/Git/SVN/Prompt.pm2
-rw-r--r--perl/Git/SVN/Ra.pm2
-rw-r--r--perl/Git/SVN/Utils.pm2
18 files changed, 18 insertions, 18 deletions
diff --git a/perl/FromCPAN/Error.pm b/perl/FromCPAN/Error.pm
index 8b95e2d73d..d82b71325c 100644
--- a/perl/FromCPAN/Error.pm
+++ b/perl/FromCPAN/Error.pm
@@ -12,7 +12,7 @@
package Error;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use vars qw($VERSION);
use 5.004;
diff --git a/perl/Git.pm b/perl/Git.pm
index 10df990959..02eacef0c2 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm
@@ -9,7 +9,7 @@ package Git;
use 5.008;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use File::Temp ();
use File::Spec ();
diff --git a/perl/Git/I18N.pm b/perl/Git/I18N.pm
index bfb4fb67a1..2037f387c8 100644
--- a/perl/Git/I18N.pm
+++ b/perl/Git/I18N.pm
@@ -1,7 +1,7 @@
package Git::I18N;
use 5.008;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
BEGIN {
require Exporter;
if ($] < 5.008003) {
diff --git a/perl/Git/IndexInfo.pm b/perl/Git/IndexInfo.pm
index 2a7b4908f3..9ee054f854 100644
--- a/perl/Git/IndexInfo.pm
+++ b/perl/Git/IndexInfo.pm
@@ -1,6 +1,6 @@
package Git::IndexInfo;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use Git qw/command_input_pipe command_close_pipe/;
sub new {
diff --git a/perl/Git/LoadCPAN.pm b/perl/Git/LoadCPAN.pm
index e5585e75e8..0c360bc799 100644
--- a/perl/Git/LoadCPAN.pm
+++ b/perl/Git/LoadCPAN.pm
@@ -1,7 +1,7 @@
package Git::LoadCPAN;
use 5.008;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
=head1 NAME
diff --git a/perl/Git/LoadCPAN/Error.pm b/perl/Git/LoadCPAN/Error.pm
index c6d2c45d80..5d84c20288 100644
--- a/perl/Git/LoadCPAN/Error.pm
+++ b/perl/Git/LoadCPAN/Error.pm
@@ -1,7 +1,7 @@
package Git::LoadCPAN::Error;
use 5.008;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use Git::LoadCPAN (
module => 'Error',
import => 1,
diff --git a/perl/Git/LoadCPAN/Mail/Address.pm b/perl/Git/LoadCPAN/Mail/Address.pm
index f70a4f064c..340e88a7a5 100644
--- a/perl/Git/LoadCPAN/Mail/Address.pm
+++ b/perl/Git/LoadCPAN/Mail/Address.pm
@@ -1,7 +1,7 @@
package Git::LoadCPAN::Mail::Address;
use 5.008;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use Git::LoadCPAN (
module => 'Mail::Address',
import => 0,
diff --git a/perl/Git/Packet.pm b/perl/Git/Packet.pm
index b75738bed4..d144f5168f 100644
--- a/perl/Git/Packet.pm
+++ b/perl/Git/Packet.pm
@@ -1,7 +1,7 @@
package Git::Packet;
use 5.008;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
BEGIN {
require Exporter;
if ($] < 5.008003) {
diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
index d1c352f92b..f6f1dc03c6 100644
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -1,6 +1,6 @@
package Git::SVN;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use Fcntl qw/:DEFAULT :seek/;
use constant rev_map_fmt => 'NH*';
use vars qw/$_no_metadata
diff --git a/perl/Git/SVN/Editor.pm b/perl/Git/SVN/Editor.pm
index c961444d4c..47fd048bf2 100644
--- a/perl/Git/SVN/Editor.pm
+++ b/perl/Git/SVN/Editor.pm
@@ -1,7 +1,7 @@
package Git::SVN::Editor;
use vars qw/@ISA $_rmdir $_cp_similarity $_find_copies_harder $_rename_limit/;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use SVN::Core;
use SVN::Delta;
use Carp qw/croak/;
diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm
index 729e5337df..968309e6d6 100644
--- a/perl/Git/SVN/Fetcher.pm
+++ b/perl/Git/SVN/Fetcher.pm
@@ -3,7 +3,7 @@ use vars qw/@ISA $_ignore_regex $_include_regex $_preserve_empty_dirs
$_placeholder_filename @deleted_gpath %added_placeholder
$repo_id/;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use SVN::Delta;
use Carp qw/croak/;
use File::Basename qw/dirname/;
diff --git a/perl/Git/SVN/GlobSpec.pm b/perl/Git/SVN/GlobSpec.pm
index a0a8d17621..f2c1e1f6fb 100644
--- a/perl/Git/SVN/GlobSpec.pm
+++ b/perl/Git/SVN/GlobSpec.pm
@@ -1,6 +1,6 @@
package Git::SVN::GlobSpec;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
sub new {
my ($class, $glob, $pattern_ok) = @_;
diff --git a/perl/Git/SVN/Log.pm b/perl/Git/SVN/Log.pm
index 3858fcf27d..6cd4cdfceb 100644
--- a/perl/Git/SVN/Log.pm
+++ b/perl/Git/SVN/Log.pm
@@ -1,6 +1,6 @@
package Git::SVN::Log;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use Git::SVN::Utils qw(fatal);
use Git qw(command
command_oneline
diff --git a/perl/Git/SVN/Memoize/YAML.pm b/perl/Git/SVN/Memoize/YAML.pm
index 9676b8f2f7..8fcf6644a1 100644
--- a/perl/Git/SVN/Memoize/YAML.pm
+++ b/perl/Git/SVN/Memoize/YAML.pm
@@ -1,5 +1,5 @@
package Git::SVN::Memoize::YAML;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use strict;
use YAML::Any ();
diff --git a/perl/Git/SVN/Migration.pm b/perl/Git/SVN/Migration.pm
index dc90f6a621..ed96ac593e 100644
--- a/perl/Git/SVN/Migration.pm
+++ b/perl/Git/SVN/Migration.pm
@@ -33,7 +33,7 @@ package Git::SVN::Migration;
# possible if noMetadata or useSvmProps are set; but should
# be no problem for users that use the (sensible) defaults.
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use Carp qw/croak/;
use File::Path qw/mkpath/;
use File::Basename qw/dirname basename/;
diff --git a/perl/Git/SVN/Prompt.pm b/perl/Git/SVN/Prompt.pm
index e940b08505..de158e848f 100644
--- a/perl/Git/SVN/Prompt.pm
+++ b/perl/Git/SVN/Prompt.pm
@@ -1,6 +1,6 @@
package Git::SVN::Prompt;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
require SVN::Core;
use vars qw/$_no_auth_cache $_username/;
diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm
index 2cfe055a9a..912e035040 100644
--- a/perl/Git/SVN/Ra.pm
+++ b/perl/Git/SVN/Ra.pm
@@ -1,7 +1,7 @@
package Git::SVN::Ra;
use vars qw/@ISA $config_dir $_ignore_refs_regex $_log_window_size/;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use Memoize;
use Git::SVN::Utils qw(
canonicalize_url
diff --git a/perl/Git/SVN/Utils.pm b/perl/Git/SVN/Utils.pm
index 3d1a0933a2..5ca09ab448 100644
--- a/perl/Git/SVN/Utils.pm
+++ b/perl/Git/SVN/Utils.pm
@@ -1,7 +1,7 @@
package Git::SVN::Utils;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use SVN::Core;