From ba607240f76fce446e1104d034e444ec42e22c73 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Fri, 7 Dec 2018 17:36:55 -0500 Subject: [PATCH] cmd/go: add a chmod command to script_test Change-Id: I5d4f65553f6c368d101be59aae9440f5ec9573b7 Reviewed-on: https://go-review.googlesource.com/c/153461 Run-TryBot: Bryan C. Mills Reviewed-by: Ian Lance Taylor TryBot-Result: Gobot Gobot --- src/cmd/go/script_test.go | 19 +++++++++++++++++++ src/cmd/go/testdata/script/README | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/src/cmd/go/script_test.go b/src/cmd/go/script_test.go index 31ddf02fb0a..e180080a9da 100644 --- a/src/cmd/go/script_test.go +++ b/src/cmd/go/script_test.go @@ -342,6 +342,7 @@ Script: var scriptCmds = map[string]func(*testScript, bool, []string){ "addcrlf": (*testScript).cmdAddcrlf, "cd": (*testScript).cmdCd, + "chmod": (*testScript).cmdChmod, "cmp": (*testScript).cmdCmp, "cmpenv": (*testScript).cmdCmpenv, "cp": (*testScript).cmdCp, @@ -400,6 +401,24 @@ func (ts *testScript) cmdCd(neg bool, args []string) { fmt.Fprintf(&ts.log, "%s\n", ts.cd) } +// chmod changes permissions for a file or directory. +func (ts *testScript) cmdChmod(neg bool, args []string) { + if neg { + ts.fatalf("unsupported: ! chmod") + } + if len(args) < 2 { + ts.fatalf("usage: chmod perm paths...") + } + perm, err := strconv.ParseUint(args[0], 0, 32) + if err != nil || perm&uint64(os.ModePerm) != perm { + ts.fatalf("invalid mode: %s", args[0]) + } + for _, path := range args[1:] { + err := os.Chmod(path, os.FileMode(perm)) + ts.check(err) + } +} + // cmp compares two files. func (ts *testScript) cmdCmp(neg bool, args []string) { if neg { diff --git a/src/cmd/go/testdata/script/README b/src/cmd/go/testdata/script/README index 22124b9fb89..392ff34fc2d 100644 --- a/src/cmd/go/testdata/script/README +++ b/src/cmd/go/testdata/script/README @@ -86,6 +86,10 @@ The commands are: - cd dir Change to the given directory for future commands. +- chmod perm path... + Change the permissions of the files or directories named by the path arguments + to be equal to perm. Only numerical permissions are supported. + - cmp file1 file2 Check that the named files have the same content. By convention, file1 is the actual data and file2 the expected data.