chiark / gitweb /
ensure tests avoid user config!
[disorder] / python / disorder.py.in
index 01b92edbcdbc3bcc561c7b654456c87daf844344..95854383f6768912530fa5280f50d3992973994c 100644 (file)
@@ -231,7 +231,7 @@ def _list2dict(l):
     while True:
       k = i.next()
       v = i.next()
-      d[k] = v
+      d[str(k)] = v
   except StopIteration:
     pass
   return d
@@ -294,7 +294,8 @@ class client:
       home = pw.pw_dir
     privconf = _configfile + "." + pw.pw_name
     passfile = home + os.sep + ".disorder" + os.sep + "passwd"
-    self._readfile(_configfile)
+    if os.path.exists(_configfile):
+      self._readfile(_configfile)
     if os.path.exists(privconf):
       self._readfile(privconf)
     if os.path.exists(passfile) and _userconf:
@@ -585,7 +586,10 @@ class client:
     The return value is the preference 
     """
     ret, details = self._simple("get", track, key)
-    return details
+    if ret == 555:
+      return None
+    else:
+      return details
 
   def prefs(self, track):
     """Get all the preferences for a track.
@@ -656,6 +660,14 @@ class client:
     self._simple("search", _quote(words))
     return self._body()
 
+  def tags(self):
+    """List all tags
+
+    The return value is a list of all tags which apply to at least one
+    track."""
+    self._simple("tags")
+    return self._body()
+
   def stats(self):
     """Get server statistics.
 
@@ -781,7 +793,10 @@ class client:
     The return value is the preference 
     """
     ret, details = self._simple("get-global", key)
-    return details
+    if ret == 555:
+      return None
+    else:
+      return details
 
   ########################################################################
   # I/O infrastructure
@@ -837,7 +852,7 @@ class client:
     #
     # If an I/O error occurs, disconnect from the server.
     #
-    # On success returns response as a (code, details) tuple
+    # On success or 'normal' errors returns response as a (code, details) tuple
     #
     # On error raise operationError
     if self.state == 'disconnected':
@@ -847,7 +862,7 @@ class client:
     else:
       cmd = None
     res, details = self._response()
-    if res / 100 == 2:
+    if res / 100 == 2 or res == 555:
       return res, details
     raise operationError(res, details, cmd)