test_windows.ps1 2.6 KB
Newer Older
1 2 3 4 5
param (
    [Parameter(Mandatory = $true)][string]$version,
    [Parameter(Mandatory = $true)][string]$arch
)

6 7 8
# Install Chocolatey
#Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

9
# Install MinGW.
10
choco install -y mingw --version 10.2.0 
11 12 13 14 15 16 17 18 19

# Install Procdump
if (-Not(Test-Path "C:\procdump"))
{
    mkdir C:\procdump
    Invoke-WebRequest -UserAgent wget -Uri https://download.sysinternals.com/files/Procdump.zip -OutFile C:\procdump\procdump.zip
    &7z x -oC:\procdump\ C:\procdump\procdump.zip > $null
}

20 21 22 23 24 25 26 27 28 29 30 31
$env:PATH += ";C:\procdump;C:\mingw64\bin"

function GetGo($version) {
    $env:GOROOT = "C:\go\$version"
    if (-Not(Test-Path $env:GOROOT))
    {
        $file = "$version.windows-$arch.zip"
        $url = "https://dl.google.com/go/$file"
        Invoke-WebRequest -UserAgent wget -Uri $url -OutFile $file
        &7z x -oC:\go $file > $null
        Move-Item -Path C:\go\go -Destination $env:GOROOT -force
    }
32
}
33 34

if ($version -eq "gotip") {
35
    Exit 0
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
    $latest = Invoke-WebRequest -Uri https://golang.org/VERSION?m=text -UseBasicParsing | Select-Object -ExpandProperty Content
    GetGo $latest
    $env:GOROOT_BOOTSTRAP = $env:GOROOT
    $env:GOROOT = "C:\go\go-tip"
    Write-Host "Building Go with GOROOT_BOOTSTRAP $env:GOROOT_BOOTSTRAP"
    if (-Not(Test-Path $env:GOROOT)) {
        git clone https://go.googlesource.com/go C:\go\go-tip
        Push-Location -Path C:\go\go-tip\src
    } else {
        Push-Location -Path C:\go\go-tip\src
        git pull
    }
    .\make.bat
    Pop-Location
} else {
    # Install Go
    Write-Host "Finding latest patch version for $version"
53 54 55 56 57 58 59 60 61 62
    $versions = Invoke-WebRequest -Uri 'https://golang.org/dl/?mode=json&include=all' -UseBasicParsing | foreach {$_.Content} | ConvertFrom-Json
    $v = $versions | foreach {$_.version} | Select-String -Pattern "^$version($|\.)" | Sort-Object -Descending | Select-Object -First 1
    if ($v -eq $null) {
      $v = $versions | foreach {$_.version} | Select-String -Pattern "^$version(rc)" | Sort-Object -Descending | Select-Object -First 1
    }
    if ($v -eq $null) {
      $v = $versions | foreach {$_.version} | Select-String -Pattern "^$version(beta)" | Sort-Object -Descending | Select-Object -First 1
    }
    Write-Host "Go $v on $arch"
    GetGo $v
63 64 65
}

$env:GOPATH = "C:\gopath"
66
$env:PATH += ";$env:GOROOT\bin;$env:GOPATH\bin"
67 68 69
Write-Host $env:PATH
Write-Host $env:GOROOT
Write-Host $env:GOPATH
70

71 72
go version
go env
73
go run _scripts/make.go test
74
Exit $LastExitCode