name: main on: [push, pull_request] jobs: test: runs-on: ${{ matrix.os }} timeout-minutes: 30 strategy: fail-fast: false matrix: os: [ubuntu-20.04 , windows-latest, macos-latest] qt-lib: [pyqt, pyside] python-version: [3.7, 3.8, 3.9] include: - python-version: "3.7" qt-lib: "pyqt" qt-version: "PyQt5~=5.12.0" numpy-version: "~=1.18.0" - python-version: "3.7" qt-lib: "pyside" qt-version: "PySide2~=5.12.0" numpy-version: "~=1.18.0" - python-version: "3.8" qt-lib: "pyqt" qt-version: "PyQt5~=5.15.0" numpy-version: "~=1.21.0" - python-version: "3.8" qt-lib: "pyside" qt-version: "PySide2~=5.15.0" numpy-version: "~=1.21.0" - python-version: "3.9" qt-lib: "pyqt" qt-version: "PyQt6" numpy-version: "~=1.21.0" - python-version: "3.9" qt-lib: "pyside" qt-version: "PySide6" numpy-version: "~=1.21.0" steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: # Semantic version range syntax or exact version of a Python version python-version: ${{ matrix.python-version }} - name: "Install Windows-Mesa OpenGL DLL" if: runner.os == 'Windows' run: | curl -LJO https://github.com/pal1000/mesa-dist-win/releases/download/19.2.7/mesa3d-19.2.7-release-msvc.7z 7z x mesa3d-19.2.7-release-msvc.7z cd x64 xcopy opengl32.dll C:\windows\system32\mesadrv.dll* xcopy opengl32.dll C:\windows\syswow64\mesadrv.dll* REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL" /v DLL /t REG_SZ /d "mesadrv.dll" /f REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL" /v DriverVersion /t REG_DWORD /d 1 /f REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL" /v Flags /t REG_DWORD /d 1 /f REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL" /v Version /t REG_DWORD /d 2 /f REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL" /v DLL /t REG_SZ /d "mesadrv.dll" /f REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL" /v DriverVersion /t REG_DWORD /d 1 /f REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL" /v Flags /t REG_DWORD /d 1 /f REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL" /v Version /t REG_DWORD /d 2 /f shell: cmd - name: Install Dependencies run: | python -m pip install --upgrade pip setuptools wheel python -m pip install ${{ matrix.qt-version }} numpy${{ matrix.numpy-version }} scipy pyopengl h5py matplotlib numba python -m pip install --use-feature=in-tree-build . python -m pip install pytest - name: "Install Linux VirtualDisplay" if: runner.os == 'Linux' run: | sudo apt-get update -y sudo apt-get install -y libxkbcommon-x11-0 x11-utils sudo apt-get install --no-install-recommends -y libyaml-dev libegl1-mesa libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 sudo apt-get install -y libopengl0 python -m pip install pytest-xvfb - name: 'Debug Info' run: | echo python location: `which python` echo python version: `python --version` echo pytest location: `which pytest` echo installed packages python -m pip list echo pyqtgraph system info python -c "import pyqtgraph as pg; pg.systemInfo()" shell: bash env: QT_DEBUG_PLUGINS: 1 - name: 'XVFB Display Info' run: | xvfb-run --server-args="-screen 0, 1920x1200x24 -ac +extension GLX +render -noreset" python -c "from pyqtgraph.opengl.glInfo import GLTest" xvfb-run --server-args="-screen 0, 1920x1200x24 -ac +extension GLX +render -noreset" python -m pyqtgraph.util.get_resolution if: runner.os == 'Linux' - name: 'Display Info' run: | python -c "from pyqtgraph.opengl.glInfo import GLTest" python -m pyqtgraph.util.get_resolution if: runner.os != 'Linux' - name: Run Tests run: | mkdir $SCREENSHOT_DIR pytest tests -v pytest examples -v shell: bash - name: Upload Screenshots uses: actions/upload-artifact@v2 with: name: Screenshots (Python ${{ matrix.python-version }} - Qt-Bindings ${{ matrix.qt-lib }} - OS ${{ matrix.os }}) path: $SCREENSHOT_DIR if-no-files-found: ignore env: SCREENSHOT_DIR: ./screenshots build-wheel: name: build wheel runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup Python 3.9 uses: actions/setup-python@v2 with: python-version: '3.9' - name: Build Wheel run: | python -m pip install setuptools wheel python setup.py bdist_wheel