X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/ae716a98930f0a80b96ee5d383780578d69d0830..8c8d6154a0fa37d1fdd0d5b1540f388bebb4e201:/lib/Symbol.t diff --git a/lib/Symbol.t b/lib/Symbol.t old mode 100755 new mode 100644 index 5763e54..8a0cc7a --- a/lib/Symbol.t +++ b/lib/Symbol.t @@ -5,7 +5,7 @@ BEGIN { @INC = '../lib'; } -use Test::More tests => 14; +use Test::More tests => 26; BEGIN { $_ = 'foo'; } # because Symbol used to clobber $_ @@ -65,3 +65,26 @@ use Symbol qw(qualify); # must import into this package too 'qualify() with an identifier starting with a _' ); ::ok( qualify("^FOO") eq "main::\cFOO", 'qualify() with an identifier starting with a ^' ); + +# tests for delete_package +package main; +$Transient::variable = 42; +ok( exists $::{'Transient::'}, 'transient stash exists' ); +ok( defined $Transient::{variable}, 'transient variable in stash' ); +Symbol::delete_package('Transient'); +ok( !exists $Transient::{variable}, 'transient variable no longer in stash' ); +is( scalar(keys %Transient::), 0, 'transient stash is empty' ); +ok( !exists $::{'Transient::'}, 'no transient stash' ); + +$Foo::variable = 43; +ok( exists $::{'Foo::'}, 'second transient stash exists' ); +ok( defined $Foo::{variable}, 'second transient variable in stash' ); +Symbol::delete_package('::Foo'); +is( scalar(keys %Foo::), 0, 'second transient stash is empty' ); +ok( !exists $::{'Foo::'}, 'no second transient stash' ); + +$Bar::variable = 44; +ok( exists $::{'Bar::'}, 'third transient stash exists' ); +ok( defined $Bar::{variable}, 'third transient variable in stash' ); +ok( ! defined(Symbol::delete_package('Bar::Bar::')), + 'delete_package() returns undef due to undefined leaf');