Make log and other arguments explicit
Follow on from b71c2fedfc21d24344585b0bd9b783c3692188e7.
This commit is contained in:
parent
b71c2fedfc
commit
5526ad5313
@ -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?
|
||||||
|
21
xbotlib.py
21
xbotlib.py
@ -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}"
|
||||||
|
Reference in New Issue
Block a user