Skip to content

Commit

Permalink
Type check the test suite
Browse files Browse the repository at this point in the history
  • Loading branch information
layday committed Jun 13, 2024
1 parent 095f121 commit 4aa2a19
Show file tree
Hide file tree
Showing 6 changed files with 188 additions and 177 deletions.
7 changes: 4 additions & 3 deletions pyrightconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
"include": [
"src",
"instawow-gui/src",
"tests/plugin"
"tests"
],
"strict": [
"src",
"instawow-gui/src",
"tests/plugin"
]
}
],
"enableExperimentalFeatures": true
}
314 changes: 154 additions & 160 deletions tests/fixtures/http/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,164 +76,158 @@ def to_aresponses_add_args(self) -> dict[str, Any]:
}


def _make_route_dict_entry(route: Route):
return (route.url, route)


ROUTES = dict(
map(
_make_route_dict_entry,
[
Route(
'//pypi.org/pypi/instawow/json',
{'info': {'version': __version__}},
),
Route(
'//raw.githubusercontent.com/layday/instawow-data/data/base-catalogue-v7.compact.json',
_load_json_fixture('base-catalogue-v7.compact.json'),
),
Route(
'//api.curseforge.com/v1/mods',
_load_json_fixture('curse-addon--all.json'),
method='POST',
),
Route(
'//api.curseforge.com/v1/mods/search?gameId=1&slug=molinari',
_load_json_fixture('curse-addon-slug-search.json'),
match_querystring=True,
),
Route(
'//api.curseforge.com/v1/mods/20338/files',
_load_json_fixture('curse-addon-files.json'),
),
Route(
'//api.curseforge.com/v1/mods/20338/files/{id}/changelog',
_load_json_fixture('curse-addon-changelog.json'),
path_pattern=re.compile(r'^/v1/mods/20338/files/(\d+)/changelog$'),
),
Route(
'//edge.forgecdn.net',
lambda _: Response(body=_make_addon_zip('Molinari')),
path_pattern=_match_any,
),
Route(
'//api.mmoui.com/v3/game/WOW/filelist.json',
_load_json_fixture('wowi-filelist.json'),
),
Route(
'//api.mmoui.com/v3/game/WOW/filedetails/{id}.json',
_load_json_fixture('wowi-filedetails.json'),
path_pattern=re.compile(r'^/v3/game/WOW/filedetails/(\d*)\.json$'),
),
Route(
'//cdn.wowinterface.com',
lambda _: Response(body=_make_addon_zip('Molinari')),
path_pattern=_match_any,
),
Route(
'//api.tukui.org/v1/addon/tukui',
_load_json_fixture('tukui-ui--tukui.json'),
),
Route(
'//api.tukui.org/v1/addon/elvui',
_load_json_fixture('tukui-ui--elvui.json'),
),
Route(
'//api.tukui.org/v1/download/',
lambda _: Response(body=_make_addon_zip('Tukui')),
path_pattern=re.compile(r'^/v1/download/'),
),
Route(
'//api.github.com/repos/nebularg/PackagerTest',
_load_json_fixture('github-repo-release-json.json'),
),
Route(
'//api.github.com/repos/nebularg/PackagerTest/releases?per_page=10',
_load_json_fixture('github-release-release-json.json'),
match_querystring=True,
),
Route(
'//api.github.com/repos/nebularg/PackagerTest/releases/assets/37156458',
_load_json_fixture('github-release-release-json-release-json.json'),
),
Route(
'//api.github.com/repositories/388670',
_load_json_fixture('github-repo-molinari.json'),
),
Route(
'//api.github.com/repos/p3lim-wow/Molinari',
_load_json_fixture('github-repo-molinari.json'),
case_insensitive=True,
),
Route(
'//api.github.com/repositories/388670/releases?per_page=10',
_load_json_fixture('github-release-molinari.json'),
case_insensitive=True,
match_querystring=True,
),
Route(
'//api.github.com/repos/p3lim-wow/Molinari/releases?per_page=10',
_load_json_fixture('github-release-molinari.json'),
case_insensitive=True,
match_querystring=True,
),
Route(
URL(
next(
a['url']
for a in _load_json_fixture('github-release-molinari.json')[0]['assets']
if a['name'] == 'release.json'
)
).with_scheme(''),
_load_json_fixture('github-release-molinari-release-json.json'),
case_insensitive=True,
),
Route(
'//api.github.com/repos/AdiAddons/AdiBags',
_load_json_fixture('github-repo-no-releases.json'),
),
Route(
'//api.github.com/repos/AdiAddons/AdiBags/releases?per_page=10',
lambda _: Response(body=b'', status=404),
match_querystring=True,
),
Route(
'//api.github.com/repos/AdiAddons/AdiButtonAuras/releases/tags/2.0.19',
_load_json_fixture('github-release-no-assets.json'),
),
Route(
'//api.github.com/repos/layday/foobar',
lambda _: Response(body=b'', status=404),
),
Route(
'//api.github.com/repos/{x}/{y}/releases/asssets/{z}',
lambda _: Response(body=_make_addon_zip('Molinari')),
path_pattern=re.compile(r'^/repos(/[^/]*){2}/releases/assets/'),
),
Route(
'//github.com/login/device/code',
_load_json_fixture('github-oauth-login-device-code.json'),
method='POST',
),
Route(
'//github.com/login/oauth/access_token',
_load_json_fixture('github-oauth-login-access-token.json'),
method='POST',
),
Route(
'//api.github.com/repos/28/NoteworthyII',
_load_json_fixture('github-repo-no-release-json.json'),
),
Route(
'//api.github.com/repos/28/NoteworthyII/releases?per_page=10',
_load_json_fixture('github-release-no-release-json.json'),
match_querystring=True,
),
Route(
'//addons.wago.io/api/external/addons/_match',
_load_json_fixture('wago-match-addons.json'),
method='POST',
),
],
ROUTES = {
r.url: r
for r in (
Route(
'//pypi.org/pypi/instawow/json',
{'info': {'version': __version__}},
),
Route(
'//raw.githubusercontent.com/layday/instawow-data/data/base-catalogue-v7.compact.json',
_load_json_fixture('base-catalogue-v7.compact.json'),
),
Route(
'//api.curseforge.com/v1/mods',
_load_json_fixture('curse-addon--all.json'),
method='POST',
),
Route(
'//api.curseforge.com/v1/mods/search?gameId=1&slug=molinari',
_load_json_fixture('curse-addon-slug-search.json'),
match_querystring=True,
),
Route(
'//api.curseforge.com/v1/mods/20338/files',
_load_json_fixture('curse-addon-files.json'),
),
Route(
'//api.curseforge.com/v1/mods/20338/files/{id}/changelog',
_load_json_fixture('curse-addon-changelog.json'),
path_pattern=re.compile(r'^/v1/mods/20338/files/(\d+)/changelog$'),
),
Route(
'//edge.forgecdn.net',
lambda _: Response(body=_make_addon_zip('Molinari')),
path_pattern=_match_any,
),
Route(
'//api.mmoui.com/v3/game/WOW/filelist.json',
_load_json_fixture('wowi-filelist.json'),
),
Route(
'//api.mmoui.com/v3/game/WOW/filedetails/{id}.json',
_load_json_fixture('wowi-filedetails.json'),
path_pattern=re.compile(r'^/v3/game/WOW/filedetails/(\d*)\.json$'),
),
Route(
'//cdn.wowinterface.com',
lambda _: Response(body=_make_addon_zip('Molinari')),
path_pattern=_match_any,
),
Route(
'//api.tukui.org/v1/addon/tukui',
_load_json_fixture('tukui-ui--tukui.json'),
),
Route(
'//api.tukui.org/v1/addon/elvui',
_load_json_fixture('tukui-ui--elvui.json'),
),
Route(
'//api.tukui.org/v1/download/',
lambda _: Response(body=_make_addon_zip('Tukui')),
path_pattern=re.compile(r'^/v1/download/'),
),
Route(
'//api.github.com/repos/nebularg/PackagerTest',
_load_json_fixture('github-repo-release-json.json'),
),
Route(
'//api.github.com/repos/nebularg/PackagerTest/releases?per_page=10',
_load_json_fixture('github-release-release-json.json'),
match_querystring=True,
),
Route(
'//api.github.com/repos/nebularg/PackagerTest/releases/assets/37156458',
_load_json_fixture('github-release-release-json-release-json.json'),
),
Route(
'//api.github.com/repositories/388670',
_load_json_fixture('github-repo-molinari.json'),
),
Route(
'//api.github.com/repos/p3lim-wow/Molinari',
_load_json_fixture('github-repo-molinari.json'),
case_insensitive=True,
),
Route(
'//api.github.com/repositories/388670/releases?per_page=10',
_load_json_fixture('github-release-molinari.json'),
case_insensitive=True,
match_querystring=True,
),
Route(
'//api.github.com/repos/p3lim-wow/Molinari/releases?per_page=10',
_load_json_fixture('github-release-molinari.json'),
case_insensitive=True,
match_querystring=True,
),
Route(
URL(
next(
a['url']
for a in _load_json_fixture('github-release-molinari.json')[0]['assets']
if a['name'] == 'release.json'
)
).with_scheme(''),
_load_json_fixture('github-release-molinari-release-json.json'),
case_insensitive=True,
),
Route(
'//api.github.com/repos/AdiAddons/AdiBags',
_load_json_fixture('github-repo-no-releases.json'),
),
Route(
'//api.github.com/repos/AdiAddons/AdiBags/releases?per_page=10',
lambda _: Response(body=b'', status=404),
match_querystring=True,
),
Route(
'//api.github.com/repos/AdiAddons/AdiButtonAuras/releases/tags/2.0.19',
_load_json_fixture('github-release-no-assets.json'),
),
Route(
'//api.github.com/repos/layday/foobar',
lambda _: Response(body=b'', status=404),
),
Route(
'//api.github.com/repos/{x}/{y}/releases/asssets/{z}',
lambda _: Response(body=_make_addon_zip('Molinari')),
path_pattern=re.compile(r'^/repos(/[^/]*){2}/releases/assets/'),
),
Route(
'//github.com/login/device/code',
_load_json_fixture('github-oauth-login-device-code.json'),
method='POST',
),
Route(
'//github.com/login/oauth/access_token',
_load_json_fixture('github-oauth-login-access-token.json'),
method='POST',
),
Route(
'//api.github.com/repos/28/NoteworthyII',
_load_json_fixture('github-repo-no-release-json.json'),
),
Route(
'//api.github.com/repos/28/NoteworthyII/releases?per_page=10',
_load_json_fixture('github-release-no-release-json.json'),
match_querystring=True,
),
Route(
'//addons.wago.io/api/external/addons/_match',
_load_json_fixture('wago-match-addons.json'),
method='POST',
),
)
)
}
4 changes: 2 additions & 2 deletions tests/test_json_rpc_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

try:
from instawow_gui import json_rpc_server
except ImportError:
pytestmark = pytest.mark.skip(reason='instawow_gui is not available')
except ModuleNotFoundError:
pytest.skip(reason='instawow_gui is not available', allow_module_level=True)
else:
pytestmark = pytest.mark.iw_no_mock_http

Expand Down
Loading

0 comments on commit 4aa2a19

Please sign in to comment.