Make sure that foolscap.logging.log.setLogDir is called with a str (not unicode) path, v2. Includes test. fixes #1725

This commit is contained in:
david-sarah 2012-04-29 02:28:44 +00:00
parent 842a3a132b
commit a555336910
2 changed files with 15 additions and 1 deletions

View File

@ -348,7 +348,7 @@ class Node(service.MultiService):
self.tub.setOption("bridge-twisted-logs", True) self.tub.setOption("bridge-twisted-logs", True)
incident_dir = os.path.join(self.basedir, "logs", "incidents") incident_dir = os.path.join(self.basedir, "logs", "incidents")
# this doesn't quite work yet: unit tests fail # 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): def log(self, *args, **kwargs):
return log.msg(*args, **kwargs) return log.msg(*args, **kwargs)

View File

@ -4,6 +4,8 @@ from twisted.trial import unittest
from twisted.internet import defer from twisted.internet import defer
from twisted.python import log from twisted.python import log
from mock import patch
from foolscap.api import flushEventualQueue from foolscap.api import flushEventualQueue
from twisted.application import service from twisted.application import service
from allmydata.node import Node, formatTimeTahoeStyle from allmydata.node import Node, formatTimeTahoeStyle
@ -116,3 +118,15 @@ class TestCase(testutil.SignalMixin, unittest.TestCase):
st = os.stat(privdir) st = os.stat(privdir)
bits = stat.S_IMODE(st[stat.ST_MODE]) bits = stat.S_IMODE(st[stat.ST_MODE])
self.failUnless(bits & 0001 == 0, bits) 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)