From 2357ae3a0c651d68972d3868c093e831484cf7bb Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Thu, 5 Sep 2013 18:04:37 +0100 Subject: [PATCH] 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 --- src/allmydata/node.py | 2 +- src/allmydata/test/test_node.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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) -- 2.45.2