From: Bryan C. Mills Date: Wed, 20 Feb 2019 23:11:11 +0000 (-0500) Subject: cmd/go: allow "stdout" and "stderr" as inputs to script_test "cp" command X-Git-Tag: go1.13beta1~1420 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=50bb2b6b0f11e4e3ef73aee55946cd4da546f6b1;p=gostls13.git cmd/go: allow "stdout" and "stderr" as inputs to script_test "cp" command Updates #30241 Change-Id: I543d8914faf810835d3327baa3c84b3dff124156 Reviewed-on: https://go-review.googlesource.com/c/163519 Reviewed-by: Ian Lance Taylor --- diff --git a/src/cmd/go/script_test.go b/src/cmd/go/script_test.go index c56c1fd3e4..9cc2521e79 100644 --- a/src/cmd/go/script_test.go +++ b/src/cmd/go/script_test.go @@ -509,16 +509,33 @@ func (ts *testScript) cmdCp(neg bool, args []string) { } for _, arg := range args[:len(args)-1] { - src := ts.mkabs(arg) - info, err := os.Stat(src) - ts.check(err) - data, err := ioutil.ReadFile(src) - ts.check(err) + var ( + src string + data []byte + mode os.FileMode + ) + switch arg { + case "stdout": + src = arg + data = []byte(ts.stdout) + mode = 0666 + case "stderr": + src = arg + data = []byte(ts.stderr) + mode = 0666 + default: + src = ts.mkabs(arg) + info, err := os.Stat(src) + ts.check(err) + mode = info.Mode() & 0777 + data, err = ioutil.ReadFile(src) + ts.check(err) + } targ := dst if dstDir { targ = filepath.Join(dst, filepath.Base(src)) } - ts.check(ioutil.WriteFile(targ, data, info.Mode()&0777)) + ts.check(ioutil.WriteFile(targ, data, mode)) } } diff --git a/src/cmd/go/testdata/script/README b/src/cmd/go/testdata/script/README index a7b50fff16..0c34333823 100644 --- a/src/cmd/go/testdata/script/README +++ b/src/cmd/go/testdata/script/README @@ -108,6 +108,8 @@ The commands are: - cp src... dst Copy the listed files to the target file or existing directory. + src can include "stdout" or "stderr" to use the standard output or standard error + from the most recent exec or go command. - env [key=value...] With no arguments, print the environment (useful for debugging).