From a5553369105d6c9f4d11bdc80fe79054bc029ca3 Mon Sep 17 00:00:00 2001 From: david-sarah Date: Sun, 29 Apr 2012 02:28:44 +0000 Subject: [PATCH] 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 a77fdadc..458c57e1 100644 --- a/src/allmydata/node.py +++ b/src/allmydata/node.py @@ -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) diff --git a/src/allmydata/test/test_node.py b/src/allmydata/test/test_node.py index ed6898e7..4c1bbc01 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 @@ -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) -- 2.45.2