From 63f1b49342436dd6b28b304a64a2548e8f1cad11 Mon Sep 17 00:00:00 2001 From: ahkui <14049597+ahkui@users.noreply.github.com> Date: Wed, 2 Apr 2025 11:49:02 +0000 Subject: [PATCH] fix(gcsfs): update object not exist check logic Signed-off-by: ahkui --- gcsfs/errors.go | 4 +++- gcsfs/file_info.go | 3 ++- gcsfs/gcs_mocks.go | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/gcsfs/errors.go b/gcsfs/errors.go index 201cd676..16f9d29c 100644 --- a/gcsfs/errors.go +++ b/gcsfs/errors.go @@ -19,13 +19,15 @@ package gcsfs import ( "errors" "syscall" + + "cloud.google.com/go/storage" ) var ( ErrNoBucketInName = errors.New("no bucket name found in the name") ErrFileClosed = errors.New("file is closed") ErrOutOfRange = errors.New("out of range") - ErrObjectDoesNotExist = errors.New("storage: object doesn't exist") + ErrObjectDoesNotExist = storage.ErrObjectNotExist ErrEmptyObjectName = errors.New("storage: object name is empty") ErrFileNotFound = syscall.ENOENT ) diff --git a/gcsfs/file_info.go b/gcsfs/file_info.go index 92e30460..0591b312 100644 --- a/gcsfs/file_info.go +++ b/gcsfs/file_info.go @@ -17,6 +17,7 @@ package gcsfs import ( + "errors" "os" "path/filepath" "strings" @@ -58,7 +59,7 @@ func newFileInfo(name string, fs *Fs, fileMode os.FileMode) (*FileInfo, error) { res.name = fs.ensureTrailingSeparator(res.name) res.isDir = true return res, nil - } else if err.Error() == ErrObjectDoesNotExist.Error() { + } else if errors.Is(err, ErrObjectDoesNotExist) { // Folders do not actually "exist" in GCloud, so we have to check, if something exists with // such a prefix bucketName, bucketPath := fs.splitName(name) diff --git a/gcsfs/gcs_mocks.go b/gcsfs/gcs_mocks.go index 9e64970a..d13f391f 100644 --- a/gcsfs/gcs_mocks.go +++ b/gcsfs/gcs_mocks.go @@ -130,7 +130,7 @@ func (o *objectMock) Attrs(_ context.Context) (*storage.ObjectAttrs, error) { if info.IsDir() { // we have to mock it here, because of FileInfo logic - return nil, ErrObjectDoesNotExist + return nil, storage.ErrObjectNotExist } return res, nil