node-versions/azure-pipelines/templates/test-job.yml
Maxim Lobanov 9f83a0c6de
Switch packages for Ubuntu & macOS to use tar.gz format instead of zip (#6)
Switch to using tar.gz format for Ubuntu and macOS systems because it is much more common on nix systems which is important in container scenarios
2020-04-23 18:42:48 +03:00

79 lines
2.5 KiB
YAML

jobs:
- job: Test_Node
pool:
name: Azure Pipelines
vmImage: $(VmImage)
steps:
- checkout: self
submodules: true
- task: PowerShell@2
displayName: Fully cleanup the toolcache directory before testing
inputs:
TargetType: inline
script: |
$NodeToolcachePath = Join-Path -Path $env:AGENT_TOOLSDIRECTORY -ChildPath "node"
if (Test-Path $NodeToolcachePath) {
Remove-Item -Path $NodeToolcachePath -Recurse -Force
}
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'node-$(Version)-$(Platform)-$(Architecture)'
path: $(Build.ArtifactStagingDirectory)
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/node-$(Version)-$(Platform)-$(Architecture).*'
destinationFolder: $(Build.BinariesDirectory)
cleanDestinationFolder: false
- task: PowerShell@2
displayName: 'Apply build artifact to the local machines'
inputs:
targetType: inline
script: |
if ("$(Platform)" -match 'win32') { powershell ./setup.ps1 } else { sh ./setup.sh }
workingDirectory: '$(Build.BinariesDirectory)'
- task: NodeTool@0
displayName: 'Use Node $(Version)'
inputs:
versionSpec: $(Version)
- task: PowerShell@2
displayName: 'Wait for the logs'
inputs:
targetType: inline
script: |
Write-Host "Fake step that do nothing"
Write-Host "We need it because log of previous step 'Use Node' is not available here yet."
Write-Host "In testing step (Node.Tests.ps1) we analyze build log of 'Use Node' task"
Write-Host "to determine if Node.js version was consumed from cache and was downloaded"
- task: PowerShell@2
displayName: 'Run tests'
inputs:
TargetType: inline
script: |
Install-Module Pester -Force -Scope CurrentUser
Import-Module Pester
$pesterParams = @{
Path="./Node.Tests.ps1";
Parameters=@{
Version="$(Version)";
}
}
Invoke-Pester -Script $pesterParams -OutputFile "test_results.xml" -OutputFormat NUnitXml
workingDirectory: '$(Build.SourcesDirectory)/tests'
- task: PublishTestResults@2
displayName: 'Publish test results'
inputs:
testResultsFiles: '*.xml'
testResultsFormat: NUnit
searchFolder: 'tests'
failTaskOnFailedTests: true
testRunTitle: "Node.js $(Version)-$(Platform)"
condition: always()