From 42bd2bcf8ed1a91b9f8a1a83395cff06331fb479 Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@allmydata.com>
Date: Tue, 23 Oct 2007 17:35:31 -0700
Subject: [PATCH] webish: tolerate not having a checker, since some unit tests
 don't make one

---
 src/allmydata/webish.py | 37 ++++++++++++++++++++++---------------
 1 file changed, 22 insertions(+), 15 deletions(-)

diff --git a/src/allmydata/webish.py b/src/allmydata/webish.py
index 88bbc9ab..ecde7f67 100644
--- a/src/allmydata/webish.py
+++ b/src/allmydata/webish.py
@@ -227,22 +227,29 @@ class Directory(rend.Page):
 
         ctx.fillSlots("data", childdata)
 
-        checker = IClient(ctx).getServiceNamed("checker")
-        checker_results = checker.checker_results_for(target.get_verifier())
-        recent_results = reversed(checker_results[-5:])
-        if IFileNode.providedBy(target):
-            results = ("[" +
-                       ", ".join(["%d/%d" % (found, needed)
-                                  for (when, (needed, total, found, sharemap))
-                                  in recent_results]) +
-                       "]")
-        elif IDirectoryNode.providedBy(target):
-            results = ("[" +
-                       "".join([{True:"+",False:"-"}[res]
-                                for (when, res) in recent_results]) +
-                       "]")
+        try:
+            checker = IClient(ctx).getServiceNamed("checker")
+        except KeyError:
+            checker = None
+        if checker:
+            checker_results = checker.checker_results_for(target.get_verifier())
+            recent_results = reversed(checker_results[-5:])
+            if IFileNode.providedBy(target):
+                results = ("[" +
+                           ", ".join(["%d/%d" % (found, needed)
+                                      for (when,
+                                           (needed, total, found, sharemap))
+                                      in recent_results]) +
+                           "]")
+            elif IDirectoryNode.providedBy(target):
+                results = ("[" +
+                           "".join([{True:"+",False:"-"}[res]
+                                    for (when, res) in recent_results]) +
+                           "]")
+            else:
+                results = "%d results" % len(checker_results)
         else:
-            results = "%d results" % len(checker_results)
+            results = "--"
         ctx.fillSlots("checker_results", results)
 
         return ctx.tag
-- 
2.45.2