From 2c2c3c2295ccfe87403abe516ccccddcf064e37d Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@lothar.com>
Date: Sat, 7 Mar 2009 05:08:15 -0700
Subject: [PATCH] test_cli.py: assert that 'ls' on an unrecoverable file now
 gives a better error message

---
 src/allmydata/test/test_cli.py | 46 ++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/src/allmydata/test/test_cli.py b/src/allmydata/test/test_cli.py
index 7f92b0f9..dcab060f 100644
--- a/src/allmydata/test/test_cli.py
+++ b/src/allmydata/test/test_cli.py
@@ -739,6 +739,52 @@ class Put(GridTestMixin, CLITestMixin, unittest.TestCase):
         d.addCallback(lambda (rc,out,err): self.failUnlessEqual(out, DATA2))
         return d
 
+class List(GridTestMixin, CLITestMixin, unittest.TestCase):
+    def test_list(self):
+        self.basedir = "cli/List/list"
+        self.set_up_grid()
+        c0 = self.g.clients[0]
+        d = c0.create_empty_dirnode()
+        def _stash_root_and_create_file(n):
+            self.rootnode = n
+            self.rooturi = n.get_uri()
+            return n.add_file(u"good", upload.Data("small", convergence=""))
+        d.addCallback(_stash_root_and_create_file)
+        d.addCallback(lambda ign:
+                      self.rootnode.create_empty_directory(u"1share"))
+        d.addCallback(lambda n:
+                      self.delete_shares_numbered(n.get_uri(), range(1,10)))
+        d.addCallback(lambda ign:
+                      self.rootnode.create_empty_directory(u"0share"))
+        d.addCallback(lambda n:
+                      self.delete_shares_numbered(n.get_uri(), range(0,10)))
+        d.addCallback(lambda ign:
+                      self.do_cli("add-alias", "tahoe", self.rooturi))
+        d.addCallback(lambda ign: self.do_cli("ls"))
+        def _check1((rc,out,err)):
+            self.failUnlessEqual(err, "")
+            self.failUnlessEqual(rc, 0)
+            self.failUnlessEqual(out.splitlines(), ["0share", "1share", "good"])
+        d.addCallback(_check1)
+        d.addCallback(lambda ign: self.do_cli("ls", "missing"))
+        def _check2((rc,out,err)):
+            self.failIfEqual(rc, 0)
+            self.failUnlessEqual(err.strip(), "No such file or directory")
+            self.failUnlessEqual(out, "")
+        d.addCallback(_check2)
+        d.addCallback(lambda ign: self.do_cli("ls", "1share"))
+        def _check3((rc,out,err)):
+            self.failIfEqual(rc, 0)
+            self.failUnlessIn("Error during GET: 410 Gone ", err)
+            self.failUnlessIn("UnrecoverableFileError:", err)
+            self.failUnlessIn("could not be retrieved, because there were "
+                              "insufficient good shares.", err)
+            self.failUnlessEqual(out, "")
+        d.addCallback(_check3)
+        d.addCallback(lambda ign: self.do_cli("ls", "0share"))
+        d.addCallback(_check3)
+        return d
+
 class Cp(GridTestMixin, CLITestMixin, unittest.TestCase):
 
     def test_not_enough_args(self):
-- 
2.45.2