diff options
author | Bryan C. Mills <bcmills@google.com> | 2022-01-26 09:50:41 -0500 |
---|---|---|
committer | Bryan Mills <bcmills@google.com> | 2022-01-26 15:51:52 +0000 |
commit | 827babf6aa602c76e45fabfdc2efe8d3f30edabd (patch) | |
tree | 43e7fdc3d1e96e25d7985c5a3b611b731d5df8f9 /src/cmd/go/script_test.go | |
parent | 6eb58cdffa1ab334493776a25ccccfa89c2ca7ac (diff) | |
download | go-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.go | 57 |
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 { |