mirror of
https://github.com/nicolabs/nicobot.git
synced 2026-05-21 11:57:34 +02:00
~ fixed : /var/nicobot & /etc/nicobot where in the wrong order
+ more unit tests
This commit is contained in:
parent
b4a2c78c7b
commit
97ff373a42
15
Makefile
15
Makefile
|
|
@ -1,5 +1,20 @@
|
||||||
build:
|
build:
|
||||||
python3 setup.py build sdist bdist_wheel
|
python3 setup.py build sdist bdist_wheel
|
||||||
|
|
||||||
|
build-docker-debian:
|
||||||
|
docker build -t nicolabs/nicobot:debian -f debian.Dockerfile .
|
||||||
|
|
||||||
test:
|
test:
|
||||||
python3 -m unittest discover -v -s tests
|
python3 -m unittest discover -v -s tests
|
||||||
|
|
||||||
|
askbot:
|
||||||
|
python3 -m nicobot.askbot $(ARGS)
|
||||||
|
|
||||||
|
transbot:
|
||||||
|
python3 -m nicobot.transbot $(ARGS)
|
||||||
|
|
||||||
|
docker-askbot:
|
||||||
|
docker run --rm -it nicolabs/nicobot:debian askbot $(ARGS)
|
||||||
|
|
||||||
|
docker-transbot:
|
||||||
|
docker run --rm -it nicolabs/nicobot:debian transbot $(ARGS)
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ case "${opt_bot}" in
|
||||||
askbot|transbot)
|
askbot|transbot)
|
||||||
#exec python3 -m "nicobot.${opt_bot}" "$@"
|
#exec python3 -m "nicobot.${opt_bot}" "$@"
|
||||||
# TODO Allow to override config dirs with the docker command line
|
# TODO Allow to override config dirs with the docker command line
|
||||||
exec "${opt_bot}" "--config-dirs" /etc/nicobot /var/nicobot "$@"
|
exec "${opt_bot}" "--config-dirs" /var/nicobot /etc/nicobot "$@"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown bot : '*{opt_bot}'" >2
|
echo "Unknown bot : '*{opt_bot}'" >2
|
||||||
|
|
|
||||||
8
tests/fixtures/docker_file_tree/etc/nicobot/config.yml
vendored
Normal file
8
tests/fixtures/docker_file_tree/etc/nicobot/config.yml
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
locale: en
|
||||||
|
|
||||||
|
backend: console
|
||||||
|
#backend: jabber
|
||||||
|
#backend: signal
|
||||||
|
|
||||||
|
# Activates stealth mode
|
||||||
|
#stealth: on
|
||||||
21
tests/fixtures/docker_file_tree/etc/nicobot/i18n.en.yml
vendored
Normal file
21
tests/fixtures/docker_file_tree/etc/nicobot/i18n.en.yml
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
en:
|
||||||
|
# If present, this is a template to use for all messages
|
||||||
|
all_messages: 🤖 %{message}
|
||||||
|
|
||||||
|
# If a message matches this pattern, bot will try to translate <message> into the configured locale
|
||||||
|
# See https://docs.python.org/3/howto/regex.html#regex-howto for details on the format
|
||||||
|
translate_default_locale: ^(?P<message>.+)$
|
||||||
|
|
||||||
|
# If a message matches this pattern, bot will try to translate <message> into <language>
|
||||||
|
# See https://docs.python.org/3/howto/regex.html#regex-howto for details on the format
|
||||||
|
translate: ^(?P<message>.+)\s+in\s+(?P<language>.+)$
|
||||||
|
|
||||||
|
# Sent when the bot cannot translate a given message
|
||||||
|
IDontKnow: I don't know
|
||||||
|
|
||||||
|
# Key sentence that shuts the bot down
|
||||||
|
Shutdown: bye nicobot
|
||||||
|
|
||||||
|
# Set the following banners explicitely to the empty string "" to disable them
|
||||||
|
Hello: nicobot ready 🤟
|
||||||
|
Goodbye: See you later 👋
|
||||||
21
tests/fixtures/docker_file_tree/etc/nicobot/i18n.fr.yml
vendored
Normal file
21
tests/fixtures/docker_file_tree/etc/nicobot/i18n.fr.yml
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
fr:
|
||||||
|
# Si présent, ce motif sera utilisé pour formater tous les messages envoyés
|
||||||
|
all_messages: 🤖 %{message}
|
||||||
|
|
||||||
|
# Si un message correspond à ce motif, le bot tentera de le traduire dans la langue locale configurée
|
||||||
|
# Voir https://docs.python.org/3/howto/regex.html#regex-howto pour le format
|
||||||
|
translate_default_locale: ^(?P<message>.+)$
|
||||||
|
|
||||||
|
# Si un message correspond à ce motif, le bot tentera de traduire <message> dans la langue <language>
|
||||||
|
# Voir https://docs.python.org/3/howto/regex.html#regex-howto pour le format
|
||||||
|
translate: ^(?P<message>.+)\s+en\s+(?P<language>.+)$
|
||||||
|
|
||||||
|
# Ce message est envoyé lorsque le bot ne sait pas traduire le message demandé
|
||||||
|
IDontKnow: Je ne sais pas
|
||||||
|
|
||||||
|
# Phrase clé pour éteindre le bot
|
||||||
|
Shutdown: couché nicobot
|
||||||
|
|
||||||
|
# Remplacez ces messages par une chaîne vide "" afin de les désactiver
|
||||||
|
Hello: nicobot paré 🤟
|
||||||
|
Goodbye: A+ 👋
|
||||||
8
tests/fixtures/docker_with_var_mount/etc/nicobot/config.yml
vendored
Normal file
8
tests/fixtures/docker_with_var_mount/etc/nicobot/config.yml
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
locale: en
|
||||||
|
|
||||||
|
backend: console
|
||||||
|
#backend: jabber
|
||||||
|
#backend: signal
|
||||||
|
|
||||||
|
# Activates stealth mode
|
||||||
|
#stealth: on
|
||||||
|
|
@ -4,12 +4,15 @@
|
||||||
import unittest
|
import unittest
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
|
import tempfile
|
||||||
|
import shutil
|
||||||
|
|
||||||
# Own classes
|
# Own classes
|
||||||
from nicobot.helpers import *
|
from nicobot.helpers import *
|
||||||
from nicobot.bot import Bot
|
from nicobot.bot import Bot
|
||||||
from nicobot.bot import ArgsHelper as BotArgsHelper
|
from nicobot.bot import ArgsHelper as BotArgsHelper
|
||||||
from nicobot.askbot import Config as AskbotConfig
|
from nicobot.askbot import Config as AskbotConfig
|
||||||
|
from nicobot.transbot import Config as TransbotConfig
|
||||||
from nicobot.jabber import arg_parser as jabber_arg_parser
|
from nicobot.jabber import arg_parser as jabber_arg_parser
|
||||||
from nicobot.signalcli import ArgsHelper as SignalArgsHelper
|
from nicobot.signalcli import ArgsHelper as SignalArgsHelper
|
||||||
|
|
||||||
|
|
@ -50,6 +53,52 @@ class TestOptions(unittest.TestCase):
|
||||||
self.assertEqual( os.path.realpath('/etc/nicobot'), os.path.realpath(config.config_dirs[0]) )
|
self.assertEqual( os.path.realpath('/etc/nicobot'), os.path.realpath(config.config_dirs[0]) )
|
||||||
self.assertEqual( os.path.realpath('/tmp/nicobot'), os.path.realpath(config.config_dirs[1]) )
|
self.assertEqual( os.path.realpath('/tmp/nicobot'), os.path.realpath(config.config_dirs[1]) )
|
||||||
|
|
||||||
|
def test_config_path_with_docker_file_tree(self):
|
||||||
|
"""
|
||||||
|
Tests the default configuration tree of the docker image
|
||||||
|
"""
|
||||||
|
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
|
dir_var_nicobot = os.path.join(tmpdir,'var/nicobot')
|
||||||
|
dir_etc_nicobot = os.path.join(tmpdir,'etc/nicobot')
|
||||||
|
# 1. Reproduces the initial Docker environment
|
||||||
|
shutil.copytree('tests/fixtures/docker_file_tree', tmpdir, dirs_exist_ok=True)
|
||||||
|
config = TransbotConfig()
|
||||||
|
# Mimics the command line parameters in the docker image
|
||||||
|
args = [ '--config-dirs', dir_var_nicobot, dir_etc_nicobot ]
|
||||||
|
# 2. Test begins
|
||||||
|
config = parse_args_2pass( self.parser, args, config )
|
||||||
|
# Directories should be present in the same order
|
||||||
|
self.assertEqual( 2, len(config.config_dirs) )
|
||||||
|
self.assertEqual( os.path.realpath(dir_var_nicobot), os.path.realpath(config.config_dirs[0]) )
|
||||||
|
self.assertEqual( os.path.realpath(dir_etc_nicobot), os.path.realpath(config.config_dirs[1]) )
|
||||||
|
# In this fixture there is no '/var/nicobot' directory so /etc/nicobot should be elected
|
||||||
|
self.assertEqual( os.path.realpath(os.path.join(dir_etc_nicobot,'config.yml')), os.path.realpath(config.config_file) )
|
||||||
|
self.assertEqual( 'console', config.backend )
|
||||||
|
|
||||||
|
def test_config_path_with_docker_var_mount(self):
|
||||||
|
"""
|
||||||
|
Tests a common configuration tree with docker where the user bind-mounts the /var/nicobot directory
|
||||||
|
"""
|
||||||
|
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
|
dir_var_nicobot = os.path.join(tmpdir,'var/nicobot')
|
||||||
|
dir_etc_nicobot = os.path.join(tmpdir,'etc/nicobot')
|
||||||
|
# 1. Reproduces the initial Docker environment
|
||||||
|
shutil.copytree('tests/fixtures/docker_with_var_mount', tmpdir, dirs_exist_ok=True)
|
||||||
|
config = TransbotConfig()
|
||||||
|
# Mimics the command line parameters in the docker image
|
||||||
|
args = [ '--config-dirs', dir_var_nicobot, dir_etc_nicobot ]
|
||||||
|
# 2. Test begins
|
||||||
|
config = parse_args_2pass( self.parser, args, config )
|
||||||
|
# Directories should be present in the same order
|
||||||
|
self.assertEqual( 2, len(config.config_dirs) )
|
||||||
|
self.assertEqual( os.path.realpath(dir_var_nicobot), os.path.realpath(config.config_dirs[0]) )
|
||||||
|
self.assertEqual( os.path.realpath(dir_etc_nicobot), os.path.realpath(config.config_dirs[1]) )
|
||||||
|
# In this fixture both '/var/nicobot' and '/etc/nicobot' exist so the first one should be elected
|
||||||
|
self.assertEqual( os.path.realpath(os.path.join(dir_var_nicobot,'config.yml')), os.path.realpath(config.config_file) )
|
||||||
|
self.assertEqual( 'jabber', config.backend )
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue