From eae8fdeb29cf62eff37f4be47c25f484eeba191e Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Thu, 2 Mar 2023 20:02:36 -0800 Subject: [PATCH] e2etests-cli: Add pad test and cleanup --- e2etests-cli/main_test.go | 28 +++++++++++++++--- .../testdata/TestCLI_E2E/hello_world.exp.png | Bin 3041 -> 0 bytes .../TestCLI_E2E/hello_world_png.exp.png | Bin 0 -> 15325 bytes .../TestCLI_E2E/hello_world_png_pad.exp.png | Bin 0 -> 15325 bytes go.sum | 2 -- 5 files changed, 24 insertions(+), 6 deletions(-) delete mode 100644 e2etests-cli/testdata/TestCLI_E2E/hello_world.exp.png create mode 100644 e2etests-cli/testdata/TestCLI_E2E/hello_world_png.exp.png create mode 100644 e2etests-cli/testdata/TestCLI_E2E/hello_world_png_pad.exp.png diff --git a/e2etests-cli/main_test.go b/e2etests-cli/main_test.go index 1718566f8..e5b3e5852 100644 --- a/e2etests-cli/main_test.go +++ b/e2etests-cli/main_test.go @@ -20,12 +20,22 @@ func TestCLI_E2E(t *testing.T) { run func(t *testing.T, ctx context.Context, dir string, env *xos.Env) }{ { - name: "hello_world", + name: "hello_world_png", run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) { - assert.WriteFile(t, filepath.Join(dir, "hello-world.d2"), []byte(`x -> y`), 0644) - err := runTestMain(t, ctx, dir, env, "hello-world.d2", "hello-world.png") + writeFile(t, dir, "hello-world.d2", `x -> y`) + err := runTestMain(t, ctx, dir, env, "hello-world.d2", "hello-world.png") assert.Success(t, err) - png := assert.ReadFile(t, filepath.Join(dir, "hello-world.png")) + png := readFile(t, dir, "hello-world.png") + assert.Testdata(t, ".png", png) + }, + }, + { + name: "hello_world_png_pad", + run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) { + writeFile(t, dir, "hello-world.d2", `x -> y`) + err := runTestMain(t, ctx, dir, env, "-pad 4000", "hello-world.d2", "hello-world.png") + assert.Success(t, err) + png := readFile(t, dir, "hello-world.png") assert.Testdata(t, ".png", png) }, }, @@ -67,3 +77,13 @@ func runTestMain(tb testing.TB, ctx context.Context, dir string, env *xos.Env, a defer tms.Cleanup(tb) return tms.Wait(ctx) } + +func writeFile(tb testing.TB, dir, fp, data string) { + tb.Helper() + assert.WriteFile(tb, filepath.Join(dir, fp), []byte(data), 0644) +} + +func readFile(tb testing.TB, dir, fp string) []byte { + tb.Helper() + return assert.ReadFile(tb, filepath.Join(dir, fp)) +} diff --git a/e2etests-cli/testdata/TestCLI_E2E/hello_world.exp.png b/e2etests-cli/testdata/TestCLI_E2E/hello_world.exp.png deleted file mode 100644 index 45c9386f922beeae80d8a9e9b8e54f2c0e36607e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3041 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