1
0
mirror of https://github.com/golang/go synced 2024-11-05 22:36:10 -07:00
go/test/sinit_run.go
Bryan C. Mills afac2c0508 test: avoid writing temporary files to GOROOT
This reverts CL 207477, restoring CL 207352 with a fix for the
regression observed in the Windows builders.

cmd/compile evidently does not fully support NUL as an output on
Windows, so this time we write ignored 'compile' outputs
to temporary files (instead of os.DevNull as in CL 207352).

Updates #28387
Fixes #35619

Change-Id: I2edc5727c3738fa1bccb4b74e50d114cf2a7fcff
Reviewed-on: https://go-review.googlesource.com/c/go/+/207602
Run-TryBot: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-11-18 14:40:07 +00:00

46 lines
853 B
Go

// +build !nacl,!js
// run
// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Run the sinit test.
package main
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"os/exec"
)
func main() {
f, err := ioutil.TempFile("", "sinit-*.o")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
f.Close()
cmd := exec.Command("go", "tool", "compile", "-o", f.Name(), "-S", "sinit.go")
out, err := cmd.CombinedOutput()
os.Remove(f.Name())
if err != nil {
fmt.Println(string(out))
fmt.Println(err)
os.Exit(1)
}
if len(bytes.TrimSpace(out)) == 0 {
fmt.Println("'go tool compile -S sinit.go' printed no output")
os.Exit(1)
}
if bytes.Contains(out, []byte("initdone")) {
fmt.Println("sinit generated an init function")
os.Exit(1)
}
}