From d8f253e0c8eb06dda6997baacc60186ac4ba882d Mon Sep 17 00:00:00 2001 From: MasOnShi Date: Mon, 4 Apr 2022 21:26:15 +0800 Subject: [PATCH] adds test unit --- .github/workflows/manual.yml | 12 ++++++++++++ auto-analysis/config.py | 5 +++++ auto-analysis/utils.py | 8 ++++---- exports.tar.gz | Bin 5647 -> 6278 bytes 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index a559bfb..11b1093 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -76,6 +76,7 @@ jobs: needs: [check_version, create_release] runs-on: ubuntu-20.04 if: needs.check_version.outputs.RELEASE_VERSION != needs.check_version.outputs.LATEST_VERSION + steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v3 @@ -154,3 +155,14 @@ jobs: asset_path: '${{ github.workspace }}/auto-analysis/linux/x64/build/typoraCracker.zip' asset_name: 'typoraCracker-${{ needs.check_version.outputs.LATEST_VERSION }}-linux-x64.zip' asset_content_type: application/zip + + -name: verify scripts + run: | + python3 -m pip install -r auto-analysis/win/x64/build/requirements.txt + + python3 auto-analysis/win/x64/build/typora.py auto-analysis/win/x64/app/resources/app.asar auto-analysis/win/x64 + echo "win x64 test completed" + python3 auto-analysis/win/x86/build/typora.py auto-analysis/win/x86/app/resources/app.asar auto-analysis/win/x86 + echo "win x86 test completed" + python3 auto-analysis/linux/x64/build/typora.py auto-analysis/linux/x64/bin/Typora-linux-x64/resources/app.asar auto-analysis/linux/x64 + echo "linux x64 test completed" \ No newline at end of file diff --git a/auto-analysis/config.py b/auto-analysis/config.py index d25cdd2..5e43d07 100644 --- a/auto-analysis/config.py +++ b/auto-analysis/config.py @@ -17,4 +17,9 @@ DOWNLOAD_LINK = { "x64": "https://download.typora.io/linux/Typora-linux-x64.tar.gz", "arm64": "https://download.typora.io/linux/Typora-linux-arm64.tar.gz", }, +} + +EXTRACT_ROOT_PATH = { + "win": "app", + "linux": "bin/Typora-linux-x64" } \ No newline at end of file diff --git a/auto-analysis/utils.py b/auto-analysis/utils.py index 3a7b174..f5c981a 100644 --- a/auto-analysis/utils.py +++ b/auto-analysis/utils.py @@ -6,7 +6,7 @@ @Desc: It's all about getting better. """ from loguru import logger as log -from config import DOWNLOAD_LINK +from config import DOWNLOAD_LINK, EXTRACT_ROOT_PATH import subprocess import json import os @@ -70,21 +70,21 @@ def win_x64_run(): from win.x64 import analysis dirs = os.path.join(BASE_DIR, "win/x64") url = DOWNLOAD_LINK["win"]["x64"] - scheduler(func=analysis, basedir=dirs, link=url, root_path="app") + scheduler(func=analysis, basedir=dirs, link=url, root_path=EXTRACT_ROOT_PATH["win"]) def win_x86_run(): from win.x86 import analysis dirs = os.path.join(BASE_DIR, "win/x86") url = DOWNLOAD_LINK["win"]["x86"] - scheduler(func=analysis, basedir=dirs, link=url, root_path="app") + scheduler(func=analysis, basedir=dirs, link=url, root_path=EXTRACT_ROOT_PATH["win"]) def linux_x64_run(): from linux.x64 import analysis dirs = os.path.join(BASE_DIR, "linux/x64") url = DOWNLOAD_LINK["linux"]["x64"] - scheduler(func=analysis, basedir=dirs, link=url, root_path="bin/Typora-linux-x64") + scheduler(func=analysis, basedir=dirs, link=url, root_path=EXTRACT_ROOT_PATH["linux"]) if __name__ == '__main__': diff --git a/exports.tar.gz b/exports.tar.gz index 3ac50b7622412a071081f4e4bec420f0cfb7e796..3f39616c7dd1cb58804ba104e7f3496613e297c9 100644 GIT binary patch literal 6278 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