50 lines
2.1 KiB
Go
50 lines
2.1 KiB
Go
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)
|
|
}
|
|
}
|