From 5edc1b95e8367c51ffa9cdeeccf005f8770a7307 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sun, 22 May 2022 22:18:00 -0400 Subject: [PATCH 1/2] Run docs tests against current work tree by creating a temporary go workspace to be used by gfmrun via `TMPDIR`. --- docs/v2/manual.md | 2 +- internal/build/build.go | 39 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/docs/v2/manual.md b/docs/v2/manual.md index fd5656a569..9ea6d53a9f 100644 --- a/docs/v2/manual.md +++ b/docs/v2/manual.md @@ -363,7 +363,7 @@ For example this: ``` go package main diff --git a/internal/build/build.go b/internal/build/build.go index 26967605b5..ab4547e993 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -179,8 +179,37 @@ func testCleanup(packages []string) error { return os.WriteFile("coverage.txt", out.Bytes(), 0644) } -func GfmrunActionFunc(c *cli.Context) error { - filename := c.Args().Get(0) +func GfmrunActionFunc(cCtx *cli.Context) error { + top := cCtx.Path("top") + + tmpDir, err := os.MkdirTemp("", "urfave-cli*") + if err != nil { + return err + } + + wd, err := os.Getwd() + if err != nil { + return err + } + + if err := os.Chdir(tmpDir); err != nil { + return err + } + + fmt.Fprintf(cCtx.App.ErrWriter, "# ---> workspace/TMPDIR is %q\n", tmpDir) + + if err := runCmd("go", "work", "init", top); err != nil { + return err + } + + os.Setenv("TMPDIR", tmpDir) + os.Setenv("SHELL", "bash") + + if err := os.Chdir(wd); err != nil { + return err + } + + filename := cCtx.Args().Get(0) if filename == "" { filename = "README.md" } @@ -209,7 +238,11 @@ func GfmrunActionFunc(c *cli.Context) error { return err } - return runCmd("gfmrun", "-c", fmt.Sprint(counter), "-s", filename) + if err := runCmd("gfmrun", "-c", fmt.Sprint(counter), "-s", filename); err != nil { + return err + } + + return os.RemoveAll(tmpDir) } // checkBinarySizeActionFunc checks the size of an example binary to ensure that we are keeping size down From 8f47e6dc97e4e04e99fbfaf1c6ea0d16ad8515d3 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Mon, 23 May 2022 07:44:58 -0400 Subject: [PATCH 2/2] Set absolute `bash` path and slightly revert assertion in docs test to ensure flag ordering --- docs/v2/manual.md | 2 +- internal/build/build.go | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/v2/manual.md b/docs/v2/manual.md index 9ea6d53a9f..7208ae697f 100644 --- a/docs/v2/manual.md +++ b/docs/v2/manual.md @@ -363,7 +363,7 @@ For example this: ``` go package main diff --git a/internal/build/build.go b/internal/build/build.go index ab4547e993..d94dae7925 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -182,6 +182,13 @@ func testCleanup(packages []string) error { func GfmrunActionFunc(cCtx *cli.Context) error { top := cCtx.Path("top") + bash, err := exec.LookPath("bash") + if err != nil { + return err + } + + os.Setenv("SHELL", bash) + tmpDir, err := os.MkdirTemp("", "urfave-cli*") if err != nil { return err @@ -203,7 +210,6 @@ func GfmrunActionFunc(cCtx *cli.Context) error { } os.Setenv("TMPDIR", tmpDir) - os.Setenv("SHELL", "bash") if err := os.Chdir(wd); err != nil { return err