From 2377a4a83c446d79462220846718785d2be41545 Mon Sep 17 00:00:00 2001 From: Jeremy Fincher Date: Mon, 19 Jul 2004 22:33:58 +0000 Subject: [PATCH] Automatically convert non-strings to strings with safeArgument. --- src/ircutils.py | 7 +++++++ src/log.py | 7 +++++++ test/test_ircutils.py | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/src/ircutils.py b/src/ircutils.py index c2d9fc730..c21e49a4a 100644 --- a/src/ircutils.py +++ b/src/ircutils.py @@ -54,6 +54,10 @@ from cStringIO import StringIO as sio import utils +def debug(s, *args): + """Prints a debug string. Most likely replaced by our logging debug.""" + print '***', s % args + def isUserHostmask(s): """Returns whether or not the string s is a valid User hostmask.""" p1 = s.find('!') @@ -357,6 +361,9 @@ def safeArgument(s): """If s is unsafe for IRC, returns a safe version.""" if isinstance(s, unicode): s = s.encode('utf-8') + elif not isinstance(s, basestring): + debug('Got a non-string in safeArgument: %r', s) + s = str(s) if isValidArgument(s): return s else: diff --git a/src/log.py b/src/log.py index a97cd8711..0c3376fbe 100644 --- a/src/log.py +++ b/src/log.py @@ -47,6 +47,8 @@ import conf import utils import registry +import ircutils + deadlyExceptions = [KeyboardInterrupt, SystemExit] class Formatter(logging.Formatter): @@ -137,6 +139,8 @@ pluginFormatter = Formatter('%(levelname)s %(asctime)s %(name)s %(message)s') # These are not. logging.setLoggerClass(Logger) _logger = logging.getLogger('supybot') + +# These just make things easier. debug = _logger.debug info = _logger.info warning = _logger.warning @@ -148,6 +152,9 @@ setLevel = _logger.setLevel atexit.register(logging.shutdown) +# ircutils will work without this, but it's useful. +ircutils.debug = debug + def getPluginLogger(name): if not conf.supybot.log.individualPluginLogfiles(): return _logger diff --git a/test/test_ircutils.py b/test/test_ircutils.py index d6d7583ca..7eb38bb0f 100644 --- a/test/test_ircutils.py +++ b/test/test_ircutils.py @@ -165,6 +165,10 @@ class FunctionsTestCase(SupyTestCase): self.assertEqual(bolds, ircutils.safeArgument(bolds)) self.assertEqual(colors, ircutils.safeArgument(colors)) + def testSafeArgumentConvertsToString(self): + self.assertEqual('1', ircutils.safeArgument(1)) + self.assertEqual(str(None), ircutils.safeArgument(None)) + def testIsNick(self): try: original = conf.supybot.protocols.irc.strictRfc()