Merge pull request #45 from RanKKI/unittest

支持一千集以上,增加测试用例和 CI
This commit is contained in:
Estrella Pan
2022-07-06 11:23:45 +08:00
committed by GitHub
5 changed files with 95 additions and 20 deletions

33
.github/workflows/unittest.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: unittest
on:
push:
pull_request:
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Test
run: |
cd auto_bangumi
python -m unittest discover tests

View File

@@ -4,9 +4,9 @@ from parser.episode import Episode
logger = logging.getLogger(__name__)
EPISODE_RE = re.compile(r"\d{1,3}")
EPISODE_RE = re.compile(r"\d+")
TITLE_RE = re.compile(
r"(.*|\[.*])( -? \d{1,3} |\[\d{1,3}]|\[\d{1,3}.?[vV]\d{1}]|[第]\d{1,3}[话話集]|\[\d{1,3}.?END])(.*)"
r"(.*|\[.*])( -? \d+ |\[\d+]|\[\d+.?[vV]\d{1}]|[第]\d+[话話集]|\[\d+.?END])(.*)"
)
RESOLUTION_RE = re.compile(r"1080|720|2160|4K")
SOURCE_RE = re.compile(r"B-Global|[Bb]aha|[Bb]ilibili|AT-X|Web")

View File

@@ -1,3 +0,0 @@
#!/bin/bash
exec python -m unittest discover tests

View File

@@ -1,4 +1,5 @@
import unittest
from random import randrange
from parser.analyser import RawParser
@@ -15,14 +16,27 @@ class TestRawParser(unittest.TestCase):
self.assertEqual(info.ep_info.number, 22)
self.assertEqual(info.season_info.number, 2)
content = "【幻樱字幕组】【4月新番】【古见同学有交流障碍症 第一季 Komi-san wa, Komyushou Desu. S01】【23】【GB_MP4】【4K】"
content = "[百冬练习组&LoliHouse] BanG Dream! 少女乐团派对☆PICO FEVER / Garupa Pico: Fever! - 26 [WebRip 1080p HEVC-10bit AAC][简繁内封字幕][END] [101.69 MB]"
info = parser.analyse(content)
self.assertEqual(info.title, "Komi-san wa, Komyushou Desu.")
self.assertEqual(info.dpi, "4K")
self.assertEqual(info.ep_info.number, 23)
self.assertEqual(info.group, "百冬练习组&LoliHouse")
self.assertEqual(info.title, "BanG Dream! 少女乐团派对☆PICO FEVER")
self.assertEqual(info.dpi, "1080p")
self.assertEqual(info.ep_info.number, 26)
self.assertEqual(info.season_info.number, 1)
content = "【喵萌奶茶屋】★04月新番★[夏日重现/Summer Time Rendering][11][1080p][繁日双语][招募翻译] [539.4 MB]"
info = parser.analyse(content)
self.assertEqual(info.group, "喵萌奶茶屋")
self.assertEqual(info.title, "Summer Time Rendering")
self.assertEqual(info.dpi, "1080p")
self.assertEqual(info.ep_info.number, 11)
self.assertEqual(info.season_info.number, 1)
content = "【喵萌奶茶屋】★04月新番★夏日重现/Summer Time Rendering[11][1080p][繁日双语][招募翻译] [539.4 MB]"
info = parser.analyse(content)
self.assertEqual(info.title, "Summer Time Rendering")
def test_pre_process(self):
content = "【幻樱字幕组】【4月新番】"
expected_content = "[幻樱字幕组][4月新番]"
@@ -51,3 +65,25 @@ class TestRawParser(unittest.TestCase):
self.assertEqual(len(ret), 3)
for i in range(3):
self.assertEqual(ret[i], expected[i])
def test_episode(self):
parser = RawParser()
for epi in range(1, 100000, 100):
content = f"【幻樱字幕组】【4月新番】【古见同学有交流障碍症 第一季 Komi-san wa, Komyushou Desu. S01】【{epi}】【GB_MP4】【4K】"
info = parser.analyse(content)
self.assertEqual(info.ep_info.number, epi)
for epi in range(1, 100000, 100):
content = f"[Nekomoe kissaten][Summer Time Rendering - {epi} [1080p][JPTC].mp4"
info = parser.analyse(content)
self.assertEqual(info.ep_info.number, epi)
def test_season(self):
chinese_number_arr = ["", "", "", "",
"", "", "", "", "", "", "十一", "十二"]
parser = RawParser()
for i in range(1, 13):
season = str(i).zfill(2)
content = f"【幻樱字幕组】【古见同学有交流障碍症 第{chinese_number_arr[i - 1]}季 Komi-san wa, Komyushou Desu. S{season}】[1]"
info = parser.analyse(content)
self.assertEqual(info.season_info.number, i)

View File

@@ -1,11 +1,20 @@
qbittorrent-api
bs4
requests==2.28.0
pysocks
lxml
setuptools~=62.1.0
fastapi
uvicorn~=0.17.6
jinja2
pydantic~=1.9.1
anyio==3.6.1
beautifulsoup4==4.11.1
certifi==2022.6.15
charset-normalizer==2.1.0
click==8.1.3
fastapi==0.78.0
h11==0.13.0
idna==3.3
pydantic==1.9.1
PySocks==1.7.1
qbittorrent-api==2022.5.32
requests==2.28.1
six==1.16.0
sniffio==1.2.0
soupsieve==2.3.2.post1
starlette==0.19.1
thefuzz==0.19.0
typing_extensions==4.3.0
urllib3==1.26.9
uvicorn==0.18.2