Skip to content

Commit 8c7ece0

Browse files
committed
fix: return error when deploying functions with static files without docker
1 parent c215606 commit 8c7ece0

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

internal/functions/deploy/deploy.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ func Run(ctx context.Context, slugs []string, useDocker bool, noVerifyJWT *bool,
5757
if utils.IsDockerRunning(ctx) {
5858
opt = function.WithBundler(NewDockerBundler(fsys))
5959
} else {
60+
for slug, fc := range functionConfig {
61+
if len(fc.StaticFiles) > 0 {
62+
return errors.Errorf("--use-docker was specified but Docker is not running. Function %s requires Docker to bundle static files. Please start Docker or omit the flag.", slug)
63+
}
64+
}
6065
fmt.Fprintln(os.Stderr, utils.Yellow("WARNING:"), "Docker is not running")
6166
}
6267
}

internal/functions/deploy/deploy_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,34 @@ import_map = "./import_map.json"
209209
assert.ErrorContains(t, err, "No Functions specified or found in supabase/functions")
210210
})
211211

212+
t.Run("throws error on static files without docker", func(t *testing.T) {
213+
t.Cleanup(func() { clear(utils.Config.Functions) })
214+
// Setup in-memory fs
215+
fsys := afero.NewMemMapFs()
216+
require.NoError(t, utils.WriteConfig(fsys, false))
217+
f, err := fsys.OpenFile(utils.ConfigPath, os.O_APPEND|os.O_WRONLY, 0600)
218+
require.NoError(t, err)
219+
_, err = f.WriteString(`
220+
[functions.` + slug + `]
221+
static_files = ["./static/*"]
222+
`)
223+
require.NoError(t, err)
224+
require.NoError(t, f.Close())
225+
require.NoError(t, afero.WriteFile(fsys, filepath.Join(utils.FunctionsDir, slug, "index.ts"), []byte{}, 0644))
226+
// Setup valid access token
227+
token := apitest.RandomAccessToken(t)
228+
t.Setenv("SUPABASE_ACCESS_TOKEN", string(token))
229+
// Setup mock api
230+
defer gock.OffAll()
231+
gock.New(dockerHost).
232+
Head("/_ping").
233+
Reply(http.StatusServiceUnavailable)
234+
// Run test
235+
err = Run(context.Background(), []string{slug}, true, nil, "", 1, false, fsys)
236+
// Check error
237+
assert.ErrorContains(t, err, "--use-docker was specified but Docker is not running")
238+
})
239+
212240
t.Run("verify_jwt param falls back to config", func(t *testing.T) {
213241
t.Cleanup(func() { clear(utils.Config.Functions) })
214242
// Setup in-memory fs

0 commit comments

Comments
 (0)