diff --git a/d2cli/main.go b/d2cli/main.go index 400d81aa5..289f242db 100644 --- a/d2cli/main.go +++ b/d2cli/main.go @@ -371,21 +371,24 @@ func compile(ctx context.Context, ms *xmain.State, plugin d2plugin.Plugin, rende if err != nil { return nil, false, err } - out := boards[0] - if animateInterval > 0 { - out, err = d2animate.Wrap(diagram, boards, renderOpts, int(animateInterval)) - if err != nil { - return nil, false, err + var out []byte + if len(boards) > 0 { + out := boards[0] + if animateInterval > 0 { + out, err = d2animate.Wrap(diagram, boards, renderOpts, int(animateInterval)) + if err != nil { + return nil, false, err + } + err = os.MkdirAll(filepath.Dir(outputPath), 0755) + if err != nil { + return nil, false, err + } + err = ms.WritePath(outputPath, out) + if err != nil { + return nil, false, err + } + ms.Log.Success.Printf("successfully compiled %s to %s in %s", ms.HumanPath(inputPath), ms.HumanPath(outputPath), time.Since(start)) } - err = os.MkdirAll(filepath.Dir(outputPath), 0755) - if err != nil { - return nil, false, err - } - err = ms.WritePath(outputPath, out) - if err != nil { - return nil, false, err - } - ms.Log.Success.Printf("successfully compiled %s to %s in %s", ms.HumanPath(inputPath), ms.HumanPath(outputPath), time.Since(start)) } return out, true, nil } diff --git a/e2etests-cli/main_test.go b/e2etests-cli/main_test.go index dc75a4f22..dcc85c9e4 100644 --- a/e2etests-cli/main_test.go +++ b/e2etests-cli/main_test.go @@ -56,6 +56,16 @@ func TestCLI_E2E(t *testing.T) { assert.Testdata(t, ".svg", svg) }, }, + { + name: "empty-layer", + run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) { + writeFile(t, dir, "empty-layer.d2", `layers: { x: {} }`) + err := runTestMain(t, ctx, dir, env, "empty-layer.d2") + assert.Success(t, err) + + assert.TestdataDir(t, filepath.Join(dir, "empty-layer")) + }, + }, { name: "animation", run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) { diff --git a/e2etests-cli/testdata/TestCLI_E2E/empty-layer/x.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/empty-layer/x.exp.svg new file mode 100644 index 000000000..3d316df15 --- /dev/null +++ b/e2etests-cli/testdata/TestCLI_E2E/empty-layer/x.exp.svg @@ -0,0 +1,88 @@ + + + + diff --git a/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf b/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf index cded31a33..5e1c9fe86 100644 Binary files a/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf and b/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf differ