From 78b6139c1212e0e1ed525152abfacae70b40f22f Mon Sep 17 00:00:00 2001 From: Gavin Nishizawa Date: Thu, 7 Dec 2023 13:21:38 -0800 Subject: [PATCH 1/4] add target-nested-index cli e2e test --- e2etests-cli/main_test.go | 50 ++++++++++ .../TestCLI_E2E/target-nested-index.exp.svg | 95 +++++++++++++++++++ .../TestCLI_E2E/target-nested-index2.exp.svg | 95 +++++++++++++++++++ 3 files changed, 240 insertions(+) create mode 100644 e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg create mode 100644 e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg diff --git a/e2etests-cli/main_test.go b/e2etests-cli/main_test.go index d58e81dd7..ba496253a 100644 --- a/e2etests-cli/main_test.go +++ b/e2etests-cli/main_test.go @@ -299,6 +299,56 @@ scenarios: { assert.ErrorString(t, err, `failed to wait xmain test: e2etests-cli/d2: failed to compile target-invalid.d2: render target "b" not found`) }, }, + { + name: "target-nested-index", + run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) { + writeFile(t, dir, "target-nested-index.d2", `a +layers: { + l1: { + b + layers: { + index: { + c + layers: { + l3: { + d + } + } + } + } + } +}`) + err := runTestMain(t, ctx, dir, env, "--target", `l1.index.l3`, "target-nested-index.d2", "target-nested-index.svg") + assert.Success(t, err) + svg := readFile(t, dir, "target-nested-index.svg") + assert.Testdata(t, ".svg", svg) + }, + }, + { + name: "target-nested-index2", + run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) { + writeFile(t, dir, "target-nested-index2.d2", `a +layers: { + index: { + b + layers: { + nest1: { + c + scenarios: { + nest2: { + d + } + } + } + } + } +}`) + err := runTestMain(t, ctx, dir, env, "--target", `index.nest1.nest2`, "target-nested-index2.d2", "target-nested-index2.svg") + assert.Success(t, err) + svg := readFile(t, dir, "target-nested-index2.svg") + assert.Testdata(t, ".svg", svg) + }, + }, { name: "multiboard/life", run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) { diff --git a/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg new file mode 100644 index 000000000..1ab9a830e --- /dev/null +++ b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg @@ -0,0 +1,95 @@ +b + + + diff --git a/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg new file mode 100644 index 000000000..640d152bd --- /dev/null +++ b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg @@ -0,0 +1,95 @@ +a + + + From ba2aa2304c8e024305ef7fae1ad74f52ac9b15bc Mon Sep 17 00:00:00 2001 From: Gavin Nishizawa Date: Thu, 7 Dec 2023 13:30:22 -0800 Subject: [PATCH 2/4] fix GetBoard when path contains index --- d2target/d2target.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/d2target/d2target.go b/d2target/d2target.go index b369af4e7..c8af3fb7f 100644 --- a/d2target/d2target.go +++ b/d2target/d2target.go @@ -79,7 +79,7 @@ func (d *Diagram) GetBoard(boardPath []string) *Diagram { head := boardPath[0] - if head == "index" { + if len(boardPath) == 1 && d.Name == head { return d } From a860594abbfb9bbfc1fa85e9a724a710a4539a00 Mon Sep 17 00:00:00 2001 From: Gavin Nishizawa Date: Thu, 7 Dec 2023 13:45:30 -0800 Subject: [PATCH 3/4] update tests --- .../TestCLI_E2E/target-nested-index.exp.svg | 158 +++++++++--------- .../TestCLI_E2E/target-nested-index2.exp.svg | 157 ++++++++--------- 2 files changed, 158 insertions(+), 157 deletions(-) diff --git a/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg index 1ab9a830e..636e9a4fe 100644 --- a/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg +++ b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index.exp.svg @@ -1,10 +1,10 @@ -b - - + .d2-2306023678 .fill-N1{fill:#0A0F25;} + .d2-2306023678 .fill-N2{fill:#676C7E;} + .d2-2306023678 .fill-N3{fill:#9499AB;} + .d2-2306023678 .fill-N4{fill:#CFD2DD;} + .d2-2306023678 .fill-N5{fill:#DEE1EB;} + .d2-2306023678 .fill-N6{fill:#EEF1F8;} + .d2-2306023678 .fill-N7{fill:#FFFFFF;} + .d2-2306023678 .fill-B1{fill:#0D32B2;} + .d2-2306023678 .fill-B2{fill:#0D32B2;} + .d2-2306023678 .fill-B3{fill:#E3E9FD;} + .d2-2306023678 .fill-B4{fill:#E3E9FD;} + .d2-2306023678 .fill-B5{fill:#EDF0FD;} + .d2-2306023678 .fill-B6{fill:#F7F8FE;} + .d2-2306023678 .fill-AA2{fill:#4A6FF3;} + .d2-2306023678 .fill-AA4{fill:#EDF0FD;} + .d2-2306023678 .fill-AA5{fill:#F7F8FE;} + .d2-2306023678 .fill-AB4{fill:#EDF0FD;} + .d2-2306023678 .fill-AB5{fill:#F7F8FE;} + .d2-2306023678 .stroke-N1{stroke:#0A0F25;} + .d2-2306023678 .stroke-N2{stroke:#676C7E;} + .d2-2306023678 .stroke-N3{stroke:#9499AB;} + .d2-2306023678 .stroke-N4{stroke:#CFD2DD;} + .d2-2306023678 .stroke-N5{stroke:#DEE1EB;} + .d2-2306023678 .stroke-N6{stroke:#EEF1F8;} + .d2-2306023678 .stroke-N7{stroke:#FFFFFF;} + .d2-2306023678 .stroke-B1{stroke:#0D32B2;} + .d2-2306023678 .stroke-B2{stroke:#0D32B2;} + .d2-2306023678 .stroke-B3{stroke:#E3E9FD;} + .d2-2306023678 .stroke-B4{stroke:#E3E9FD;} + .d2-2306023678 .stroke-B5{stroke:#EDF0FD;} + .d2-2306023678 .stroke-B6{stroke:#F7F8FE;} + .d2-2306023678 .stroke-AA2{stroke:#4A6FF3;} + .d2-2306023678 .stroke-AA4{stroke:#EDF0FD;} + .d2-2306023678 .stroke-AA5{stroke:#F7F8FE;} + .d2-2306023678 .stroke-AB4{stroke:#EDF0FD;} + .d2-2306023678 .stroke-AB5{stroke:#F7F8FE;} + .d2-2306023678 .background-color-N1{background-color:#0A0F25;} + .d2-2306023678 .background-color-N2{background-color:#676C7E;} + .d2-2306023678 .background-color-N3{background-color:#9499AB;} + .d2-2306023678 .background-color-N4{background-color:#CFD2DD;} + .d2-2306023678 .background-color-N5{background-color:#DEE1EB;} + .d2-2306023678 .background-color-N6{background-color:#EEF1F8;} + .d2-2306023678 .background-color-N7{background-color:#FFFFFF;} + .d2-2306023678 .background-color-B1{background-color:#0D32B2;} + .d2-2306023678 .background-color-B2{background-color:#0D32B2;} + .d2-2306023678 .background-color-B3{background-color:#E3E9FD;} + .d2-2306023678 .background-color-B4{background-color:#E3E9FD;} + .d2-2306023678 .background-color-B5{background-color:#EDF0FD;} + .d2-2306023678 .background-color-B6{background-color:#F7F8FE;} + .d2-2306023678 .background-color-AA2{background-color:#4A6FF3;} + .d2-2306023678 .background-color-AA4{background-color:#EDF0FD;} + .d2-2306023678 .background-color-AA5{background-color:#F7F8FE;} + .d2-2306023678 .background-color-AB4{background-color:#EDF0FD;} + .d2-2306023678 .background-color-AB5{background-color:#F7F8FE;} + .d2-2306023678 .color-N1{color:#0A0F25;} + .d2-2306023678 .color-N2{color:#676C7E;} + .d2-2306023678 .color-N3{color:#9499AB;} + .d2-2306023678 .color-N4{color:#CFD2DD;} + .d2-2306023678 .color-N5{color:#DEE1EB;} + .d2-2306023678 .color-N6{color:#EEF1F8;} + .d2-2306023678 .color-N7{color:#FFFFFF;} + .d2-2306023678 .color-B1{color:#0D32B2;} + .d2-2306023678 .color-B2{color:#0D32B2;} + .d2-2306023678 .color-B3{color:#E3E9FD;} + .d2-2306023678 .color-B4{color:#E3E9FD;} + .d2-2306023678 .color-B5{color:#EDF0FD;} + .d2-2306023678 .color-B6{color:#F7F8FE;} + .d2-2306023678 .color-AA2{color:#4A6FF3;} + .d2-2306023678 .color-AA4{color:#EDF0FD;} + .d2-2306023678 .color-AA5{color:#F7F8FE;} + .d2-2306023678 .color-AB4{color:#EDF0FD;} + .d2-2306023678 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>d + + diff --git a/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg index 640d152bd..185df765b 100644 --- a/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg +++ b/e2etests-cli/testdata/TestCLI_E2E/target-nested-index2.exp.svg @@ -1,10 +1,10 @@ -a - + .d2-3684577162 .fill-N1{fill:#0A0F25;} + .d2-3684577162 .fill-N2{fill:#676C7E;} + .d2-3684577162 .fill-N3{fill:#9499AB;} + .d2-3684577162 .fill-N4{fill:#CFD2DD;} + .d2-3684577162 .fill-N5{fill:#DEE1EB;} + .d2-3684577162 .fill-N6{fill:#EEF1F8;} + .d2-3684577162 .fill-N7{fill:#FFFFFF;} + .d2-3684577162 .fill-B1{fill:#0D32B2;} + .d2-3684577162 .fill-B2{fill:#0D32B2;} + .d2-3684577162 .fill-B3{fill:#E3E9FD;} + .d2-3684577162 .fill-B4{fill:#E3E9FD;} + .d2-3684577162 .fill-B5{fill:#EDF0FD;} + .d2-3684577162 .fill-B6{fill:#F7F8FE;} + .d2-3684577162 .fill-AA2{fill:#4A6FF3;} + .d2-3684577162 .fill-AA4{fill:#EDF0FD;} + .d2-3684577162 .fill-AA5{fill:#F7F8FE;} + .d2-3684577162 .fill-AB4{fill:#EDF0FD;} + .d2-3684577162 .fill-AB5{fill:#F7F8FE;} + .d2-3684577162 .stroke-N1{stroke:#0A0F25;} + .d2-3684577162 .stroke-N2{stroke:#676C7E;} + .d2-3684577162 .stroke-N3{stroke:#9499AB;} + .d2-3684577162 .stroke-N4{stroke:#CFD2DD;} + .d2-3684577162 .stroke-N5{stroke:#DEE1EB;} + .d2-3684577162 .stroke-N6{stroke:#EEF1F8;} + .d2-3684577162 .stroke-N7{stroke:#FFFFFF;} + .d2-3684577162 .stroke-B1{stroke:#0D32B2;} + .d2-3684577162 .stroke-B2{stroke:#0D32B2;} + .d2-3684577162 .stroke-B3{stroke:#E3E9FD;} + .d2-3684577162 .stroke-B4{stroke:#E3E9FD;} + .d2-3684577162 .stroke-B5{stroke:#EDF0FD;} + .d2-3684577162 .stroke-B6{stroke:#F7F8FE;} + .d2-3684577162 .stroke-AA2{stroke:#4A6FF3;} + .d2-3684577162 .stroke-AA4{stroke:#EDF0FD;} + .d2-3684577162 .stroke-AA5{stroke:#F7F8FE;} + .d2-3684577162 .stroke-AB4{stroke:#EDF0FD;} + .d2-3684577162 .stroke-AB5{stroke:#F7F8FE;} + .d2-3684577162 .background-color-N1{background-color:#0A0F25;} + .d2-3684577162 .background-color-N2{background-color:#676C7E;} + .d2-3684577162 .background-color-N3{background-color:#9499AB;} + .d2-3684577162 .background-color-N4{background-color:#CFD2DD;} + .d2-3684577162 .background-color-N5{background-color:#DEE1EB;} + .d2-3684577162 .background-color-N6{background-color:#EEF1F8;} + .d2-3684577162 .background-color-N7{background-color:#FFFFFF;} + .d2-3684577162 .background-color-B1{background-color:#0D32B2;} + .d2-3684577162 .background-color-B2{background-color:#0D32B2;} + .d2-3684577162 .background-color-B3{background-color:#E3E9FD;} + .d2-3684577162 .background-color-B4{background-color:#E3E9FD;} + .d2-3684577162 .background-color-B5{background-color:#EDF0FD;} + .d2-3684577162 .background-color-B6{background-color:#F7F8FE;} + .d2-3684577162 .background-color-AA2{background-color:#4A6FF3;} + .d2-3684577162 .background-color-AA4{background-color:#EDF0FD;} + .d2-3684577162 .background-color-AA5{background-color:#F7F8FE;} + .d2-3684577162 .background-color-AB4{background-color:#EDF0FD;} + .d2-3684577162 .background-color-AB5{background-color:#F7F8FE;} + .d2-3684577162 .color-N1{color:#0A0F25;} + .d2-3684577162 .color-N2{color:#676C7E;} + .d2-3684577162 .color-N3{color:#9499AB;} + .d2-3684577162 .color-N4{color:#CFD2DD;} + .d2-3684577162 .color-N5{color:#DEE1EB;} + .d2-3684577162 .color-N6{color:#EEF1F8;} + .d2-3684577162 .color-N7{color:#FFFFFF;} + .d2-3684577162 .color-B1{color:#0D32B2;} + .d2-3684577162 .color-B2{color:#0D32B2;} + .d2-3684577162 .color-B3{color:#E3E9FD;} + .d2-3684577162 .color-B4{color:#E3E9FD;} + .d2-3684577162 .color-B5{color:#EDF0FD;} + .d2-3684577162 .color-B6{color:#F7F8FE;} + .d2-3684577162 .color-AA2{color:#4A6FF3;} + .d2-3684577162 .color-AA4{color:#EDF0FD;} + .d2-3684577162 .color-AA5{color:#F7F8FE;} + .d2-3684577162 .color-AB4{color:#EDF0FD;} + .d2-3684577162 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>cd + + From 23470caaee853e05067b3edda64b26305dddd75b Mon Sep 17 00:00:00 2001 From: Gavin Nishizawa Date: Thu, 7 Dec 2023 13:51:59 -0800 Subject: [PATCH 4/4] changelog --- ci/release/changelogs/next.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 16439d1e5..0541fb231 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -5,4 +5,5 @@ #### Bugfixes ⛑️ - Fix importing files that override an existing value with an array. [#1762](https://github.com/terrastruct/d2/pull/1762) -- Fixed missing unfilled triangle arrowheads when sketch flag is on. [#1763](https://github.com/terrastruct/d2/pull/1763) +- Fixes missing unfilled triangle arrowheads when sketch flag is on. [#1763](https://github.com/terrastruct/d2/pull/1763) +- Fixes a bug where the render target could be incorrect if the target path contains "index". [#1764](https://github.com/terrastruct/d2/pull/1764)