mirror of
https://github.com/bombsquad-community/plugin-manager.git
synced 2025-10-08 14:54:36 +00:00
Add tests
This commit is contained in:
parent
dc30f6b774
commit
3f177bd27e
5 changed files with 105 additions and 0 deletions
25
.github/workflows/test.yml
vendored
Normal file
25
.github/workflows/test.yml
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
name: Tests
|
||||||
|
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
python-version: ["3.10"]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
|
uses: actions/setup-python@v3
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
- name: Code Style
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install flake8
|
||||||
|
flake8
|
||||||
|
- name: Tests
|
||||||
|
run: |
|
||||||
|
pip install -r test/pip_reqs.txt
|
||||||
|
python -m unittest discover
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1 +1,3 @@
|
||||||
reference.py
|
reference.py
|
||||||
|
__pycache__
|
||||||
|
*.pyc
|
||||||
|
|
|
||||||
0
test/__init__.py
Normal file
0
test/__init__.py
Normal file
1
test/pip_reqs.txt
Normal file
1
test/pip_reqs.txt
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
aiohttp
|
||||||
77
test/test_checks.py
Normal file
77
test/test_checks.py
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
import hashlib
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
import aiohttp
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
|
||||||
|
async def assert_for_md5sum(url, md5sum, aiohttp_session):
|
||||||
|
async with aiohttp_session.get(url) as response:
|
||||||
|
expected_response_status = 200
|
||||||
|
assert response.status == expected_response_status, (
|
||||||
|
f'Request to "{url}" returned status code {response.status} (expected {expected_response_status}.'
|
||||||
|
)
|
||||||
|
content = await response.read()
|
||||||
|
caclulated_md5sum = hashlib.md5(content).hexdigest()
|
||||||
|
assert caclulated_md5sum == md5sum, (
|
||||||
|
f'"{url}" failed MD5 checksum:\nGot {caclulated_md5sum} (expected {md5sum}).'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def assert_for_commit_sha_and_md5sum_from_versions(base_url, versions, aiohttp_session):
|
||||||
|
tasks = tuple(
|
||||||
|
assert_for_md5sum(
|
||||||
|
base_url.format(content_type="raw", tag=version["commit_sha"]),
|
||||||
|
version["md5sum"],
|
||||||
|
aiohttp_session,
|
||||||
|
) for number, version in versions.items()
|
||||||
|
)
|
||||||
|
await asyncio.gather(*tasks)
|
||||||
|
|
||||||
|
|
||||||
|
class TestPluginManagerMetadata(unittest.IsolatedAsyncioTestCase):
|
||||||
|
async def asyncSetUp(self):
|
||||||
|
with open("index.json", "rb") as fin:
|
||||||
|
self.content = json.load(fin)
|
||||||
|
self.version_regexp = re.compile(b"PLUGIN_MANAGER_VERSION = .+")
|
||||||
|
|
||||||
|
async def asyncTearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_keys(self):
|
||||||
|
assert isinstance(self.content["plugin_manager_url"], str)
|
||||||
|
assert isinstance(self.content["versions"], dict)
|
||||||
|
assert isinstance(self.content["categories"], list)
|
||||||
|
assert isinstance(self.content["external_source_url"], str)
|
||||||
|
|
||||||
|
def test_versions_order(self):
|
||||||
|
versions = list(self.content["versions"].items())
|
||||||
|
sorted_versions = sorted(versions, key=lambda version: version[0])
|
||||||
|
assert sorted_versions == versions
|
||||||
|
|
||||||
|
async def test_versions_metadata(self):
|
||||||
|
versions = tuple(self.content["versions"].items())
|
||||||
|
latest_number, latest_version = versions[0]
|
||||||
|
async with aiohttp.ClientSession() as session:
|
||||||
|
await asyncio.gather(
|
||||||
|
assert_for_commit_sha_and_md5sum_from_versions(
|
||||||
|
self.content["plugin_manager_url"],
|
||||||
|
self.content["versions"],
|
||||||
|
session,
|
||||||
|
),
|
||||||
|
# Additionally assert for the latest version with tag as "main".
|
||||||
|
assert_for_md5sum(
|
||||||
|
self.content["plugin_manager_url"].format(content_type="raw", tag="main"),
|
||||||
|
latest_version["md5sum"],
|
||||||
|
session,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# class TestPluginsMetadata(unittest.IsolatedAsyncioTestCase):
|
||||||
|
|
||||||
|
# class TestExternalSourceMetadata(unittest.IsolatedAsyncioTestCase):
|
||||||
Loading…
Add table
Add a link
Reference in a new issue