From 84a8b210f5e356139efc86d2c10c0288a471581e Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Fri, 16 Jun 2023 21:52:50 +0200 Subject: [PATCH] return empty array if there are no objects to list Previously "null" was returned, which does not match the REST backend specification. --- handlers_test.go | 24 ++++++++++++++++++++++++ repo/repo.go | 4 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/handlers_test.go b/handlers_test.go index 7907825..9951118 100644 --- a/handlers_test.go +++ b/handlers_test.go @@ -379,6 +379,30 @@ func TestResticErrorHandler(t *testing.T) { } } +func TestEmptyList(t *testing.T) { + mux, _, _, _, cleanup := createTestHandler(t, Server{ + AppendOnly: true, + NoAuth: true, + Debug: true, + }) + defer cleanup() + + // create the repo + checkRequest(t, mux.ServeHTTP, + newRequest(t, "POST", "/?create=true", nil), + []wantFunc{wantCode(http.StatusOK)}) + + for i := 1; i <= 2; i++ { + req := newRequest(t, "GET", "/data/", nil) + if i == 2 { + req.Header.Set("Accept", "application/vnd.x.restic.rest.v2") + } + + checkRequest(t, mux.ServeHTTP, req, + []wantFunc{wantCode(http.StatusOK), wantBody("[]")}) + } +} + func TestListWithUnexpectedFiles(t *testing.T) { mux, _, _, tempdir, cleanup := createTestHandler(t, Server{ AppendOnly: true, diff --git a/repo/repo.go b/repo/repo.go index a1ad642..d04879a 100644 --- a/repo/repo.go +++ b/repo/repo.go @@ -375,7 +375,7 @@ func (h *Handler) listBlobsV1(w http.ResponseWriter, r *http.Request) { return } - var names []string + names := []string{} for _, i := range items { if isHashed(objectType) { if !i.IsDir() { @@ -434,7 +434,7 @@ func (h *Handler) listBlobsV2(w http.ResponseWriter, r *http.Request) { return } - var blobs []Blob + blobs := []Blob{} for _, i := range items { if isHashed(objectType) { if !i.IsDir() {