Archived
b opens a centered popup with a search line and the local and remote branches of the selection. Enter stages the branch tip as the pin of a submodule, restores it (and everything below) to it, and puts HEAD on the branch; a remote branch gets a local tracking branch unless one exists elsewhere. Works on the superproject too. Losses are asked like restore. The backdrop behind the popup is dimmed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
37 lines
996 B
Go
37 lines
996 B
Go
package tui
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/charmbracelet/lipgloss"
|
|
|
|
"github.com/charmbracelet/x/ansi"
|
|
)
|
|
|
|
func TestOverlayCentersThePopup(t *testing.T) {
|
|
bg := strings.Repeat(strings.Repeat(".", 10)+"\n", 4) + strings.Repeat(".", 10)
|
|
got := strings.Split(ansi.Strip(overlay(bg, "ab\ncd", 10, 5, lipgloss.NewStyle())), "\n")
|
|
want := []string{"..........", "....ab....", "....cd....", "..........", ".........."}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("got %d lines", len(got))
|
|
}
|
|
for i := range want {
|
|
if got[i] != want[i] {
|
|
t.Errorf("line %d = %q, want %q", i, got[i], want[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestOverlayDimsTheBackdrop(t *testing.T) {
|
|
bg := "\x1b[31mredredred\x1b[0m"
|
|
dim := lipgloss.NewStyle().Foreground(lipgloss.Color("8"))
|
|
got := overlay(bg, "X", 9, 1, dim)
|
|
if ansi.StringWidth(got) != 9 || ansi.Strip(got) != "redrXdred" {
|
|
t.Errorf("got %q", ansi.Strip(got))
|
|
}
|
|
if strings.Contains(got, "\x1b[31m") {
|
|
t.Errorf("the backdrop keeps its colors: %q", got)
|
|
}
|
|
}
|