name: Test and Build Python Package on: push: branches: - '**' - '!main' - '!master' pull_request: workflow_call: jobs: build-and-test: runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: python-version: ["3.10", "3.11", "3.12"] runner: - ubuntu-latest - ubuntu-24.04-arm steps: - name: checkout babeldoc metadata uses: actions/checkout@v4 with: repository: funstory-ai/BabelDOC path: babeldoctemp1234567 token: ${{ secrets.GITHUB_TOKEN }} sparse-checkout: babeldoc/assets/embedding_assets_metadata.py - name: Cached Assets id: cache-assets uses: actions/cache@v4.2.2 with: path: ~/.cache/babeldoc key: test-1-babeldoc-assets-${{ hashFiles('babeldoctemp1234567/babeldoc/assets/embedding_assets_metadata.py') }} - uses: actions/checkout@v4 - name: Setup uv with Python ${{ matrix.python-version }} uses: astral-sh/setup-uv@f94ec6bedd8674c4426838e6b50417d36b6ab231 # v5.3.1 with: python-version: ${{ matrix.python-version }} enable-cache: true cache-dependency-glob: "pyproject.toml" - name: Install dependencies run: | uv sync - name: Test - Unit Test run: | uv run pytest . - name: Test - Translate a PDF file with plain text only run: uv run pdf2zh ./test/file/translate.cli.plain.text.pdf -o ./test/file - name: Test - Translate a PDF file figure run: uv run pdf2zh ./test/file/translate.cli.text.with.figure.pdf -o ./test/file # - name: Test - Translate a PDF file with unknown font # run: # pdf2zh ./test/file/translate.cli.font.unknown.pdf - name: Test - Start GUI and exit run: timeout 10 uv run pdf2zh -i || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi - name: Build as a package run: uv build - name: Upload test results uses: actions/upload-artifact@v4 with: name: test-results-${{ matrix.python-version }}-${{ matrix.runner }} path: ./test/file/