aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/gofmt
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2016-11-23 01:43:33 +0000
committerBrad Fitzpatrick <bradfitz@golang.org>2016-11-23 01:55:21 +0000
commit75c1381176e98357b01a67af7e9dbaf68de7fdff (patch)
treedfef2a184aa2fe7af0d30f161a4ad94d2e1300e9 /src/cmd/gofmt
parent8ace3461a46d09466f0e1a8ea3ff41ac9cbd46f4 (diff)
downloadgo-75c1381176e98357b01a67af7e9dbaf68de7fdff.tar.gz
go-75c1381176e98357b01a67af7e9dbaf68de7fdff.zip
cmd/gofmt: don't call Chmod on windows
Fixes #18026 Change-Id: Id510f427ceffb2441c3d6f5bb5c93244e46c6497 Reviewed-on: https://go-review.googlesource.com/33477 TryBot-Result: Gobot Gobot <gobot@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Diffstat (limited to 'src/cmd/gofmt')
-rw-r--r--src/cmd/gofmt/gofmt.go15
-rw-r--r--src/cmd/gofmt/gofmt_test.go13
2 files changed, 23 insertions, 5 deletions
diff --git a/src/cmd/gofmt/gofmt.go b/src/cmd/gofmt/gofmt.go
index 88ee75f52d..e1ef0ddb83 100644
--- a/src/cmd/gofmt/gofmt.go
+++ b/src/cmd/gofmt/gofmt.go
@@ -18,6 +18,7 @@ import (
"os"
"os/exec"
"path/filepath"
+ "runtime"
"runtime/pprof"
"strings"
)
@@ -252,6 +253,8 @@ func diff(b1, b2 []byte) (data []byte, err error) {
}
+const chmodSupported = runtime.GOOS != "windows"
+
// backupFile writes data to a new file named filename<number> with permissions perm,
// with <number randomly chosen such that the file name is unique. backupFile returns
// the chosen file name.
@@ -262,11 +265,13 @@ func backupFile(filename string, data []byte, perm os.FileMode) (string, error)
return "", err
}
bakname := f.Name()
- err = f.Chmod(perm)
- if err != nil {
- f.Close()
- os.Remove(bakname)
- return bakname, err
+ if chmodSupported {
+ err = f.Chmod(perm)
+ if err != nil {
+ f.Close()
+ os.Remove(bakname)
+ return bakname, err
+ }
}
// write data to backup file
diff --git a/src/cmd/gofmt/gofmt_test.go b/src/cmd/gofmt/gofmt_test.go
index dea012764b..b7ca9e8d11 100644
--- a/src/cmd/gofmt/gofmt_test.go
+++ b/src/cmd/gofmt/gofmt_test.go
@@ -171,3 +171,16 @@ func TestCRLF(t *testing.T) {
t.Errorf("%s contains CR's", golden)
}
}
+
+func TestBackupFile(t *testing.T) {
+ dir, err := ioutil.TempDir("", "gofmt_test")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(dir)
+ name, err := backupFile(filepath.Join(dir, "foo.go"), []byte(" package main"), 0644)
+ if err != nil {
+ t.Fatal(err)
+ }
+ t.Logf("Created: %s", name)
+}