]> Cypherpunks repositories - gostls13.git/commitdiff
test: eliminate use of Perl in fixedbugs/bug345.go
authorYury Smolsky <yury@smolsky.by>
Wed, 30 May 2018 16:46:59 +0000 (19:46 +0300)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 31 May 2018 13:29:50 +0000 (13:29 +0000)
To allow testing of fixedbugs/bug345.go in Go,
a new flag -n is introduced. This flag disables setting
of relative path for local imports and imports search path
to current dir, namely -D . -I . are not passed to the compiler.
Error regexps are fixed to allow running the test in temp directory.

This change eliminates the last place where Perl
script "errchk" was used.

Fixes #25586.

Change-Id: If085f466e6955312d77315f96d3ef1cb68495aef
Reviewed-on: https://go-review.googlesource.com/115277
Run-TryBot: Yury Smolsky <yury@smolsky.by>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
test/fixedbugs/bug345.dir/main.go
test/fixedbugs/bug345.go
test/run.go

index 6e4fdf4e21ab5b2ecee4b1000dacf64d1d075ad6..b77a2fad5fba076e5c0e7ad8f3d87fcaccc057f3 100644 (file)
@@ -6,8 +6,9 @@ package main
 
 import (
        "bufio"
-       "./io"
        goio "io"
+
+       "./io"
 )
 
 func main() {
@@ -22,7 +23,7 @@ func main() {
        // main.go:27: cannot use &x (type *"io".SectionReader) as type *"/Users/rsc/g/go/test/fixedbugs/bug345.dir/io".SectionReader in function argument
 
        var w io.Writer
-       bufio.NewWriter(w)  // ERROR "test/io|has incompatible type"
+       bufio.NewWriter(w) // ERROR "[\w.]+[^.]/io|has incompatible type"
        var x goio.SectionReader
-       io.SR(&x)  // ERROR "test/io|has incompatible type"
+       io.SR(&x) // ERROR "[\w.]+[^.]/io|has incompatible type"
 }
index af505c8a3bea13c3cb45a109a68b0a49330a4f67..917592118dee0609087ef81e2d11741145962bdd 100644 (file)
@@ -1,47 +1,8 @@
-// +build !nacl,!js,!plan9,!windows
-// run
+// errorcheckdir -n
 
+// run
 // Copyright 2011 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.
 
-package main
-
-import (
-       "fmt"
-       "os"
-       "os/exec"
-       "path/filepath"
-       "regexp"
-)
-
-func main() {
-       // TODO: If we get rid of errchk, re-enable this test on Plan 9 and Windows.
-       errchk, err := filepath.Abs("errchk")
-       check(err)
-
-       bugDir := filepath.Join(".", "fixedbugs", "bug345.dir")
-       run("go", "tool", "compile", filepath.Join(bugDir, "io.go"))
-       run(errchk, "go", "tool", "compile", "-e", filepath.Join(bugDir, "main.go"))
-
-       os.Remove("io.o")
-}
-
-var bugRE = regexp.MustCompile(`(?m)^BUG`)
-
-func run(name string, args ...string) {
-       cmd := exec.Command(name, args...)
-       out, err := cmd.CombinedOutput()
-       if bugRE.Match(out) || err != nil {
-               fmt.Println(string(out))
-               fmt.Println(err)
-               os.Exit(1)
-       }
-}
-
-func check(err error) {
-       if err != nil {
-               fmt.Println(err)
-               os.Exit(1)
-       }
-}
+package ignored
index 81c0c0b92950e2f8a21659888a050f6be427e1ff..0805ecd4fcfe8f12b109f14f3e4b734e8113d893 100644 (file)
@@ -216,8 +216,12 @@ func compileFile(runcmd runCmd, longname string, flags []string) (out []byte, er
        return runcmd(cmd...)
 }
 
-func compileInDir(runcmd runCmd, dir string, flags []string, names ...string) (out []byte, err error) {
-       cmd := []string{goTool(), "tool", "compile", "-e", "-D", ".", "-I", "."}
+func compileInDir(runcmd runCmd, dir string, flags []string, localImports bool, names ...string) (out []byte, err error) {
+       cmd := []string{goTool(), "tool", "compile", "-e"}
+       if localImports {
+               // Set relative path for local imports and import search path to current dir.
+               cmd = append(cmd, "-D", ".", "-I", ".")
+       }
        cmd = append(cmd, flags...)
        if *linkshared {
                cmd = append(cmd, "-dynlink", "-installsuffix=dynlink")
@@ -489,6 +493,7 @@ func (t *test) run() {
        wantError := false
        wantAuto := false
        singlefilepkgs := false
+       localImports := true
        f := strings.Fields(action)
        if len(f) > 0 {
                action = f[0]
@@ -530,6 +535,12 @@ func (t *test) run() {
                        wantError = false
                case "-s":
                        singlefilepkgs = true
+               case "-n":
+                       // Do not set relative path for local imports to current dir,
+                       // e.g. do not pass -D . -I . to the compiler.
+                       // Used in fixedbugs/bug345.go to allow compilation and import of local pkg.
+                       // See golang.org/issue/25635
+                       localImports = false
                case "-t": // timeout in seconds
                        args = args[1:]
                        var err error
@@ -668,7 +679,7 @@ func (t *test) run() {
                        return
                }
                for _, gofiles := range pkgs {
-                       _, t.err = compileInDir(runcmd, longdir, flags, gofiles...)
+                       _, t.err = compileInDir(runcmd, longdir, flags, localImports, gofiles...)
                        if t.err != nil {
                                return
                        }
@@ -690,7 +701,7 @@ func (t *test) run() {
                        errPkg--
                }
                for i, gofiles := range pkgs {
-                       out, err := compileInDir(runcmd, longdir, flags, gofiles...)
+                       out, err := compileInDir(runcmd, longdir, flags, localImports, gofiles...)
                        if i == errPkg {
                                if wantError && err == nil {
                                        t.err = fmt.Errorf("compilation succeeded unexpectedly\n%s", out)
@@ -727,7 +738,7 @@ func (t *test) run() {
                        return
                }
                for i, gofiles := range pkgs {
-                       _, err := compileInDir(runcmd, longdir, flags, gofiles...)
+                       _, err := compileInDir(runcmd, longdir, flags, localImports, gofiles...)
                        // Allow this package compilation fail based on conditions below;
                        // its errors were checked in previous case.
                        if err != nil && !(wantError && action == "errorcheckandrundir" && i == len(pkgs)-2) {