mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.regabi] cmd/compile: split out package test [generated]
[git-generate] cd src/cmd/compile/internal/gc rf ' mv bench_test.go constFold_test.go dep_test.go \ fixedbugs_test.go iface_test.go float_test.go global_test.go \ inl_test.go lang_test.go logic_test.go \ reproduciblebuilds_test.go shift_test.go ssa_test.go \ truncconst_test.go zerorange_test.go \ cmd/compile/internal/test ' mv testdata ../test Change-Id: I041971b7e9766673f7a331679bfe1c8110dcda66 Reviewed-on: https://go-review.googlesource.com/c/go/+/279480 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
3d8a3cb06b
commit
37f138df6b
56 changed files with 18 additions and 22 deletions
116
src/cmd/compile/internal/test/global_test.go
Normal file
116
src/cmd/compile/internal/test/global_test.go
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
// Copyright 2015 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 test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"internal/testenv"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// Make sure "hello world" does not link in all the
|
||||
// fmt.scanf routines. See issue 6853.
|
||||
func TestScanfRemoval(t *testing.T) {
|
||||
testenv.MustHaveGoBuild(t)
|
||||
t.Parallel()
|
||||
|
||||
// Make a directory to work in.
|
||||
dir, err := ioutil.TempDir("", "issue6853a-")
|
||||
if err != nil {
|
||||
t.Fatalf("could not create directory: %v", err)
|
||||
}
|
||||
defer os.RemoveAll(dir)
|
||||
|
||||
// Create source.
|
||||
src := filepath.Join(dir, "test.go")
|
||||
f, err := os.Create(src)
|
||||
if err != nil {
|
||||
t.Fatalf("could not create source file: %v", err)
|
||||
}
|
||||
f.Write([]byte(`
|
||||
package main
|
||||
import "fmt"
|
||||
func main() {
|
||||
fmt.Println("hello world")
|
||||
}
|
||||
`))
|
||||
f.Close()
|
||||
|
||||
// Name of destination.
|
||||
dst := filepath.Join(dir, "test")
|
||||
|
||||
// Compile source.
|
||||
cmd := exec.Command(testenv.GoToolPath(t), "build", "-o", dst, src)
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
t.Fatalf("could not build target: %v", err)
|
||||
}
|
||||
|
||||
// Check destination to see if scanf code was included.
|
||||
cmd = exec.Command(testenv.GoToolPath(t), "tool", "nm", dst)
|
||||
out, err = cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
t.Fatalf("could not read target: %v", err)
|
||||
}
|
||||
if bytes.Contains(out, []byte("scanInt")) {
|
||||
t.Fatalf("scanf code not removed from helloworld")
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure -S prints assembly code. See issue 14515.
|
||||
func TestDashS(t *testing.T) {
|
||||
testenv.MustHaveGoBuild(t)
|
||||
t.Parallel()
|
||||
|
||||
// Make a directory to work in.
|
||||
dir, err := ioutil.TempDir("", "issue14515-")
|
||||
if err != nil {
|
||||
t.Fatalf("could not create directory: %v", err)
|
||||
}
|
||||
defer os.RemoveAll(dir)
|
||||
|
||||
// Create source.
|
||||
src := filepath.Join(dir, "test.go")
|
||||
f, err := os.Create(src)
|
||||
if err != nil {
|
||||
t.Fatalf("could not create source file: %v", err)
|
||||
}
|
||||
f.Write([]byte(`
|
||||
package main
|
||||
import "fmt"
|
||||
func main() {
|
||||
fmt.Println("hello world")
|
||||
}
|
||||
`))
|
||||
f.Close()
|
||||
|
||||
// Compile source.
|
||||
cmd := exec.Command(testenv.GoToolPath(t), "build", "-gcflags", "-S", "-o", filepath.Join(dir, "test"), src)
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
t.Fatalf("could not build target: %v", err)
|
||||
}
|
||||
|
||||
patterns := []string{
|
||||
// It is hard to look for actual instructions in an
|
||||
// arch-independent way. So we'll just look for
|
||||
// pseudo-ops that are arch-independent.
|
||||
"\tTEXT\t",
|
||||
"\tFUNCDATA\t",
|
||||
"\tPCDATA\t",
|
||||
}
|
||||
outstr := string(out)
|
||||
for _, p := range patterns {
|
||||
if !strings.Contains(outstr, p) {
|
||||
println(outstr)
|
||||
panic("can't find pattern " + p)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue