71 lines
2.2 KiB
PowerShell
71 lines
2.2 KiB
PowerShell
|
function Exec {
|
||
|
[CmdletBinding()]
|
||
|
param(
|
||
|
[Parameter(Mandatory = $true)]
|
||
|
[scriptblock]$cmd,
|
||
|
[string]$errorMessage = ($msgs.error_bad_command -f $cmd)
|
||
|
)
|
||
|
|
||
|
try {
|
||
|
$global:lastexitcode = 0
|
||
|
& $cmd
|
||
|
if ($lastexitcode -ne 0) {
|
||
|
throw $errorMessage
|
||
|
}
|
||
|
}
|
||
|
catch [Exception] {
|
||
|
throw $_
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Setup Go.
|
||
|
$env:GOPATH = $env:WORKSPACE
|
||
|
$env:PATH = "$env:GOPATH\bin;C:\tools\mingw64\bin;$env:PATH"
|
||
|
& gvm --format=powershell $(Get-Content .go-version) | Invoke-Expression
|
||
|
|
||
|
# Write cached magefile binaries to workspace to ensure
|
||
|
# each run starts from a clean slate.
|
||
|
$env:MAGEFILE_CACHE = "$env:WORKSPACE\.magefile"
|
||
|
|
||
|
# Configure testing parameters.
|
||
|
$env:TEST_COVERAGE = "true"
|
||
|
$env:RACE_DETECTOR = "true"
|
||
|
|
||
|
# Install mage from vendor.
|
||
|
exec { go install github.com/elastic/beats/vendor/github.com/magefile/mage } "mage install FAILURE"
|
||
|
|
||
|
echo "Fetching testing dependencies"
|
||
|
# TODO (elastic/beats#5050): Use a vendored copy of this.
|
||
|
exec { go get github.com/docker/libcompose }
|
||
|
|
||
|
if (Test-Path "$env:beat") {
|
||
|
cd "$env:beat"
|
||
|
} else {
|
||
|
echo "$env:beat does not exist"
|
||
|
New-Item -ItemType directory -Path build | Out-Null
|
||
|
New-Item -Name build\TEST-empty.xml -ItemType File | Out-Null
|
||
|
exit
|
||
|
}
|
||
|
|
||
|
if (Test-Path "build") { Remove-Item -Recurse -Force build }
|
||
|
New-Item -ItemType directory -Path build\coverage | Out-Null
|
||
|
New-Item -ItemType directory -Path build\system-tests | Out-Null
|
||
|
New-Item -ItemType directory -Path build\system-tests\run | Out-Null
|
||
|
|
||
|
echo "Building fields.yml"
|
||
|
exec { mage fields } "mage fields FAILURE"
|
||
|
|
||
|
echo "Building $env:beat"
|
||
|
exec { mage build } "Build FAILURE"
|
||
|
|
||
|
echo "Unit testing $env:beat"
|
||
|
exec { mage goTestUnit } "mage goTestUnit FAILURE"
|
||
|
|
||
|
echo "System testing $env:beat"
|
||
|
# Get a CSV list of package names.
|
||
|
$packages = $(go list ./... | select-string -Pattern "/vendor/" -NotMatch | select-string -Pattern "/scripts/cmd/" -NotMatch)
|
||
|
$packages = ($packages|group|Select -ExpandProperty Name) -join ","
|
||
|
exec { go test -race -c -cover -covermode=atomic -coverpkg $packages } "go test -race -cover FAILURE"
|
||
|
Set-Location -Path tests/system
|
||
|
exec { nosetests --with-timer --with-xunit --xunit-file=../../build/TEST-system.xml } "System test FAILURE"
|