From 8b43b8e795db07e6944e34f90a8c2e093feade50 Mon Sep 17 00:00:00 2001 From: Qi Xiao Date: Tue, 31 Dec 2024 14:41:07 +0000 Subject: [PATCH] e2e: Test all entrypoints. This fixes #1658. --- e2e/e2e_test.go | 26 +++++++++++++++++---- e2e/{shell_test.elvts => script_test.elvts} | 0 2 files changed, 21 insertions(+), 5 deletions(-) rename e2e/{shell_test.elvts => script_test.elvts} (100%) diff --git a/e2e/e2e_test.go b/e2e/e2e_test.go index 762e87722..0289595b1 100644 --- a/e2e/e2e_test.go +++ b/e2e/e2e_test.go @@ -15,18 +15,34 @@ import ( var transcripts embed.FS const buildScript = ` -# Using "-o $workdir/" instead of "-o $workdir/elvish" gets us the correct file -# extension on Windows -go build (if (not-eq $E:GOCOVERDIR '') { put -cover }) -o $workdir/ src.elv.sh/cmd/elvish +# This script relies on the fact that go tests are always run in the package's +# directory; it should be run before changing directory. +# +# Note: Using "-o $workdir/" instead of "-o $workdir/elvish" here gets us the +# correct file extension on Windows +go build (if (not-eq $E:GOCOVERDIR '') { put -cover }) -o $workdir/ src.elv.sh/$entrypoint ` -func TestTranscripts(t *testing.T) { +func TestTranscripts_Default(t *testing.T) { + testTranscripts(t, "cmd/elvish") +} + +func TestTranscripts_NoDaemon(t *testing.T) { + testTranscripts(t, "cmd/nodaemon/elvish") +} + +func TestTranscripts_WithPprof(t *testing.T) { + testTranscripts(t, "cmd/withpprof/elvish") +} + +func testTranscripts(t *testing.T, entrypoint string) { workdir := t.TempDir() err := eval.NewEvaler().Eval( parse.Source{Name: "[build]", Code: buildScript}, eval.EvalCfg{ Global: eval.BuildNs().AddVars(map[string]vars.Var{ - "workdir": vars.NewReadOnly(workdir), + "entrypoint": vars.NewReadOnly(entrypoint), + "workdir": vars.NewReadOnly(workdir), }).Ns()}) if err != nil { t.Fatal(err) diff --git a/e2e/shell_test.elvts b/e2e/script_test.elvts similarity index 100% rename from e2e/shell_test.elvts rename to e2e/script_test.elvts