# 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.12: python.version: '3.7' qt.bindings: "PyQt5" install.method: "pip" Python37-PySide2-5.12: python.version: "3.7" qt.bindings: "PySide2" install.method: "pip" steps: - task: ScreenResolutionUtility@1 inputs: displaySettings: 'specific' width: '1920' height: '1080' condition: eq(variables['agent.os'], 'Windows_NT' ) - 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') - task: UsePythonVersion@0 inputs: versionSpec: $(python.version) condition: eq(variables['install.method'], 'pip') - bash: | if [ $(agent.os) == 'Linux' ] then echo '##vso[task.prependpath]/usr/share/miniconda/bin' elif [ $(agent.os) == 'Darwin' ] then echo '##vso[task.prependpath]$CONDA/bin' sudo install -d -m 0777 /usr/local/miniconda/envs elif [ $(agent.os) == 'Windows_NT' ] then echo "##vso[task.prependpath]$env:CONDA\Scripts" else echo 'Just what OS are you using?' fi displayName: 'Add Conda to $PATH' condition: eq(variables['install.method'], 'conda' ) - task: CondaEnvironment@0 displayName: 'Create Conda Environment' condition: eq(variables['install.method'], 'conda') inputs: environmentName: 'test-environment-$(python.version)' packageSpecs: 'python=$(python.version)' updateConda: false - bash: | if [ $(install.method) == "conda" ] then source activate test-environment-$(python.version) conda install -c conda-forge $(qt.bindings) numpy scipy pyopengl pytest six coverage --yes --quiet else pip install $(qt.bindings) numpy scipy pyopengl pytest six coverage fi pip install pytest-xdist pytest-cov if [ $(python.version) == "2.7" ] then pip install pytest-faulthandler fi displayName: "Install Dependencies" - bash: | if [ $(install.method) == "conda" ] then source activate test-environment-$(python.version) fi pip install setuptools wheel python setup.py bdist_wheel pip install dist/*.whl displayName: 'Build Wheel and Install' - task: CopyFiles@2 inputs: contents: 'dist/**' targetFolder: $(Build.ArtifactStagingDirectory) cleanTargetFolder: true displayName: "Copy Binary Wheel Distribution To Artifacts" - task: PublishBuildArtifacts@1 displayName: 'Publish Binary Wheel' condition: always() inputs: pathtoPublish: $(Build.ArtifactStagingDirectory)/dist artifactName: Distributions - 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'