| // 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 build |
| |
| import ( |
| "exec" |
| "path/filepath" |
| "testing" |
| ) |
| |
| var buildPkgs = []string{ |
| "go/build/pkgtest", |
| "go/build/cmdtest", |
| "go/build/cgotest", |
| } |
| |
| const cmdtestOutput = "3" |
| |
| func TestBuild(t *testing.T) { |
| for _, pkg := range buildPkgs { |
| tree := Path[0] // Goroot |
| dir := filepath.Join(tree.SrcDir(), pkg) |
| |
| info, err := ScanDir(dir, true) |
| if err != nil { |
| t.Error("ScanDir:", err) |
| continue |
| } |
| |
| s, err := Build(tree, pkg, info) |
| if err != nil { |
| t.Error("Build:", err) |
| continue |
| } |
| |
| if err := s.Run(); err != nil { |
| t.Error("Run:", err) |
| continue |
| } |
| |
| if pkg == "go/build/cmdtest" { |
| bin := s.Output[0] |
| b, err := exec.Command(bin).CombinedOutput() |
| if err != nil { |
| t.Errorf("exec: %s: %v", bin, err) |
| continue |
| } |
| if string(b) != cmdtestOutput { |
| t.Errorf("cmdtest output: %s want: %s", b, cmdtestOutput) |
| } |
| } |
| |
| defer func(s *Script) { |
| if err := s.Nuke(); err != nil { |
| t.Errorf("nuking: %v", err) |
| } |
| }(s) |
| } |
| } |