Make sure that foolscap.logging.log.setLogDir is called with a str (not unicode)...
authordavid-sarah <david-sarah@jacaranda.org>
Sun, 29 Apr 2012 02:28:44 +0000 (02:28 +0000)
committerdavid-sarah <david-sarah@jacaranda.org>
Sun, 29 Apr 2012 02:28:44 +0000 (02:28 +0000)
src/allmydata/node.py
src/allmydata/test/test_node.py

index a77fdadca0489439c18b1fc4bd3de4b45be09735..458c57e1c237d6ee0149f6445f4c45985e40dd0d 100644 (file)
@@ -348,7 +348,7 @@ class Node(service.MultiService):
         self.tub.setOption("bridge-twisted-logs", True)
         incident_dir = os.path.join(self.basedir, "logs", "incidents")
         # this doesn't quite work yet: unit tests fail
-        foolscap.logging.log.setLogDir(incident_dir)
+        foolscap.logging.log.setLogDir(incident_dir.encode(get_filesystem_encoding()))
 
     def log(self, *args, **kwargs):
         return log.msg(*args, **kwargs)
index ed6898e7b033c08461cd1e83d2434bbe9862f6e7..4c1bbc01bc44d4423dd3237717006f753a9d6e62 100644 (file)
@@ -4,6 +4,8 @@ from twisted.trial import unittest
 from twisted.internet import defer
 from twisted.python import log
 
+from mock import patch
+
 from foolscap.api import flushEventualQueue
 from twisted.application import service
 from allmydata.node import Node, formatTimeTahoeStyle
@@ -116,3 +118,15 @@ class TestCase(testutil.SignalMixin, unittest.TestCase):
         st = os.stat(privdir)
         bits = stat.S_IMODE(st[stat.ST_MODE])
         self.failUnless(bits & 0001 == 0, bits)
+
+    @patch("foolscap.logging.log.setLogDir")
+    def test_logdir_is_str(self, mock_setLogDir):
+        basedir = "test_node/test_logdir_is_str"
+        fileutil.make_dirs(basedir)
+
+        def call_setLogDir(logdir):
+            self.failUnless(isinstance(logdir, str), logdir)
+        mock_setLogDir.side_effect = call_setLogDir
+
+        TestNode(basedir)
+        self.failUnless(mock_setLogDir.called)