]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Set PERL_DESTRUCT_LEVEL through the environment variable on debugging perls
authorVincent Pit <vince@profvince.com>
Mon, 30 Mar 2015 20:01:51 +0000 (17:01 -0300)
committerVincent Pit <vince@profvince.com>
Mon, 30 Mar 2015 20:01:51 +0000 (17:01 -0300)
t/lib/Variable/Magic/TestGlobalDestruction.pm

index b616a8e74c171ed859597893121a98fb67915bbd..34c4b5983f11c15cc5ca9ea14ff7376ea3ed2a96 100644 (file)
@@ -75,18 +75,22 @@ sub import {
 
  my $env_level = $ENV{PERL_DESTRUCT_LEVEL};
  if (defined $env_level) {
-  $env_level = do {
-   no warnings 'numeric';
-   int $env_level;
-  };
+  no warnings 'numeric';
+  $env_level = int $env_level;
+ }
 
-  my $is_debugging = is_debugging_perl();
-  if ($is_debugging) {
-   _diag("Global destruction level $env_level set by PERL_DESTRUCT_LEVEL (debugging perl)");
+ my $is_debugging = is_debugging_perl();
+ if ($is_debugging) {
+  if (defined $env_level) {
+   _diag("Global destruction level $env_level set by PERL_DESTRUCT_LEVEL (environment)");
    return ($env_level >= $level) ? 1 : 0;
   } else {
-   _diag("PERL_DESTRUCT_LEVEL is set to $env_level, but this perl doesn't seem to have debugging enabled, ignoring");
+   $ENV{PERL_DESTRUCT_LEVEL} = $level;
+   _diag("Global destruction level $level set by PERL_DESTRUCT_LEVEL (forced)");
+   return 1;
   }
+ } elsif (defined $env_level) {
+  _diag("PERL_DESTRUCT_LEVEL is set to $env_level, but this perl doesn't seem to have debugging enabled, ignoring");
  }
 
  my $has_perl_destruct_level = do {