From 8e072854f402bdb09b2f4aa1694c545a565a048f Mon Sep 17 00:00:00 2001 From: Pieter Noordhuis Date: Thu, 18 Jun 2026 15:42:03 +0200 Subject: [PATCH] acc: run jobs/check-metadata locally and fix testserver workspace export envelope The jobs/check-metadata acceptance test was cloud-only because the in-process testserver returned raw file bytes from GET /api/2.0/workspace/export, whereas the real endpoint returns a JSON envelope whose base64 "content" field the SDK decodes. As a result `databricks workspace export` produced empty output locally and the test's metadata.json greps failed. The export handler now returns a workspace.ExportResponse with base64-encoded content for the SDK path, while still returning raw bytes for the filer's ?direct_download=true reads. This also fixes a latent testserver bug affecting any local single-file workspace export. Co-authored-by: Isaac --- .../resources/jobs/check-metadata/out.test.toml | 2 +- .../resources/jobs/check-metadata/test.toml | 2 +- libs/testserver/handlers.go | 15 ++++++++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/acceptance/bundle/resources/jobs/check-metadata/out.test.toml b/acceptance/bundle/resources/jobs/check-metadata/out.test.toml index 650836edeb3..bbc7fcfd1bd 100644 --- a/acceptance/bundle/resources/jobs/check-metadata/out.test.toml +++ b/acceptance/bundle/resources/jobs/check-metadata/out.test.toml @@ -1,3 +1,3 @@ -Local = false +Local = true Cloud = true EnvMatrix.DATABRICKS_BUNDLE_ENGINE = ["terraform", "direct"] diff --git a/acceptance/bundle/resources/jobs/check-metadata/test.toml b/acceptance/bundle/resources/jobs/check-metadata/test.toml index 735597ef37a..060ef7c77d8 100644 --- a/acceptance/bundle/resources/jobs/check-metadata/test.toml +++ b/acceptance/bundle/resources/jobs/check-metadata/test.toml @@ -1,4 +1,4 @@ -Local = false +Local = true Cloud = true RecordRequests = false diff --git a/libs/testserver/handlers.go b/libs/testserver/handlers.go index 8f611a7c7c9..ee56cefe3e6 100644 --- a/libs/testserver/handlers.go +++ b/libs/testserver/handlers.go @@ -94,7 +94,20 @@ func AddDefaultHandlers(server *Server) { server.Handle("GET", "/api/2.0/workspace/export", func(req Request) any { path := req.URL.Query().Get("path") - return req.Workspace.WorkspaceExport(path) + data := req.Workspace.WorkspaceExport(path) + + // The filer reads the raw object body via ?direct_download=true, while + // the SDK's Workspace.Export (used by `databricks workspace export`) + // requests JSON and expects the base64-encoded content field. + if req.URL.Query().Get("direct_download") == "true" { + return data + } + + return Response{ + Body: workspace.ExportResponse{ + Content: base64.StdEncoding.EncodeToString(data), + }, + } }) server.Handle("POST", "/api/2.0/workspace/delete", func(req Request) any {