port smoke to go
This commit is contained in:
parent
b0a9d64f4a
commit
9ed44bfd75
20 changed files with 2118 additions and 1573 deletions
|
|
@ -588,7 +588,7 @@ func TestRunVMCreatePollsUntilDone(t *testing.T) {
|
|||
}
|
||||
|
||||
var stderr bytes.Buffer
|
||||
got, err := d.runVMCreate(context.Background(), "/tmp/bangerd.sock", &stderr, api.VMCreateParams{Name: "devbox"})
|
||||
got, err := d.runVMCreate(context.Background(), "/tmp/bangerd.sock", &stderr, api.VMCreateParams{Name: "devbox"}, false)
|
||||
if err != nil {
|
||||
t.Fatalf("d.runVMCreate: %v", err)
|
||||
}
|
||||
|
|
@ -643,7 +643,7 @@ func TestVMCreateProgressRendererSuppressesDuplicateLines(t *testing.T) {
|
|||
|
||||
func TestVMRunProgressRendererSuppressesDuplicateLines(t *testing.T) {
|
||||
var stderr bytes.Buffer
|
||||
renderer := newVMRunProgressRenderer(&stderr)
|
||||
renderer := newVMRunProgressRenderer(&stderr, true)
|
||||
|
||||
renderer.render("waiting for guest ssh")
|
||||
renderer.render("waiting for guest ssh")
|
||||
|
|
@ -661,6 +661,67 @@ func TestVMRunProgressRendererSuppressesDuplicateLines(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// TestVMRunProgressRendererInlineRewrites covers the TTY default: each
|
||||
// render call rewrites the same line via \r + clear-to-EOL instead of
|
||||
// emitting a newline, so the user sees one moving status line until
|
||||
// commitLine / clear / the caller's own newline closes it out.
|
||||
func TestVMRunProgressRendererInlineRewrites(t *testing.T) {
|
||||
var stderr bytes.Buffer
|
||||
renderer := &vmRunProgressRenderer{out: &stderr, enabled: true, inline: true}
|
||||
|
||||
renderer.render("waiting for guest ssh")
|
||||
renderer.render("preparing guest workspace")
|
||||
renderer.commitLine("vm devbox running; reconnect with: banger vm ssh devbox")
|
||||
|
||||
got := stderr.String()
|
||||
wantPrefix := "\r\x1b[K[vm run] waiting for guest ssh" +
|
||||
"\r\x1b[K[vm run] preparing guest workspace" +
|
||||
"\r\x1b[K[vm run] vm devbox running; reconnect with: banger vm ssh devbox\n"
|
||||
if got != wantPrefix {
|
||||
t.Fatalf("inline output = %q, want %q", got, wantPrefix)
|
||||
}
|
||||
}
|
||||
|
||||
// TestVMRunProgressRendererClearWipesActiveLine guards the path used
|
||||
// before sshExec/runSSHSession: clear() must erase the live inline
|
||||
// line so the next writer (the ssh session, a warning, the user's
|
||||
// command output) starts from column 0 without a trailing status.
|
||||
func TestVMRunProgressRendererClearWipesActiveLine(t *testing.T) {
|
||||
var stderr bytes.Buffer
|
||||
renderer := &vmRunProgressRenderer{out: &stderr, enabled: true, inline: true}
|
||||
|
||||
renderer.render("attaching to guest")
|
||||
renderer.clear()
|
||||
// clear() on an already-cleared renderer is a no-op (active=false).
|
||||
renderer.clear()
|
||||
|
||||
got := stderr.String()
|
||||
want := "\r\x1b[K[vm run] attaching to guest\r\x1b[K"
|
||||
if got != want {
|
||||
t.Fatalf("after clear stderr = %q, want %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
// TestVMCreateProgressRendererInlineRewrites mirrors the vm_run inline
|
||||
// test for the create-side renderer so both progress paths stay in
|
||||
// sync if either is touched in isolation.
|
||||
func TestVMCreateProgressRendererInlineRewrites(t *testing.T) {
|
||||
var stderr bytes.Buffer
|
||||
renderer := &vmCreateProgressRenderer{out: &stderr, enabled: true, inline: true}
|
||||
|
||||
renderer.render(api.VMCreateOperation{Stage: "prepare_work_disk", Detail: "cloning work seed"})
|
||||
renderer.render(api.VMCreateOperation{Stage: "wait_vsock_agent", Detail: "waiting for guest vsock agent"})
|
||||
renderer.clear()
|
||||
|
||||
got := stderr.String()
|
||||
want := "\r\x1b[K[vm create] preparing work disk: cloning work seed" +
|
||||
"\r\x1b[K[vm create] waiting for vsock agent: waiting for guest vsock agent" +
|
||||
"\r\x1b[K"
|
||||
if got != want {
|
||||
t.Fatalf("inline output = %q, want %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWithHeartbeatNoOpForNonTTY(t *testing.T) {
|
||||
var buf bytes.Buffer
|
||||
called := false
|
||||
|
|
@ -1326,6 +1387,7 @@ func TestRunVMRunWorkspacePreparesAndAttaches(t *testing.T) {
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("d.runVMRun: %v", err)
|
||||
|
|
@ -1404,6 +1466,7 @@ func TestVMRunPrintsPostCreateProgress(t *testing.T) {
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("d.runVMRun: %v", err)
|
||||
|
|
@ -1481,6 +1544,7 @@ func TestRunVMRunWarnsWhenToolingHarnessStartFails(t *testing.T) {
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("d.runVMRun: %v", err)
|
||||
|
|
@ -1534,6 +1598,7 @@ func TestRunVMRunBareModeSkipsWorkspaceAndTooling(t *testing.T) {
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("d.runVMRun: %v", err)
|
||||
|
|
@ -1580,6 +1645,7 @@ func TestRunVMRunRMDeletesAfterSessionExits(t *testing.T) {
|
|||
true, // --rm,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("d.runVMRun: %v", err)
|
||||
|
|
@ -1632,6 +1698,7 @@ func TestRunVMRunRMSkipsDeleteOnSSHWaitTimeout(t *testing.T) {
|
|||
true, // --rm,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
)
|
||||
if err == nil {
|
||||
t.Fatal("want timeout error")
|
||||
|
|
@ -1676,6 +1743,7 @@ func TestRunVMRunSSHTimeoutReturnsActionableError(t *testing.T) {
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
)
|
||||
if err == nil {
|
||||
t.Fatal("want timeout error")
|
||||
|
|
@ -1727,6 +1795,7 @@ func TestRunVMRunCommandModePropagatesExitCode(t *testing.T) {
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
)
|
||||
var exitErr ExitCodeError
|
||||
if !errors.As(err, &exitErr) || exitErr.Code != 7 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue