fix list_all_package_symbols
[gitmo/Package-Stash-PP.git] / t / 04-get.t
index 3176ed1..3c4ae43 100644 (file)
@@ -73,6 +73,31 @@ use Package::Stash;
 
 {
     BEGIN {
+        my $stash = Package::Stash->new('Code');
+        my $val = $stash->get_package_symbol('&foo');
+        is($val, undef, "got nothing yet");
+    }
+    {
+        no warnings 'void', 'once';
+        sub Code::foo { }
+    }
+    BEGIN {
+        my $stash = Package::Stash->new('Code');
+        my $val = $stash->get_package_symbol('&foo');
+        is(ref($val), 'CODE', "got something");
+        is(prototype($val), undef, "got the right variable");
+        &Scalar::Util::set_prototype($val, '&');
+        is($stash->get_package_symbol('&foo'), $val,
+           "got the right variable");
+        is(prototype($stash->get_package_symbol('&foo')), '&',
+           "got the right variable");
+        is(prototype(\&Code::foo), '&',
+           "stash has the right variable");
+    }
+}
+
+{
+    BEGIN {
         my $stash = Package::Stash->new('Io');
         my $val = $stash->get_package_symbol('FOO');
         is($val, undef, "got nothing yet");
@@ -100,47 +125,6 @@ use Package::Stash;
     }
 }
 
-TODO: {
-    # making TODO tests at a mixture of BEGIN and runtime is irritating
-    my $_TODO;
-    BEGIN { $_TODO = "obviously I don't understand this well enough"; }
-    BEGIN { $TODO = $_TODO; }
-    $TODO = $_TODO;
-    BEGIN {
-        my $stash = Package::Stash->new('Code');
-        my $val = $stash->get_package_symbol('&foo');
-        is($val, undef, "got nothing yet");
-    }
-    {
-        no warnings 'void', 'once';
-        \&Code::foo;
-    }
-    BEGIN {
-        my $stash = Package::Stash->new('Code');
-        my $val = $stash->get_package_symbol('&foo');
-        undef $TODO;
-        is(ref($val), 'CODE', "got something");
-        $TODO = $_TODO;
-        SKIP: {
-            eval "require PadWalker"
-                or skip "needs PadWalker", 1;
-            # avoid padwalker segfault
-            if (!defined($val)) {
-                fail("got the right variable");
-            }
-            else {
-                PadWalker::set_closed_over($val, {'$x' => 1});
-                is_deeply({PadWalker::closed_over($stash->get_package_symbol('&foo'))}, {'$x' => 1},
-                          "got the right variable");
-                is_deeply({PadWalker::closed_over(\&Code::foo)}, {'$x' => 1},
-                          "stash has the right variable");
-            }
-        }
-    }
-    BEGIN { undef $TODO; }
-    undef $TODO;
-}
-
 {
     my $stash = Package::Stash->new('Hash::Vivify');
     my $val = $stash->get_or_add_package_symbol('%foo');