github.com/mattn/go@v0.0.0-20171011075504-07f7db3ea99f/test/fixedbugs/bug248.go (about)

     1  // +build !nacl,!plan9,!windows
     2  // run
     3  
     4  // Copyright 2009 The Go Authors. All rights reserved.
     5  // Use of this source code is governed by a BSD-style
     6  // license that can be found in the LICENSE file.
     7  
     8  package main
     9  
    10  import (
    11  	"fmt"
    12  	"os"
    13  	"os/exec"
    14  	"path/filepath"
    15  )
    16  
    17  func main() {
    18  	// TODO: If we get rid of errchk, re-enable this test on Windows.
    19  	errchk, err := filepath.Abs("errchk")
    20  	check(err)
    21  
    22  	err = os.Chdir(filepath.Join("fixedbugs", "bug248.dir"))
    23  	check(err)
    24  
    25  	run("go", "tool", "compile", "bug0.go")
    26  	run("go", "tool", "compile", "bug1.go")
    27  	run("go", "tool", "compile", "bug2.go")
    28  	run(errchk, "go", "tool", "compile", "-e", "bug3.go")
    29  	run("go", "tool", "link", "bug2.o")
    30  	run(fmt.Sprintf(".%ca.out", filepath.Separator))
    31  
    32  	os.Remove("bug0.o")
    33  	os.Remove("bug1.o")
    34  	os.Remove("bug2.o")
    35  	os.Remove("a.out")
    36  }
    37  
    38  func run(name string, args ...string) {
    39  	cmd := exec.Command(name, args...)
    40  	out, err := cmd.CombinedOutput()
    41  	if err != nil {
    42  		fmt.Println(string(out))
    43  		fmt.Println(err)
    44  		os.Exit(1)
    45  	}
    46  }
    47  
    48  func check(err error) {
    49  	if err != nil {
    50  		fmt.Println(err)
    51  		os.Exit(1)
    52  	}
    53  }