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)
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)

View 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)