mirror of
https://github.com/ScoopInstaller/Scoop.git
synced 2025-12-10 18:15:37 +00:00
104 lines
4.1 KiB
PowerShell
104 lines
4.1 KiB
PowerShell
#Requires -Version 5.1
|
|
#Requires -Modules @{ ModuleName = 'BuildHelpers'; ModuleVersion = '2.0.1' }
|
|
#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.2.0' }
|
|
#Requires -Modules @{ ModuleName = 'PSScriptAnalyzer'; ModuleVersion = '1.17.1' }
|
|
param(
|
|
[String] $TestPath = (Convert-Path "$PSScriptRoot\..")
|
|
)
|
|
|
|
$pesterConfig = New-PesterConfiguration -Hashtable @{
|
|
Run = @{
|
|
Path = $TestPath
|
|
PassThru = $true
|
|
}
|
|
Output = @{
|
|
Verbosity = 'Detailed'
|
|
}
|
|
}
|
|
$excludes = @()
|
|
|
|
if ($IsLinux -or $IsMacOS) {
|
|
Write-Warning 'Skipping Windows-only tests on Linux/macOS'
|
|
$excludes += 'Windows'
|
|
}
|
|
|
|
if ($env:CI -eq $true) {
|
|
Write-Host "Load 'BuildHelpers' environment variables ..."
|
|
Set-BuildEnvironment -Force
|
|
|
|
# Check if tests are called from the Core itself, if so, adding excludes
|
|
if ($TestPath -eq (Convert-Path "$PSScriptRoot\..")) {
|
|
if ($env:BHCommitMessage -match '!linter') {
|
|
Write-Warning "Skipping code linting per commit flag '!linter'"
|
|
$excludes += 'Linter'
|
|
}
|
|
|
|
$changedScripts = (Get-GitChangedFile -Include '*.ps1', '*.psd1', '*.psm1' -Commit $env:BHCommitHash)
|
|
if (!$changedScripts) {
|
|
Write-Warning "Skipping tests and code linting for PowerShell scripts because they didn't change"
|
|
$excludes += 'Linter'
|
|
$excludes += 'Scoop'
|
|
}
|
|
|
|
if (!($changedScripts -like '*decompress.ps1') -and !($changedScripts -like '*Decompress.Tests.ps1')) {
|
|
Write-Warning "Skipping tests and code linting for decompress.ps1 files because it didn't change"
|
|
$excludes += 'Decompress'
|
|
}
|
|
|
|
if ('Decompress' -notin $excludes -and 'Windows' -notin $excludes) {
|
|
Write-Host 'Install decompress dependencies ...'
|
|
|
|
Write-Host (7z.exe | Select-String -Pattern '7-Zip').ToString()
|
|
|
|
$env:SCOOP_HELPERS_PATH = 'C:\projects\helpers'
|
|
if (!(Test-Path $env:SCOOP_HELPERS_PATH)) {
|
|
New-Item -ItemType Directory -Path $env:SCOOP_HELPERS_PATH | Out-Null
|
|
}
|
|
|
|
$env:SCOOP_LESSMSI_PATH = "$env:SCOOP_HELPERS_PATH\lessmsi\lessmsi.exe"
|
|
if (!(Test-Path $env:SCOOP_LESSMSI_PATH)) {
|
|
$source = 'https://github.com/activescott/lessmsi/releases/download/v1.10.0/lessmsi-v1.10.0.zip'
|
|
$destination = "$env:SCOOP_HELPERS_PATH\lessmsi.zip"
|
|
Invoke-WebRequest -Uri $source -OutFile $destination
|
|
& 7z.exe x "$env:SCOOP_HELPERS_PATH\lessmsi.zip" -o"$env:SCOOP_HELPERS_PATH\lessmsi" -y | Out-Null
|
|
}
|
|
|
|
$env:SCOOP_INNOUNP_PATH = "$env:SCOOP_HELPERS_PATH\innounp\innounp.exe"
|
|
if (!(Test-Path $env:SCOOP_INNOUNP_PATH)) {
|
|
$source = 'https://raw.githubusercontent.com/ScoopInstaller/Binary/master/innounp/innounp050.rar'
|
|
$destination = "$env:SCOOP_HELPERS_PATH\innounp.rar"
|
|
Invoke-WebRequest -Uri $source -OutFile $destination
|
|
& 7z.exe x "$env:SCOOP_HELPERS_PATH\innounp.rar" -o"$env:SCOOP_HELPERS_PATH\innounp" -y | Out-Null
|
|
}
|
|
}
|
|
}
|
|
|
|
# Display CI environment variables
|
|
$buildVariables = (Get-ChildItem -Path 'Env:').Where({ $_.Name -match '^(?:BH|CI(?:_|$)|APPVEYOR|GITHUB_|RUNNER_|SCOOP_)' })
|
|
$details = $buildVariables |
|
|
Where-Object -FilterScript { $_.Name -notmatch 'EMAIL' } |
|
|
Sort-Object -Property 'Name' |
|
|
Format-Table -AutoSize -Property 'Name', 'Value' |
|
|
Out-String
|
|
Write-Host 'CI variables:'
|
|
Write-Host $details -ForegroundColor DarkGray
|
|
}
|
|
|
|
if ($excludes.Length -gt 0) {
|
|
$pesterConfig.Filter.ExcludeTag = $excludes
|
|
}
|
|
|
|
if ($env:BHBuildSystem -eq 'AppVeyor') {
|
|
# AppVeyor
|
|
$resultsXml = "$PSScriptRoot\TestResults.xml"
|
|
$pesterConfig.TestResult.Enabled = $true
|
|
$pesterConfig.TestResult.OutputPath = $resultsXml
|
|
$result = Invoke-Pester -Configuration $pesterConfig
|
|
Add-TestResultToAppveyor -TestFile $resultsXml
|
|
} else {
|
|
# GitHub Actions / Local
|
|
$result = Invoke-Pester -Configuration $pesterConfig
|
|
}
|
|
|
|
exit $result.FailedCount
|