# Azure Pipelines CI job template for PyDM Tests # https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/anaconda?view=azure-devops parameters: name: '' vmImage: '' jobs: - job: ${{ parameters.name }} pool: vmImage: ${{ parameters.vmImage }} strategy: matrix: Python27-PyQt4-4.8: python.version: '2.7' qt.bindings: "pyqt=4" install.method: "conda" Python27-PySide-4.8: python.version: '2.7' qt.bindings: "pyside" install.method: "conda" Python36-PyQt-5.9: python.version: "3.6" qt.bindings: "pyqt" install.method: "conda" Python36-PySide2-5.9: python.version: "3.6" qt.bindings: "pyside2" install.method: "conda" Python37-PyQt-5.13: python.version: '3.7' qt.bindings: "PyQt5" install.method: "pip" Python37-PySide2-5.13: python.version: "3.7" qt.bindings: "PySide2" install.method: "pip" steps: - task: DownloadPipelineArtifact@2 inputs: source: 'current' artifact: wheel path: 'dist' - task: ScreenResolutionUtility@1 inputs: displaySettings: 'specific' width: '1920' height: '1080' condition: eq(variables['agent.os'], 'Windows_NT' ) - task: UsePythonVersion@0 inputs: versionSpec: $(python.version) condition: eq(variables['install.method'], 'pip') - script: | curl -LJO https://github.com/pal1000/mesa-dist-win/releases/download/19.1.0/mesa3d-19.1.0-release-msvc.exe 7z x mesa3d-19.1.0-release-msvc.exe 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 displayName: "Install Windows-Mesa OpenGL DLL" condition: eq(variables['agent.os'], 'Windows_NT') - bash: | if [ $(agent.os) == 'Linux' ] then echo "##vso[task.prependpath]$CONDA/bin" if [ $(python.version) == '2.7' ] then echo "Grabbing Older Miniconda" wget https://repo.anaconda.com/miniconda/Miniconda2-4.6.14-Linux-x86_64.sh -O Miniconda.sh bash Miniconda.sh -b -p $CONDA -f fi elif [ $(agent.os) == 'Darwin' ] then sudo chown -R $USER $CONDA echo "##vso[task.prependpath]$CONDA/bin" if [ $(python.version) == '2.7' ] then echo "Grabbing Older Miniconda" wget https://repo.anaconda.com/miniconda/Miniconda2-4.6.14-MacOSX-x86_64.sh -O Miniconda.sh bash Miniconda.sh -b -p $CONDA -f fi elif [ $(agent.os) == 'Windows_NT' ] then echo "##vso[task.prependpath]$CONDA/Scripts" else echo 'Just what OS are you using?' fi displayName: 'Add Conda To $PATH' condition: eq(variables['install.method'], 'conda' ) - bash: | if [ $(install.method) == "conda" ] then conda create --name test-environment-$(python.version) python=$(python.version) --yes echo "Conda Info:" conda info echo "Installing qt-bindings" source activate test-environment-$(python.version) if [ $(agent.os) == "Linux" ] && [ $(python.version) == "2.7" ] then conda install $(qt.bindings) --yes else conda install -c conda-forge $(qt.bindings) --yes fi echo "Installing remainder of dependencies" conda install -c conda-forge numpy scipy six pyopengl --yes else pip install $(qt.bindings) numpy scipy pyopengl six fi echo "" pip install pytest pytest-xdist pytest-cov coverage if [ $(python.version) == "2.7" ] then pip install pytest-faulthandler==1.6.0 export PYTEST_ADDOPTS="--faulthandler-timeout=15" fi displayName: "Install Dependencies" - bash: | if [ $(install.method) == "conda" ] then source activate test-environment-$(python.version) fi python -m pip install --no-index --find-links=dist pyqtgraph displayName: 'Install Wheel' - bash: | sudo apt-get install -y libxkbcommon-x11-0 # herbstluftwm if [ $(install.method) == "conda" ] then source activate test-environment-$(python.version) fi pip install pytest-xvfb displayName: "Virtual Display Setup" condition: eq(variables['agent.os'], 'Linux' ) - bash: | if [ $(install.method) == "conda" ] then source activate test-environment-$(python.version) fi echo python location: `which python` echo python version: `python --version` echo pytest location: `which pytest` echo installed packages pip list echo pyqtgraph system info python -c "import pyqtgraph as pg; pg.systemInfo()" echo display information if [ $(agent.os) == 'Linux' ] then export DISPLAY=:99.0 Xvfb :99 -screen 0 1920x1200x24 -ac +extension GLX +render -noreset & sleep 3 fi python -m pyqtgraph.util.get_resolution echo openGL information python -c "from pyqtgraph.opengl.glInfo import GLTest" displayName: 'Debug Info' continueOnError: false - bash: | if [ $(install.method) == "conda" ] then source activate test-environment-$(python.version) fi mkdir -p "$SCREENSHOT_DIR" # echo "If Screenshots are generated, they may be downloaded from:" # echo "https://dev.azure.com/pyqtgraph/pyqtgraph/_apis/build/builds/$(Build.BuildId)/artifacts?artifactName=Screenshots&api-version=5.0" pytest . -sv \ --junitxml=junit/test-results.xml \ -n 1 --cov pyqtgraph --cov-report=xml --cov-report=html displayName: 'Unit tests' env: AZURE: 1 SCREENSHOT_DIR: $(Build.ArtifactStagingDirectory)/screenshots - task: PublishBuildArtifacts@1 displayName: 'Publish Screenshots' condition: failed() inputs: pathtoPublish: $(Build.ArtifactStagingDirectory)/screenshots artifactName: Screenshots - task: PublishTestResults@2 condition: succeededOrFailed() inputs: testResultsFiles: '**/test-*.xml' testRunTitle: 'Test Results for $(agent.os) - $(python.version) - $(qt.bindings) - $(install.method)' publishRunAttachments: true - task: PublishCodeCoverageResults@1 inputs: codeCoverageTool: Cobertura summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml' reportDirectory: '$(System.DefaultWorkingDirectory)/**/htmlcov'