Commit 2a99f2fb authored by Jonathan Rudenberg's avatar Jonathan Rudenberg Committed by Andrew Gerrand

cmd/go: run main package when no files are listed

Fixes 5164.

R=golang-dev, iant, adg
CC=golang-dev
https://golang.org/cl/8119049
parent 72d99aec
......@@ -392,6 +392,15 @@ To update pre-Go 1 code to Go 1.1, use a Go 1.0 tool chain
to convert the code to Go 1.0 first.
</p>
<h3 id="gorun">Changes to the go run command</h3>
<p>
The <code>go run</code> command now runs all files in the current working
directory if no file arguments are listed. Also, the <code>go run</code>
command now returns an error if test files are provided on the command line. In
this sense, "<code>go run</code>" replaces "<code>go run *.go</code>".
</p>
<h3 id="platforms">Additional platforms</h3>
<p>
......
......@@ -367,9 +367,10 @@ Compile and run Go program
Usage:
go run [build flags] gofiles... [arguments...]
go run [build flags] [gofiles...] [arguments...]
Run compiles and runs the main package comprising the named Go source files.
If no files are named, it compiles and runs all non-test Go source files.
For more about build flags, see 'go help build'.
......
......@@ -8,14 +8,16 @@ import (
"fmt"
"os"
"os/exec"
"path/filepath"
"strings"
)
var cmdRun = &Command{
UsageLine: "run [build flags] gofiles... [arguments...]",
UsageLine: "run [build flags] [gofiles...] [arguments...]",
Short: "compile and run Go program",
Long: `
Run compiles and runs the main package comprising the named Go source files.
If no files are named, it compiles and runs all non-test Go source files.
For more about build flags, see 'go help build'.
......@@ -44,7 +46,18 @@ func runRun(cmd *Command, args []string) {
}
files, cmdArgs := args[:i], args[i:]
if len(files) == 0 {
fatalf("go run: no go files listed")
allFiles, err := filepath.Glob("*.go")
if err != nil {
fatalf("go run: %s", err)
}
for _, file := range allFiles {
if !strings.HasSuffix(file, "_test.go") {
files = append(files, file)
}
}
if len(files) == 0 {
fatalf("go run: no go files found")
}
}
for _, file := range files {
if strings.HasSuffix(file, "_test.go") {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment