From c8dc0f94a249c8ba1d3d4f416636f508948471ed Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Fri, 7 Apr 2023 10:50:13 -0700 Subject: [PATCH] fix empty layer --- d2cli/main.go | 31 +++--- e2etests-cli/main_test.go | 10 ++ .../TestCLI_E2E/empty-layer/x.exp.svg | 88 ++++++++++++++++++ .../TestCLI_E2E/internal_linked_pdf.exp.pdf | Bin 79882 -> 79882 bytes 4 files changed, 115 insertions(+), 14 deletions(-) create mode 100644 e2etests-cli/testdata/TestCLI_E2E/empty-layer/x.exp.svg 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 cded31a33be6954d5f6020fae29489aa9018005d..5e1c9fe86e93bef7f43918d5b7ee16fb0246afa5 100644 GIT binary patch delta 53 zcmeDBz|!@BrC|#rkEyb`p@E5|iJ>N!zHfetOJYf?f`*Hgk%5u1fr$ZBZo9rI<83AY Dsyq&a delta 53 zcmeDBz|!@BrC|#rkEyb$p}C=vp@AlszHfetOJYf?f`*Hgk%5u1fr$ZBZo9rI<83AY DsICrj