Commit 989926a6 authored by André's avatar André Committed by Philipp Hörist

Restructure test

parent 522eec00
Pipeline #2631 passed with stages
in 3 minutes and 22 seconds
......@@ -10,7 +10,7 @@ stages:
run-test:
stage: test
script:
- python3 setup.py test_nogui
- python3 setup.py test -s test.no_gui -q
run-mypy:
stage: test
......
......@@ -18,6 +18,7 @@ classifiers =
[options]
python_requires = >=3.5
packages = find:
test_suite = test
install_requires =
cssutils>=1.0.2
keyring
......
......@@ -176,27 +176,6 @@ class install(_install):
_install.run(self)
class test(Command):
description = "Run all tests"
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
exit(subprocess.call("./test/runtests.py"))
class test_nogui(test):
description = "Run tests without GUI"
def run(self):
exit(subprocess.call(["./test/runtests.py", "-n"]))
class update_po(Command):
description = "Update po files"
user_options = []
......@@ -229,8 +208,6 @@ setup(
cmdclass={
'build_py': build,
'install': install,
'test': test,
'test_nogui': test_nogui,
'update_po': update_po,
},
entry_points={
......
......@@ -167,8 +167,6 @@ class TestSocks5(unittest.TestCase):
self._check_inout()
if __name__ == '__main__':
unittest.main()
......@@ -15,7 +15,6 @@ from gajim.gtk.util import get_cursor
from gajim.conversation_textview import ConversationTextview
from gajim.gui_interface import Interface
caps_cache.capscache = MagicMock()
app.plugin_manager = MagicMock()
app.logger = MagicMock()
......@@ -24,6 +23,7 @@ app.interface = Interface()
change_cursor = None
htmlview = ConversationTextview(None)
def on_textview_motion_notify_event(widget, event):
"""
Change the cursor to a hand when we are over a mail or an url
......@@ -52,7 +52,6 @@ def handler(texttag, widget, event, iter_, kind):
if event.type == Gdk.EventType.BUTTON_PRESS:
pass
htmlview.tv.hyperlink_handler = htmlview.hyperlink_handler
htmlview.print_real_text(None, xhtml='<div>'
'<span style="color: red; text-decoration:underline">Hello</span><br/>\n'
......
import unittest
import time
import lib
from test import lib
lib.setup_env()
from gi.repository import GLib
......@@ -14,7 +12,8 @@ JABBERCZ_TXT_NAME = '_xmppconnect.jabber.cz'
JABBERCZ_SRV_NAME = '_xmpp-client._tcp.jabber.cz'
TEST_LIST = [(NONSENSE_NAME, 'srv', False),
(JABBERCZ_SRV_NAME, 'srv', True)]
(JABBERCZ_SRV_NAME, 'srv', True)]
class TestResolver(unittest.TestCase):
'''
......@@ -45,9 +44,9 @@ class TestResolver(unittest.TestCase):
def _runGR(self, name, type_):
self.resolver.resolve(
host = name,
type_ = type_,
on_ready = self._myonready)
host=name,
type_=type_,
on_ready=self._myonready)
self.main_loop.run()
......
import sys
import os
import getopt
use_x = True
shortargs = 'hnv:'
longargs = 'help no-x verbose='
opts, args = getopt.getopt(sys.argv[1:], shortargs, longargs.split())
for o, a in opts:
if o in ('-n', '--no-x'):
use_x = False
gajim_root = os.path.join(os.path.abspath(os.path.dirname(__file__)), '../..')
# look for modules in the CWD, then gajim/test/lib, then gajim/gajim,
# then everywhere else
sys.path.insert(1, gajim_root)
sys.path.insert(1, gajim_root + '/test/lib')
from tempfile import gettempdir
# a temporary version of ~/.gajim for testing
configdir = gajim_root + '/test/tmp'
configdir = os.path.join(gettempdir(), 'gajim')
os.makedirs(configdir, exist_ok=True)
# plugins config dir
pluginsconfigdir = configdir + '/pluginsconfig'
# theme config directory
themedir = configdir + '/theme'
# define _ for i18n
import builtins
......@@ -28,7 +17,7 @@ builtins._ = lambda x: x
from gajim.common.contacts import LegacyContactsAPI
def setup_env():
def setup_env(use_x=True):
# wipe config directory
if os.path.isdir(configdir):
import shutil
......@@ -36,6 +25,7 @@ def setup_env():
os.mkdir(configdir)
os.mkdir(pluginsconfigdir)
os.mkdir(themedir)
from gajim.common import configpaths
configpaths.set_config_root(configdir)
......@@ -47,13 +37,10 @@ def setup_env():
import logging
logging.basicConfig()
configpaths.override_path('DATA', gajim_root + '/gajim/data')
app.use_x = use_x
app.contacts = LegacyContactsAPI()
app.connections = {}
if use_x:
from gajim import gtkgui_helpers
gtkgui_helpers.GUI_DIR = gajim_root + '/gajim/data/gui'
from gajim.application import GajimApplication
app.app = GajimApplication()
......@@ -2,7 +2,7 @@
Module with dummy classes for Gajim specific unit testing
'''
from mock import Mock
from .mock import Mock
from gajim.common import app
from gajim.common import ged
......
'''
This package just contains plain unit tests
'''
......@@ -3,11 +3,9 @@ Tests for Account classes
'''
import unittest
import lib
lib.setup_env()
from gajim.common.account import Account
class Test(unittest.TestCase):
def testInstantiate(self):
......
......@@ -3,9 +3,6 @@ Tests for capabilities and the capabilities cache
'''
import unittest
import lib
lib.setup_env()
from unittest.mock import MagicMock, Mock
from nbxmpp import NS_MUC, NS_PING, NS_XHTML_IM, Iq
from gajim.common import caps_cache as caps
......
......@@ -2,12 +2,9 @@
Test for Contact, GC_Contact and Contacts
'''
import unittest
import lib
lib.setup_env()
from nbxmpp import NS_MUC
from gajim.common.contacts import CommonContact, Contact, GC_Contact, LegacyContactsAPI
from nbxmpp import NS_MUC
from gajim.common import caps_cache
......
......@@ -7,9 +7,6 @@ from unittest.mock import MagicMock
import nbxmpp
import lib
lib.setup_env()
from gajim.common import app
from gajim.common import nec
from gajim.common import ged
......
#!/usr/bin/env python3
'''
Runs Gajim's Test Suite
Unit tests tests will be run on each commit.
'''
import sys
import unittest
import getopt
use_x = True
verbose = 1
try:
shortargs = 'hnv:'
longargs = 'help no-x verbose='
opts, args = getopt.getopt(sys.argv[1:], shortargs, longargs.split())
except getopt.error as msg:
print(msg)
print('for help use --help')
sys.exit(2)
for o, a in opts:
if o in ('-h', '--help'):
print('runtests [--help] [--no-x] [--verbose level]')
sys.exit()
elif o in ('-n', '--no-x'):
use_x = False
elif o in ('-v', '--verbose'):
try:
verbose = int(a)
except Exception:
print('verbose must be a number >= 0')
sys.exit(2)
# new test modules need to be added manually
modules = ( 'unit.test_protocol_caps',
'unit.test_caps_cache',
'unit.test_contacts',
'unit.test_account',
)
if use_x:
modules += ( 'unit.test_sessions',
#'integration.test_gui_event_integration',
'integration.test_roster',
'integration.test_resolver',
'unit.test_gui_interface',
)
nb_errors = 0
nb_failures = 0
for mod in modules:
print("Now running: %s" % mod)
suite = unittest.defaultTestLoader.loadTestsFromName(mod)
result = unittest.TextTestRunner(verbosity=verbose).run(suite)
if use_x:
# Wait 500ms to be sure all timeout_add will be called before we cleanup main loop
import time
time.sleep(0.5)
# Clean main loop
from gi.repository import GLib
mc = GLib.main_context_default()
while mc.pending():
mc.iteration()
nb_errors += len(result.errors)
nb_failures += len(result.failures)
sys.exit(nb_errors + nb_failures)
......@@ -3,7 +3,7 @@ Some diverse tests covering functionality in the GUI Interface class.
'''
import unittest
import lib
from test import lib
lib.setup_env()
from gajim.common import logging_helpers
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment