diff --git a/d2lib/d2.go b/d2lib/d2.go
index 182dd0ae3..6ab141d95 100644
--- a/d2lib/d2.go
+++ b/d2lib/d2.go
@@ -35,15 +35,17 @@ func Compile(ctx context.Context, input string, opts *CompileOptions) (*d2target
return nil, nil, err
}
- err = g.SetDimensions(opts.MeasuredTexts, opts.Ruler)
- if err != nil {
- return nil, nil, err
- }
+ if len(g.Objects) > 0 {
+ err = g.SetDimensions(opts.MeasuredTexts, opts.Ruler)
+ if err != nil {
+ return nil, nil, err
+ }
- if layout, err := getLayout(opts); err != nil {
- return nil, nil, err
- } else if err := d2sequence.Layout(ctx, g, layout); err != nil {
- return nil, nil, err
+ if layout, err := getLayout(opts); err != nil {
+ return nil, nil, err
+ } else if err := d2sequence.Layout(ctx, g, layout); err != nil {
+ return nil, nil, err
+ }
}
diagram, err := d2exporter.Export(ctx, g, opts.ThemeID)
diff --git a/e2etests/e2e_test.go b/e2etests/e2e_test.go
index fa3e07ba8..b77a4cc59 100644
--- a/e2etests/e2e_test.go
+++ b/e2etests/e2e_test.go
@@ -38,6 +38,10 @@ func TestE2E(t *testing.T) {
func testSanity(t *testing.T) {
tcs := []testCase{
+ {
+ name: "empty",
+ script: ``,
+ },
{
name: "basic",
script: `a -> b
diff --git a/e2etests/testdata/sanity/empty/dagre/board.exp.json b/e2etests/testdata/sanity/empty/dagre/board.exp.json
new file mode 100644
index 000000000..8591adc9e
--- /dev/null
+++ b/e2etests/testdata/sanity/empty/dagre/board.exp.json
@@ -0,0 +1,5 @@
+{
+ "name": "",
+ "shapes": [],
+ "connections": []
+}
diff --git a/e2etests/testdata/sanity/empty/dagre/sketch.exp.svg b/e2etests/testdata/sanity/empty/dagre/sketch.exp.svg
new file mode 100644
index 000000000..5c521366b
--- /dev/null
+++ b/e2etests/testdata/sanity/empty/dagre/sketch.exp.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/sanity/empty/elk/board.exp.json b/e2etests/testdata/sanity/empty/elk/board.exp.json
new file mode 100644
index 000000000..8591adc9e
--- /dev/null
+++ b/e2etests/testdata/sanity/empty/elk/board.exp.json
@@ -0,0 +1,5 @@
+{
+ "name": "",
+ "shapes": [],
+ "connections": []
+}
diff --git a/e2etests/testdata/sanity/empty/elk/sketch.exp.svg b/e2etests/testdata/sanity/empty/elk/sketch.exp.svg
new file mode 100644
index 000000000..5c521366b
--- /dev/null
+++ b/e2etests/testdata/sanity/empty/elk/sketch.exp.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file