From 0c76d2a83083198faf423a69395b39c6eaf5b675 Mon Sep 17 00:00:00 2001 From: moi15moi Date: Sun, 28 Jul 2024 13:01:26 -0400 Subject: [PATCH] Add test workflow --- .github/workflows/run_test.yml | 63 ++++++++++++++++++++++++++++++++++ pyproject.toml | 3 +- 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/run_test.yml diff --git a/.github/workflows/run_test.yml b/.github/workflows/run_test.yml new file mode 100644 index 0000000..f886763 --- /dev/null +++ b/.github/workflows/run_test.yml @@ -0,0 +1,63 @@ +name: Run Tests + +on: [push, pull_request] + +jobs: + run-tests: + name: "Test (${{matrix.os}}, Python ${{ matrix.python-version }})" + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-24.04, macos-latest, windows-latest] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Python requirements + run: pip install --upgrade --upgrade-strategy eager .[dev] + + - name: Install platform-specific requirements (Ubuntu) + if: runner.os == 'Linux' + run: | + sudo apt update + sudo apt install mkvtoolnix + sudo apt install ffmpeg + + - name: Install platform-specific requirements (macOS) + if: runner.os == 'macOS' + run: | + brew install mkvtoolnix + brew install ffmpeg + + - name: Install platform-specific requirements (Windows) + if: runner.os == 'Windows' + run: | + choco install mkvtoolnix --no-progress --yes + choco install ffmpeg --no-progress --yes + + - name: Run tests + run: | + pytest + + - name: Typecheck with mypy + run: | + mypy + + - name: Generate coverage report + run: | + coverage run -m pytest + coverage xml + + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4 + with: + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/pyproject.toml b/pyproject.toml index 768128c..3c3ad16 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,8 +28,9 @@ Tracker = "https://github.com/moi15moi/VideoTimestamps/issues/" [project.optional-dependencies] dev = [ - "pytest>=8.0.0", + "coverage>=7.0.0", "mypy>=1.0.0", + "pytest>=8.0.0", ] [build-system]