From: Daira Hopwood <daira@jacaranda.org>
Date: Thu, 5 Sep 2013 17:04:37 +0000 (+0100)
Subject: Sun Apr 29 03:28:44 BST 2012  david-sarah@jacaranda.org
X-Git-Url: https://git.rkrishnan.org/simplejson/components/flags/%22news.html/index.php?a=commitdiff_plain;h=2357ae3a0c651d68972d3868c093e831484cf7bb;p=tahoe-lafs%2Ftahoe-lafs.git

Sun Apr 29 03:28:44 BST 2012  david-sarah@jacaranda.org
  * Make sure that foolscap.logging.log.setLogDir is called with a str (not unicode) path, v2. Includes test. fixes #1725
---

diff --git a/src/allmydata/node.py b/src/allmydata/node.py
index eefce3d6..38cffe54 100644
--- a/src/allmydata/node.py
+++ b/src/allmydata/node.py
@@ -312,7 +312,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)
diff --git a/src/allmydata/test/test_node.py b/src/allmydata/test/test_node.py
index 24ec5714..9d7a296f 100644
--- a/src/allmydata/test/test_node.py
+++ b/src/allmydata/test/test_node.py
@@ -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
@@ -101,3 +103,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)