Make log and other arguments explicit

Follow on from b71c2fedfc21d24344585b0bd9b783c3692188e7.
This commit is contained in:
Luke Murphy 2021-02-02 21:58:21 +01:00
parent b71c2fedfc
commit 5526ad5313
No known key found for this signature in database
GPG Key ID: 5E2EF5A63E3718CC
2 changed files with 22 additions and 14 deletions

View File

@ -1,10 +1,13 @@
"""Unit tests for xbotlib module.""" """Unit tests for xbotlib module."""
from logging import getLogger
from pathlib import Path from pathlib import Path
from pytest import fixture from pytest import fixture
from xbotlib import Config, SimpleMessage from xbotlib import Config, SimpleDatabase, SimpleMessage
log = getLogger(__name__)
@fixture @fixture
@ -61,10 +64,14 @@ def config():
) )
def test_simple_message(message, bot): @fixture
sm = SimpleMessage(message, bot) def tmp_db_path(tmp_path):
return tmp_path / "testbot.json"
def test_simple_message(message):
sm = SimpleMessage(message, "mockbot", log)
assert sm.message == message assert sm.message == message
assert sm.bot == bot
assert sm.text == "mockbot: foobar" assert sm.text == "mockbot: foobar"
assert sm.content == "foobar" assert sm.content == "foobar"
# TODO*decentral1se): how to test test this? # TODO*decentral1se): how to test test this?

View File

@ -26,10 +26,11 @@ class SimpleDatabase(dict):
ease of hacking and accessibility and not for performance or efficiency. ease of hacking and accessibility and not for performance or efficiency.
""" """
def __init__(self, filename, *args, log=None, **kwargs): def __init__(self, filename, log, *args, **kwargs):
"""Initialise the object.""" """Initialise the object."""
self.filename = Path(filename).absolute() self.filename = Path(filename).absolute()
self.log = log self.log = log
self._loads() self._loads()
self.update(*args, **kwargs) self.update(*args, **kwargs)
@ -76,11 +77,11 @@ class SimpleDatabase(dict):
class SimpleMessage: class SimpleMessage:
"""A simple message interface.""" """A simple message interface."""
def __init__(self, message, bot): def __init__(self, message, nick, log):
"""Initialise the object.""" """Initialise the object."""
self.message = message self.message = message
self.bot = bot self._nick = nick
self.log = self.bot.log self.log = log
@property @property
def text(self): def text(self):
@ -106,7 +107,7 @@ class SimpleMessage:
body = self.message["body"] body = self.message["body"]
try: try:
match = fr"^{self.bot.nick}.?(\s)" match = fr"^{self._nick}.?(\s)"
split = re.split(match, body) split = re.split(match, body)
filtered = list(filter(None, split)) filtered = list(filter(None, split))
return filtered[-1].strip() return filtered[-1].strip()
@ -528,12 +529,12 @@ class Bot(ClientXMPP):
self.add_event_handler("message_error", self.error_message) self.add_event_handler("message_error", self.error_message)
def error_message(self, message): def error_message(self, message):
message = SimpleMessage(message, self) message = SimpleMessage(message, self.nick, self.log)
self.log.error(f"Received error message: {message.text}") self.log.error(f"Received error message: {message.text}")
def direct_message(self, message): def direct_message(self, message):
"""Handle direct message events.""" """Handle direct message events."""
message = SimpleMessage(message, self) message = SimpleMessage(message, self.nick, self.log)
if message.type not in self.DIRECT_MESSAGE_TYPES: if message.type not in self.DIRECT_MESSAGE_TYPES:
return return
@ -616,7 +617,7 @@ class Bot(ClientXMPP):
def group_message(self, message): def group_message(self, message):
"""Handle group chat message events.""" """Handle group chat message events."""
message = SimpleMessage(message, self) message = SimpleMessage(message, self.nick, self.log)
if "@" in message.text: if "@" in message.text:
if self.meta(message, room=message.room): if self.meta(message, room=message.room):
@ -672,7 +673,7 @@ class Bot(ClientXMPP):
if self.storage == "file": if self.storage == "file":
try: try:
self.db = SimpleDatabase(file_storage_path, log=self.log) self.db = SimpleDatabase(file_storage_path, self.log)
self.log.info("Successfully loaded file storage") self.log.info("Successfully loaded file storage")
except Exception as exception: except Exception as exception:
message = f"Failed to load {file_storage_path}: {exception}" message = f"Failed to load {file_storage_path}: {exception}"
@ -709,7 +710,7 @@ class Bot(ClientXMPP):
try: try:
internal_storage_path = f"{internal_dir}/data.json" internal_storage_path = f"{internal_dir}/data.json"
self._data = SimpleDatabase(internal_storage_path, log=self.log) self._data = SimpleDatabase(internal_storage_path, self.log)
self.log.info("Successfully loaded internal storage") self.log.info("Successfully loaded internal storage")
except Exception as exception: except Exception as exception:
message = f"Failed to load {internal_storage_path}: {exception}" message = f"Failed to load {internal_storage_path}: {exception}"