Version Tests #1848
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Version Tests | |
| # To speed up development we don't run all the tests when opening and updating a PR. | |
| # This test will run older versions of Python so we don't consume a lot of extra actions | |
| # when we don't need to. It's important to keep this in sync with tests.yml so that | |
| # they are essentially doing the same thing only this runs on a schedule. | |
| name: Version Tests | |
| on: | |
| schedule: | |
| - cron: "30 20 * * *" # 7:30pm UTC, 1am IST | |
| pull_request: | |
| branches: | |
| - dev | |
| workflow_dispatch: | |
| inputs: | |
| none: | |
| description: "Run Version Tests Manually" | |
| required: false | |
| jobs: | |
| linting: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| max-parallel: 1 | |
| matrix: | |
| python-version: [3.9] | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v2 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install python dependencies | |
| run: | | |
| pip install black mypy | |
| - name: Black | |
| run: | | |
| black . | |
| - name: MyPY | |
| run: | | |
| mypy src tests | |
| - name: Run clang-format style check for C/C++ programs. | |
| uses: jidicula/[email protected] | |
| with: | |
| clang-format-version: "11" | |
| check-path: "/src/bindings/" | |
| fallback-style: "Google" # optional | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| # needs: [linting] # don't require linting to pass | |
| strategy: | |
| fail-fast: false | |
| max-parallel: 12 | |
| matrix: | |
| # TODO: fix for Mac and Windows. | |
| os: [ubuntu-latest] | |
| python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v2 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Protobuf Compiler Linux | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y protobuf-compiler libprotobuf-dev | |
| - name: Install Protobuf Compiler Mac | |
| if: runner.os == 'macOS' | |
| run: | | |
| brew install protobuf | |
| - name: Install Protobuf Compiler Windows | |
| if: runner.os == 'Windows' | |
| run: | | |
| $protobufVersion = "32.0" | |
| $downloadUrl = "https://github.com/protocolbuffers/protobuf/releases/download/v$protobufVersion/protoc-$protobufVersion-win64.zip" | |
| $destinationFolder = "$env:TEMP\protoc" | |
| Invoke-WebRequest -Uri $downloadUrl -OutFile protoc.zip | |
| Expand-Archive -Path protoc.zip -DestinationPath $destinationFolder | |
| # Add the protoc directory to the PATH | |
| echo "$destinationFolder\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| - name: Verify protoc installation | |
| run: protoc --version | |
| - name: Download proto header Windows | |
| if: runner.os == 'Windows' | |
| run: vcpkg install protobuf:x64-windows | |
| - name: Setup msbuild Windows | |
| if: runner.os == 'Windows' | |
| uses: microsoft/[email protected] | |
| - name: Setup Visual studio Windows | |
| if: runner.os == 'Windows' | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Build Google DP Unix | |
| if: runner.os != 'Windows' | |
| timeout-minutes: 20 | |
| run: | | |
| bash build_PyDP.sh | |
| - name: Build Google DP Windows | |
| if: runner.os == 'Windows' | |
| timeout-minutes: 20 | |
| run: | | |
| echo "Running: ${{ matrix.os }}" | |
| mkdir build | |
| cd build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release | |
| cmake --build . --config Release -j | |
| echo %CD% | |
| dir | |
| move /Y .\src\bindings\PyDP\_pydp.pyd ..\src\pydp\_pydp.pyd | |
| - name: Upgrade pip | |
| run: | | |
| pip install --upgrade --user pip | |
| - name: Install Poetry | |
| run: | | |
| pip install poetry | |
| - name: Get poetry cache dir | |
| id: poetry-cache | |
| run: | | |
| echo "::set-output name=dir::$(poetry config cache-dir)" | |
| - name: poetry cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.poetry-cache.outputs.dir }} | |
| key: ${{ runner.os }}-pip-py${{ matrix.python-version }}-${{ hashFiles('**/pyproject.toml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pip-py${{ matrix.python-version }}- | |
| - name: Install dependencies | |
| run: | | |
| poetry lock | |
| poetry install | |
| - name: Build PyDP macOS | |
| if: runner.os == 'macOS' | |
| run: | | |
| poetry run python setup.py build bdist_wheel --plat-name macosx_10_14_x86_64 | |
| - name: Build PyDP Linux / Windows | |
| if: runner.os != 'macOS' | |
| run: | | |
| poetry run python setup.py build bdist_wheel | |
| - name: Install Wheel Unix | |
| if: runner.os != 'Windows' | |
| run: | | |
| pip install `find -L ./ -name "*.whl"` | |
| - name: Install Wheel Windows | |
| if: runner.os == 'Windows' | |
| run: | | |
| Get-ChildItem -Path ./ -Filter "*.whl" -Recurse -File | foreach {pip install $_.FullName} | |
| - name: Import Package | |
| run: | | |
| python -c "import pydp; print(pydp.__version__)" | |
| - name: Run Pytest | |
| run: | | |
| poetry run pytest tests -n auto |