Add E2E test
parent
a6de322a00
commit
585efb2c18
@ -0,0 +1,67 @@
|
||||
import pytest
|
||||
from tests.lib import * # NOQA - fixtures
|
||||
from time import sleep, time
|
||||
from pyircbot import IRCCore
|
||||
import logging
|
||||
|
||||
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
|
||||
|
||||
def wait_until(server, channel, nick, func, timeout):
|
||||
start = time()
|
||||
while time() < start + timeout:
|
||||
v = func()
|
||||
if v:
|
||||
return v
|
||||
sleep(0.02)
|
||||
raise Exception("Function {} did not settle after {}s".format(func, timeout))
|
||||
|
||||
|
||||
def wait_until_joined(server, channel, nick, timeout=5.0):
|
||||
def in_ch():
|
||||
if channel in server.channels:
|
||||
members = [u.nickname for u in server.channels[channel].members]
|
||||
if nick in members:
|
||||
return members
|
||||
return wait_until(server, channel, nick, in_ch, timeout=timeout)
|
||||
|
||||
|
||||
def wait_until_absent(server, channel, nick, timeout=5.0):
|
||||
def not_in_ch():
|
||||
if channel not in server.channels:
|
||||
return True
|
||||
members = [u.nickname for u in server.channels[channel].members]
|
||||
if nick not in members:
|
||||
return True
|
||||
return wait_until(server, channel, nick, not_in_ch, timeout=timeout)
|
||||
|
||||
|
||||
def test_connect_and_join(livebot):
|
||||
port, server, bot, bot_t, channel, nick = livebot
|
||||
bot_t.start()
|
||||
assert nick in wait_until_joined(server, channel, nick)
|
||||
|
||||
|
||||
@pytest.mark.slow
|
||||
def test_hop_to_next_server(livebot):
|
||||
port, server, bot, bot_t, channel, nick = livebot
|
||||
bot.irc.servers = [["localhost", bot.irc.servers[0][1] + 1], bot.irc.servers[0]] # bad port, con refused on 1st srv
|
||||
bot_t.start()
|
||||
assert nick in wait_until_joined(server, channel, nick)
|
||||
|
||||
|
||||
@pytest.mark.slow
|
||||
def test_quit_reconnect(livebot):
|
||||
port, server, bot, bot_t, channel, nick = livebot
|
||||
bot.irc.reconnect_delay = 0.1
|
||||
bot_t.start()
|
||||
wait_until_joined(server, channel, nick)
|
||||
bot.act_QUIT("quitting")
|
||||
wait_until_absent(server, channel, nick)
|
||||
assert nick in wait_until_joined(server, channel, nick)
|
||||
|
||||
|
||||
def test_bs():
|
||||
IRCCore.fulltrace()
|
||||
IRCCore.trace()
|
Loading…
Reference in New Issue