2020-07-12 05:53:10 +00:00
|
|
|
from unittest import TestCase
|
- Replaced pipenv with poetry
- Updated min version check in setup.py to Python 3.6
- Updated isort config file and calls to align with v5.x
- Added init-hook for gi imports in .pylintrc to avoid invalid no-member issues
- Makefile: added lock, show-tree, bandit, black, mypy; updated test, cover, dev, isort, autopep8, check, isort-check, flake8, pylint; removed req, requirements;
- Updated .travis.yml to use poetry and make
- Added my email in AUTHORS
- Updated CONTRIBUTING.md
- Updated lint_python.yml to use poetry and make, reorganized instructions to have all install related steps first
- sorted imports: lutris, lutris-wrapper, cleanup_prefix.py and multiple files in tests dir
2021-10-24 18:42:06 +00:00
|
|
|
|
|
|
|
from lutris import runners
|
|
|
|
from lutris.gui.application import Application
|
|
|
|
from lutris.gui.config.add_game import AddGameDialog
|
2014-10-12 16:54:51 +00:00
|
|
|
# from lutris import settings
|
2018-12-21 10:26:14 +00:00
|
|
|
from lutris.gui.config.common import GameDialogCommon
|
2019-05-17 01:03:38 +00:00
|
|
|
from lutris.gui.views.store import sort_func
|
2021-02-16 00:23:07 +00:00
|
|
|
from lutris.util.test_config import setup_test_environment
|
2014-08-12 23:50:25 +00:00
|
|
|
|
2021-02-16 00:23:07 +00:00
|
|
|
setup_test_environment()
|
2014-08-18 10:02:35 +00:00
|
|
|
|
|
|
|
|
2014-08-12 23:50:25 +00:00
|
|
|
class TestGameDialogCommon(TestCase):
|
|
|
|
def test_get_runner_liststore(self):
|
2021-04-27 05:42:38 +00:00
|
|
|
dlg = GameDialogCommon("test")
|
2015-12-21 19:57:07 +00:00
|
|
|
list_store = dlg._get_runner_liststore()
|
2015-09-30 17:48:02 +00:00
|
|
|
self.assertTrue(
|
2017-03-03 19:13:59 +00:00
|
|
|
list_store[1][0].startswith(runners.get_installed()[0].human_name)
|
2015-09-30 17:48:02 +00:00
|
|
|
)
|
2015-10-01 10:08:14 +00:00
|
|
|
self.assertEqual(list_store[1][1], runners.get_installed()[0].name)
|
2014-08-12 23:36:18 +00:00
|
|
|
|
|
|
|
|
2014-08-18 10:05:23 +00:00
|
|
|
class TestGameDialog(TestCase):
|
|
|
|
def setUp(self):
|
2017-01-30 05:48:32 +00:00
|
|
|
lutris_application = Application()
|
|
|
|
lutris_window = lutris_application.window
|
2018-12-21 10:26:14 +00:00
|
|
|
self.dlg = AddGameDialog(lutris_window)
|
2014-10-12 16:54:51 +00:00
|
|
|
|
|
|
|
def get_notebook(self):
|
|
|
|
return self.dlg.vbox.get_children()[0]
|
|
|
|
|
|
|
|
def get_viewport(self, index):
|
2018-10-19 03:36:25 +00:00
|
|
|
children = self.get_notebook().get_children()
|
|
|
|
try:
|
|
|
|
scrolled_window = children[index]
|
|
|
|
except IndexError:
|
|
|
|
print("No viewport for index %s" % index)
|
|
|
|
print(children)
|
|
|
|
raise
|
2014-10-12 16:54:51 +00:00
|
|
|
viewport = scrolled_window.get_children()[0]
|
|
|
|
return viewport.get_children()[0]
|
|
|
|
|
|
|
|
def get_game_box(self):
|
|
|
|
return self.get_viewport(1)
|
|
|
|
|
2014-08-12 23:36:18 +00:00
|
|
|
def test_dialog(self):
|
2014-10-12 16:54:51 +00:00
|
|
|
self.assertEqual(self.dlg.notebook.get_current_page(), 0)
|
2014-08-17 22:30:24 +00:00
|
|
|
|
2019-05-17 01:03:38 +00:00
|
|
|
|
|
|
|
class TestSort(TestCase):
|
|
|
|
class FakeModel(object):
|
|
|
|
def __init__(self, rows):
|
|
|
|
self.rows = rows
|
|
|
|
|
|
|
|
def get_value(self, row_index, col_name):
|
|
|
|
return self.rows[row_index].cols.get(col_name)
|
|
|
|
|
|
|
|
class FakeRow(object):
|
|
|
|
def __init__(self, coldict):
|
|
|
|
self.cols = coldict
|
|
|
|
|
|
|
|
def test_sort_strings_with_caps(self):
|
|
|
|
row1 = self.FakeRow({'name': 'Abc'})
|
|
|
|
row2 = self.FakeRow({'name': 'Def'})
|
|
|
|
model = self.FakeModel([row1, row2])
|
|
|
|
assert sort_func(model, 0, 1, 'name') == -1
|
|
|
|
|
|
|
|
def test_sort_strings_with_one_caps(self):
|
|
|
|
row1 = self.FakeRow({'name': 'abc'})
|
|
|
|
row2 = self.FakeRow({'name': 'Def'})
|
|
|
|
model = self.FakeModel([row1, row2])
|
|
|
|
assert sort_func(model, 0, 1, 'name') == -1
|
|
|
|
|
|
|
|
def test_sort_strings_with_no_caps(self):
|
|
|
|
row1 = self.FakeRow({'name': 'abc'})
|
|
|
|
row2 = self.FakeRow({'name': 'def'})
|
|
|
|
model = self.FakeModel([row1, row2])
|
|
|
|
assert sort_func(model, 0, 1, 'name') == -1
|
|
|
|
|
|
|
|
def test_sort_int(self):
|
|
|
|
row1 = self.FakeRow({'name': 1})
|
|
|
|
row2 = self.FakeRow({'name': 2})
|
|
|
|
model = self.FakeModel([row1, row2])
|
|
|
|
assert sort_func(model, 0, 1, 'name') == -1
|
|
|
|
|
|
|
|
def test_sort_mismatched_types(self):
|
|
|
|
row1 = self.FakeRow({'name': 'abc'})
|
|
|
|
row2 = self.FakeRow({'name': 1})
|
|
|
|
model = self.FakeModel([row1, row2])
|
|
|
|
with self.assertRaises(TypeError):
|
2019-05-17 01:19:25 +00:00
|
|
|
assert sort_func(model, 0, 1, 'name') == -1
|
2019-05-17 01:03:38 +00:00
|
|
|
|
|
|
|
def test_both_none(self):
|
|
|
|
row1 = self.FakeRow({})
|
|
|
|
row2 = self.FakeRow({})
|
|
|
|
model = self.FakeModel([row1, row2])
|
|
|
|
assert sort_func(model, 0, 1, 'name') == 0
|
|
|
|
|
|
|
|
def test_one_none(self):
|
|
|
|
row1 = self.FakeRow({})
|
|
|
|
row2 = self.FakeRow({'name': 'abc'})
|
|
|
|
model = self.FakeModel([row1, row2])
|
|
|
|
assert sort_func(model, 0, 1, 'name') == -1
|