tests, and make this actually work
Jesse Luehrs [Tue, 6 Sep 2011 01:02:22 +0000 (20:02 -0500)]
lib/Package/Stash/PP.pm
t/basic.t

index 408f3be..247a3b8 100644 (file)
@@ -40,7 +40,7 @@ sub new {
               . "currently support anonymous stashes. You should install "
               . "Package::Stash::XS";
     }
-    elsif ($package !~ /[0-9A-Z_a-z]+(?:::[0-9A-Z_a-z]+)*/) {
+    elsif ($package !~ /\A[0-9A-Z_a-z]+(?:::[0-9A-Z_a-z]+)*\z/) {
         confess "$package is not a module name";
     }
 
index a106e9e..f20e055 100644 (file)
--- a/t/basic.t
+++ b/t/basic.t
@@ -417,4 +417,24 @@ like(exception {
     );
 }
 
+for my $package ('Foo:Bar', 'Foo/Bar', 'Foo Bar', 'Foo:::Bar', '') {
+    like(
+        exception { Package::Stash->new($package) },
+        qr/^$package is not a module name/,
+        "$package is not a module name"
+    );
+}
+
+like(
+    exception { Package::Stash->new([]) },
+    qr/^Package::Stash->new must be passed the name of the package to access/,
+    "module name must be a string"
+);
+
+like(
+    exception { Package::Stash->new(undef) },
+    qr/^Package::Stash->new must be passed the name of the package to access/,
+    "module name must be a string"
+);
+
 done_testing;