aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEmmanuel T Odeke <emmanuel@orijtech.com>2020-04-29 20:55:22 -0700
committerRobert Griesemer <gri@golang.org>2020-05-08 20:28:57 +0000
commit26de581a709428d55ffc38cc0dbc7ddfc96b9443 (patch)
treee026dfeda47929cda82aa68f0636024b7694a170 /test
parent8f4be42b37469d7c392c330ac13599a88d5c9ea2 (diff)
downloadgo-26de581a709428d55ffc38cc0dbc7ddfc96b9443.tar.gz
go-26de581a709428d55ffc38cc0dbc7ddfc96b9443.zip
cmd/compile: omit file:pos for non-existent errors
Omits printing the file:line:column when trying to open non-existent files Given: go tool compile x.go * Before: x.go:0: open x.go: no such file or directory * After: open x.go: no such file or directory Reverts the revert in CL 231043 by only fixing the case of non-existent errors which is what the original bug was about. The fix for "permission errors" will come later on when I have bandwidth to investigate the differences between running with root and why os.Open works for some builders and not others. Fixes #36437 Change-Id: I9c8a0981ad708b504bb43990a4105b42266fa41f Reviewed-on: https://go-review.googlesource.com/c/go/+/230941 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'test')
-rw-r--r--test/fixedbugs/issue36437.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/fixedbugs/issue36437.go b/test/fixedbugs/issue36437.go
new file mode 100644
index 0000000000..f96544beff
--- /dev/null
+++ b/test/fixedbugs/issue36437.go
@@ -0,0 +1,49 @@
+// run
+
+// +build !nacl,!js
+
+// Copyright 2020 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.
+
+// Tests that when non-existent files are passed to the
+// compiler, such as in:
+// go tool compile foo
+// we don't print the beginning position:
+// foo:0: open foo: no such file or directory
+// but instead omit it and print out:
+// open foo: no such file or directory
+
+package main
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "regexp"
+)
+
+func main() {
+ tmpDir, err := ioutil.TempDir("", "issue36437")
+ if err != nil {
+ panic(err)
+ }
+ defer os.RemoveAll(tmpDir)
+
+ msgOrErr := func(msg []byte, err error) string {
+ if len(msg) == 0 && err != nil {
+ return err.Error()
+ }
+ return string(msg)
+ }
+
+ filename := "non-existent.go"
+ output, err := exec.Command("go", "tool", "compile", filename).CombinedOutput()
+ got := msgOrErr(output, err)
+
+ regFilenamePos := regexp.MustCompile(filename + ":\\d+")
+ if regFilenamePos.MatchString(got) {
+ fmt.Printf("Error message must not contain filename:pos, but got:\n%q\n", got)
+ }
+}