package forgekey import ( "context" "os" "strings" "testing" sdk "git.novox.be/novox/mesh-sdk/go/forgekey" ) func TestSaidKeepsTheCauseBehindABarePrefix(t *testing.T) { forge := "error: \nerror: User: 22:nox-builder is not authorized to read novox/x.\nerror: \nfatal: Could not read from remote repository.\n\nPlease make sure you have the correct access rights\n" for _, c := range []struct{ name, in, want string }{ {"forge refusal", forge, "error: User: 22:nox-builder is not authorized to read novox/x.; fatal: Could not read from remote repository.; Please make sure you have the correct access rights"}, {"one line", "fatal: couldn't find remote ref x\n", "fatal: couldn't find remote ref x"}, {"bare prefixes only", "error:\nremote:\n", ""}, {"a colon inside stays", " ENOENT \nfatal: bad: thing\n", "ENOENT; fatal: bad: thing"}, {"empty", "", ""}, } { if got := Said(c.in); got != c.want { t.Errorf("%s: Said = %q, want %q", c.name, got, c.want) } } long := Said(strings.Repeat("é", SaidBound)) if !strings.HasSuffix(long, " …") || len(long) > SaidBound+len(" …") || !strings.HasPrefix(long, "é") { t.Errorf("long: %d bytes, ends %q", len(long), long[len(long)-6:]) } } // ExecRunnerClean gives the command only the env argument, and starts it in the HOME it is given, even when this // process's directory was deleted under it (issue 1497, issue 734). func TestExecRunnerCleanGivesTheCommandOnlyTheEnvArgument(t *testing.T) { t.Setenv("MESH_TEST_SECRET", "x") var run sdk.Runner = ExecRunnerClean(0) r := run(context.Background(), []string{"PATH=" + os.Getenv("PATH"), "HOME=/h"}, "env") if r.Status != 0 || !strings.Contains(r.Stdout, "HOME=/h") || strings.Contains(r.Stdout, "MESH_TEST_SECRET") { t.Errorf("ran = %+v", r) } home, gone := t.TempDir(), t.TempDir() t.Chdir(gone) if err := os.Remove(gone); err != nil { t.Fatal(err) } r = run(context.Background(), []string{"PATH=" + os.Getenv("PATH"), "HOME=" + home}, "pwd") if r.Status != 0 || strings.TrimSpace(r.Stdout) != home { t.Errorf("a clean command run from a deleted directory = %+v, want it started in its HOME %s", r, home) } }