repos / pico

pico services mono repo
git clone https://github.com/picosh/pico.git

commit
d01276a
parent
cda5bd5
author
Eric Bower
date
2025-06-21 08:01:20 -0400 EDT
fix(fs): dont fail when listing or deleting that dont exist
2 files changed,  +19, -1
M pkg/pobj/storage/fs.go
+7, -1
 1@@ -174,6 +174,9 @@ func (s *StorageFS) DeleteObject(bucket Bucket, fpath string) error {
 2 	loc := filepath.Join(bucket.Path, fpath)
 3 	err := os.Remove(loc)
 4 	if err != nil {
 5+		if os.IsNotExist(err) {
 6+			return nil
 7+		}
 8 		return err
 9 	}
10 
11@@ -208,12 +211,15 @@ func (s *StorageFS) ListBuckets() ([]string, error) {
12 }
13 
14 func (s *StorageFS) ListObjects(bucket Bucket, dir string, recursive bool) ([]os.FileInfo, error) {
15-	var fileList []os.FileInfo
16+	fileList := []os.FileInfo{}
17 
18 	fpath := path.Join(bucket.Path, dir)
19 
20 	info, err := os.Stat(fpath)
21 	if err != nil {
22+		if os.IsNotExist(err) {
23+			return fileList, nil
24+		}
25 		return fileList, err
26 	}
27 
M pkg/shared/storage/fs_test.go
+12, -0
 1@@ -141,6 +141,12 @@ func TestFsAdapter(t *testing.T) {
 2 		t.Fatal(cmp.Diff(objs, expectedObjs, ignore))
 3 	}
 4 
 5+	// it should not error if folder doesn't exist
 6+	_, err = st.ListObjects(bucket, "/not-real", true)
 7+	if err != nil {
 8+		t.Fatal(err)
 9+	}
10+
11 	// list buckets
12 	aBucket, _ := st.UpsertBucket("another")
13 	_, _ = st.UpsertBucket("and-another")
14@@ -183,6 +189,12 @@ func TestFsAdapter(t *testing.T) {
15 		t.Fatal("containing folder should have been deleted")
16 	}
17 
18+	// it should not error if file doesn't exist
19+	err = st.DeleteObject(bucket, "nice/not-real.txt")
20+	if err != nil {
21+		t.Fatal(err)
22+	}
23+
24 	str = "a deeply nested test file"
25 	reader = strings.NewReader(str)
26 	_, _, err = st.PutObject(bucket, "./here/yes/we/can.txt", reader, &utils.FileEntry{