]> Cypherpunks repositories - gostls13.git/commitdiff
os: add check for ERROR_BAD_NETPATH in windows IsNotExist
authorAlex Brainman <alex.brainman@gmail.com>
Tue, 15 Sep 2015 06:59:20 +0000 (16:59 +1000)
committerAlex Brainman <alex.brainman@gmail.com>
Wed, 23 Sep 2015 04:51:45 +0000 (04:51 +0000)
Otherwise IsNotExist does not account for not existent servers and shares.

Fixes #12374

Change-Id: I37f6850198f91dcb02a4a917b793339d7e30e934
Reviewed-on: https://go-review.googlesource.com/14579
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/os/error_windows.go
src/os/os_windows_test.go

index 83db6c07845333266d5c5ffabb3d05a9436056f7..6e2ece12273a0ce5fe412bc6184c40096b1aea5c 100644 (file)
@@ -19,6 +19,8 @@ func isExist(err error) bool {
                err == syscall.ERROR_FILE_EXISTS || err == ErrExist
 }
 
+const _ERROR_BAD_NETPATH = syscall.Errno(53)
+
 func isNotExist(err error) bool {
        switch pe := err.(type) {
        case nil:
@@ -29,6 +31,7 @@ func isNotExist(err error) bool {
                err = pe.Err
        }
        return err == syscall.ERROR_FILE_NOT_FOUND ||
+               err == _ERROR_BAD_NETPATH ||
                err == syscall.ERROR_PATH_NOT_FOUND || err == ErrNotExist
 }
 
index ee19b2b33a63b1c05627fbf8025ddc6b686f4217..4de208ee10a85b9c78ba6115e4c8467d9592f623 100644 (file)
@@ -126,3 +126,23 @@ func TestStartProcessAttr(t *testing.T) {
        defer p.Wait()
        t.Fatalf("StartProcess expected to fail, but succeeded.")
 }
+
+func TestShareNotExistError(t *testing.T) {
+       if testing.Short() {
+               t.Skip("slow test that uses network; skipping")
+       }
+       _, err := os.Stat(`\\no_such_server\no_such_share\no_such_file`)
+       if err == nil {
+               t.Fatal("stat succeeded, but expected to fail")
+       }
+       if !os.IsNotExist(err) {
+               t.Fatalf("os.Stat failed with %q, but os.IsNotExist(err) is false", err)
+       }
+}
+
+func TestBadNetPathError(t *testing.T) {
+       const ERROR_BAD_NETPATH = syscall.Errno(53)
+       if !os.IsNotExist(ERROR_BAD_NETPATH) {
+               t.Fatal("os.IsNotExist(syscall.Errno(53)) is false, but want true")
+       }
+}