Index: trunk/Nebulous-Server/t/08_server_find_instances.t
===================================================================
--- trunk/Nebulous-Server/t/08_server_find_instances.t	(revision 24356)
+++ trunk/Nebulous-Server/t/08_server_find_instances.t	(revision 24362)
@@ -109,5 +109,4 @@
 like($@, qr/no instances on storage volume/, 'instances on a different volume');
 
-
 Test::Nebulous->setup;
 
Index: trunk/Nebulous-Server/t/75_parse_neb_key.t
===================================================================
--- trunk/Nebulous-Server/t/75_parse_neb_key.t	(revision 24356)
+++ trunk/Nebulous-Server/t/75_parse_neb_key.t	(revision 24362)
@@ -10,5 +10,5 @@
 use Test::More;
 
-plan tests => 103;
+plan tests => 106;
 
 use lib qw( ./t ./lib );
@@ -28,5 +28,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -36,5 +36,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -44,5 +44,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -52,5 +52,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -60,5 +60,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -68,5 +68,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -77,5 +77,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, 'boing', 'volume name');
-    is($key->soft_volume, 1, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -85,5 +85,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, 'boing', 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, 1, 'soft volume name');
 }
 
@@ -94,5 +94,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'foo', 'volume name');
-    is($key->soft_volume, 1, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -102,5 +102,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'foo', 'volume name');
-    is($key->soft_volume, 1, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -110,5 +110,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'foo', 'volume name');
-    is($key->soft_volume, 1, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -118,5 +118,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'foo', 'volume name');
-    is($key->soft_volume, 1, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -126,5 +126,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'foo', 'volume name');
-    is($key->soft_volume, 1, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -135,5 +135,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'foo', 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, 1, 'soft volume name');
 }
 
@@ -144,5 +144,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'boing', 'volume name');
-    is($key->soft_volume, 1, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -152,5 +152,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'boing', 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, 1, 'soft volume name');
 }
 
@@ -160,5 +160,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'foo', 'volume name');
-    is($key->soft_volume, 1, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -169,5 +169,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -178,5 +178,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -186,5 +186,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -195,5 +195,5 @@
     is($key->path, 'bar/baz/quix', 'path');
     is($key->volume, 'foo', 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, 1, 'soft volume name');
 }
 
@@ -205,5 +205,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -213,5 +213,5 @@
     is($key->volume, undef, 'volume name');
     is($key->path, 'foo/bar/baz/quix', 'path');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -221,5 +221,5 @@
     is($key->path, 'foo/bar/baz/quix', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -230,5 +230,5 @@
     is($key->path, '', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -238,5 +238,5 @@
     is($key->path, '', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -246,5 +246,5 @@
     is($key->path, '', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -254,5 +254,5 @@
     is($key->path, '', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -262,5 +262,5 @@
     is($key->path, '', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
 }
 
@@ -270,5 +270,28 @@
     is($key->path, '', 'path');
     is($key->volume, undef, 'volume name');
-    is($key->soft_volume, undef, 'soft volume name');
+    is($key->hard_volume, undef, 'soft volume name');
+}
+
+# stringification
+
+{
+    my $txt = 'neb:///bar/baz';
+    my $key = parse_neb_key($txt);
+
+    is("$key", $txt, "stringified");
+}
+
+{
+    my $txt = 'neb://foo.0/bar/baz';
+    my $key = parse_neb_key($txt);
+
+    is("$key", $txt, "stringified");
+}
+
+{
+    my $txt = 'neb://~foo.0/bar/baz';
+    my $key = parse_neb_key($txt);
+
+    is("$key", $txt, "stringified");
 }
 
