github.com/4ad/go@v0.0.0-20161219182952-69a12818b605/test/fixedbugs/issue13268.go (about)

     1  // run
     2  
     3  // Copyright 2015 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Test error message when EOF is encountered in the
     8  // middle of a BOM.
     9  //
    10  // Since the error requires an EOF, we cannot use the
    11  // errorcheckoutput mechanism.
    12  
    13  package main
    14  
    15  import (
    16  	"io/ioutil"
    17  	"log"
    18  	"os"
    19  	"os/exec"
    20  	"runtime"
    21  	"strings"
    22  )
    23  
    24  func main() {
    25  	// cannot use temp file on nacl via child process
    26  	if runtime.GOOS == "nacl" {
    27  		return
    28  	}
    29  
    30  	// create source
    31  	f, err := ioutil.TempFile("", "issue13268-")
    32  	if err != nil {
    33  		log.Fatalf("could not create source file: %v", err)
    34  	}
    35  	f.Write([]byte("package p\n\nfunc \xef\xef")) // if this fails, we will die later
    36  	f.Close()
    37  	defer os.Remove(f.Name())
    38  
    39  	// compile and test output
    40  	cmd := exec.Command("go", "tool", "compile", f.Name())
    41  	out, err := cmd.CombinedOutput()
    42  	if err == nil {
    43  		log.Fatalf("expected cmd/compile to fail")
    44  	}
    45  	if strings.HasPrefix(string(out), "illegal UTF-8 sequence") {
    46  		log.Fatalf("error %q not found", out)
    47  	}
    48  }