aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/script_test.go
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2022-01-26 09:50:41 -0500
committerBryan Mills <bcmills@google.com>2022-01-26 15:51:52 +0000
commit827babf6aa602c76e45fabfdc2efe8d3f30edabd (patch)
tree43e7fdc3d1e96e25d7985c5a3b611b731d5df8f9 /src/cmd/go/script_test.go
parent6eb58cdffa1ab334493776a25ccccfa89c2ca7ac (diff)
downloadgo-827babf6aa602c76e45fabfdc2efe8d3f30edabd.tar.gz
go-827babf6aa602c76e45fabfdc2efe8d3f30edabd.zip
cmd/go: add mv and support "! cmp" in script tests
For #50183 Change-Id: Ie384333fb7a69d0d2cfaba0cfc4eb7afba2fd745 Reviewed-on: https://go-review.googlesource.com/c/go/+/380916 Trust: Bryan Mills <bcmills@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/cmd/go/script_test.go')
-rw-r--r--src/cmd/go/script_test.go57
1 files changed, 38 insertions, 19 deletions
diff --git a/src/cmd/go/script_test.go b/src/cmd/go/script_test.go
index 7adbc71a89..0fc4b0f7ab 100644
--- a/src/cmd/go/script_test.go
+++ b/src/cmd/go/script_test.go
@@ -491,6 +491,7 @@ var scriptCmds = map[string]func(*testScript, simpleStatus, []string){
"go": (*testScript).cmdGo,
"grep": (*testScript).cmdGrep,
"mkdir": (*testScript).cmdMkdir,
+ "mv": (*testScript).cmdMv,
"rm": (*testScript).cmdRm,
"skip": (*testScript).cmdSkip,
"stale": (*testScript).cmdStale,
@@ -585,10 +586,6 @@ func (ts *testScript) cmdChmod(want simpleStatus, args []string) {
// cmp compares two files.
func (ts *testScript) cmdCmp(want simpleStatus, args []string) {
- if want != success {
- // It would be strange to say "this file can have any content except this precise byte sequence".
- ts.fatalf("unsupported: %v cmp", want)
- }
quiet := false
if len(args) > 0 && args[0] == "-q" {
quiet = true
@@ -597,14 +594,11 @@ func (ts *testScript) cmdCmp(want simpleStatus, args []string) {
if len(args) != 2 {
ts.fatalf("usage: cmp file1 file2")
}
- ts.doCmdCmp(args, false, quiet)
+ ts.doCmdCmp(want, args, false, quiet)
}
// cmpenv compares two files with environment variable substitution.
func (ts *testScript) cmdCmpenv(want simpleStatus, args []string) {
- if want != success {
- ts.fatalf("unsupported: %v cmpenv", want)
- }
quiet := false
if len(args) > 0 && args[0] == "-q" {
quiet = true
@@ -613,17 +607,18 @@ func (ts *testScript) cmdCmpenv(want simpleStatus, args []string) {
if len(args) != 2 {
ts.fatalf("usage: cmpenv file1 file2")
}
- ts.doCmdCmp(args, true, quiet)
+ ts.doCmdCmp(want, args, true, quiet)
}
-func (ts *testScript) doCmdCmp(args []string, env, quiet bool) {
+func (ts *testScript) doCmdCmp(want simpleStatus, args []string, env, quiet bool) {
name1, name2 := args[0], args[1]
var text1, text2 string
- if name1 == "stdout" {
+ switch name1 {
+ case "stdout":
text1 = ts.stdout
- } else if name1 == "stderr" {
+ case "stderr":
text1 = ts.stderr
- } else {
+ default:
data, err := os.ReadFile(ts.mkabs(name1))
ts.check(err)
text1 = string(data)
@@ -638,14 +633,28 @@ func (ts *testScript) doCmdCmp(args []string, env, quiet bool) {
text2 = ts.expand(text2, false)
}
- if text1 == text2 {
- return
- }
-
- if !quiet {
+ eq := text1 == text2
+ if !eq && !quiet && want != failure {
fmt.Fprintf(&ts.log, "[diff -%s +%s]\n%s\n", name1, name2, diff(text1, text2))
}
- ts.fatalf("%s and %s differ", name1, name2)
+ switch want {
+ case failure:
+ if eq {
+ ts.fatalf("%s and %s do not differ", name1, name2)
+ }
+ case success:
+ if !eq {
+ ts.fatalf("%s and %s differ", name1, name2)
+ }
+ case successOrFailure:
+ if eq {
+ fmt.Fprintf(&ts.log, "%s and %s do not differ", name1, name2)
+ } else {
+ fmt.Fprintf(&ts.log, "%s and %s differ", name1, name2)
+ }
+ default:
+ ts.fatalf("unsupported: %v cmp", want)
+ }
}
// cp copies files, maybe eventually directories.
@@ -840,6 +849,16 @@ func (ts *testScript) cmdMkdir(want simpleStatus, args []string) {
}
}
+func (ts *testScript) cmdMv(want simpleStatus, args []string) {
+ if want != success {
+ ts.fatalf("unsupported: %v mv", want)
+ }
+ if len(args) != 2 {
+ ts.fatalf("usage: mv old new")
+ }
+ ts.check(os.Rename(ts.mkabs(args[0]), ts.mkabs(args[1])))
+}
+
// rm removes files or directories.
func (ts *testScript) cmdRm(want simpleStatus, args []string) {
if want != success {