# Python Django # Test a Django project on multiple versions of Python. # Add steps that analyze code, save build artifacts, deploy, and more: # https://docs.microsoft.com/azure/devops/pipelines/languages/python trigger: - master pool: vmImage: ubuntu-latest strategy: matrix: Python39: PYTHON_VERSION: '3.9' maxParallel: 3 steps: - task: UsePythonVersion@0 inputs: versionSpec: '$(PYTHON_VERSION)' architecture: 'x64' - task: PythonScript@0 displayName: 'Export project path' inputs: scriptSource: 'inline' script: | """Search all subdirectories for `manage.py`.""" from glob import iglob from os import path # Python >= 3.5 manage_py = next(iglob(path.join('**', 'manage.py'), recursive=True), None) if not manage_py: raise SystemExit('Could not find a Django project') project_location = path.dirname(path.abspath(manage_py)) print('Found Django project in', project_location) print('##vso[task.setvariable variable=projectRoot]{}'.format(project_location)) - script: | python -m pip install --upgrade pip setuptools wheel pip install --require-hashes -r requirements.txt pip install --require-hashes -r requirements-dev.txt pip install unittest-xml-reporting coverage invoke sudo apt-get install poppler-utils sudo apt-get install libpoppler-dev displayName: 'Install prerequisites' - script: | pushd '$(projectRoot)' invoke update coverage run manage.py test --testrunner xmlrunner.extra.djangotestrunner.XMLTestRunner --no-input coverage xml -i displayName: 'Run tests' env: INVENTREE_DB_ENGINE: sqlite3 INVENTREE_DB_NAME: inventree INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static INVENTREE_BACKUP_DIR: ./backup INVENTREE_PLUGINS_ENABLED: true - task: PublishTestResults@2 inputs: testResultsFiles: "**/TEST-*.xml" testRunTitle: 'Python $(PYTHON_VERSION)' condition: succeededOrFailed() - task: PublishCodeCoverageResults@1 inputs: codeCoverageTool: Cobertura summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'