// +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)
	}
}
