[CmdletBinding()] param( [switch]$SkipVet ) $ErrorActionPreference = "Stop" $workspaceRoot = Split-Path -Parent $PSScriptRoot Push-Location $workspaceRoot try { $unformatted = @(gofmt -l all module) if ($unformatted.Count -gt 0) { throw ("gofmt required:" + [Environment]::NewLine + ($unformatted -join [Environment]::NewLine)) } $modules = @(go list -m -f '{{.Dir}}') foreach ($module in $modules) { Write-Host "==> $module" Push-Location $module try { if (-not $SkipVet) { go vet ./... if ($LASTEXITCODE -ne 0) { throw "go vet failed: $module" } } go test ./... if ($LASTEXITCODE -ne 0) { throw "go test failed: $module" } } finally { Pop-Location } } } finally { Pop-Location }