]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gofmt: don't call Chmod on windows
authorBrad Fitzpatrick <bradfitz@golang.org>
Wed, 23 Nov 2016 01:43:33 +0000 (01:43 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 23 Nov 2016 01:55:21 +0000 (01:55 +0000)
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>
src/cmd/gofmt/gofmt.go
src/cmd/gofmt/gofmt_test.go

index 88ee75f52d9e79e8b7657c9bb88574981094c259..e1ef0ddb83717ae0210f4f8d1899afbd9d5587af 100644 (file)
@@ -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
index dea012764b38308a43d12ed7db8ff63c62aa4662..b7ca9e8d119082875c93bd36f108466104346185 100644 (file)
@@ -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)
+}