Files
Das-OS/srcpkgs/das-tools/files/src/internal/xbps/xbps_test.go
T
dasandClaude Opus 5.5 d1d76c2bef Stage 5: das-update and das-welcome (0.3.0)
das-tools (Go, GTK 3 via gotk3):
- das-update: update window, tray icon when updates are available,
  --cli mode; xbps-install -Su between a snapper pre/post snapshot pair,
  privileged part through pkexec, rollback and reboot hints
- das-welcome: first-login window with install (live), language,
  home folder renaming, updates, settings and help

das-settings 0.3.0: create home folders with translated names.
xdg-user-dirs 0.20 only looks for translations in the first
XDG_DATA_DIRS entry with a locale directory (/usr/local/share/locale).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 18:24:39 +03:00

84 lines
2.7 KiB
Go

package xbps
import (
"reflect"
"testing"
)
func TestParseDryRun(t *testing.T) {
out := `[*] Updating repository ` + "`https://repo-default.voidlinux.org/current/x86_64-repodata'" + ` ...
firefox-144.0_1 update x86_64 https://repo-default.voidlinux.org/current 245MB 70MB
libfoo-2.1_3 install x86_64 https://repo-default.voidlinux.org/current 1024KB 300KB
linux6.12-6.12.50_1 update x86_64 https://repo-default.voidlinux.org/current
gtk+3-3.24.50_1 update x86_64 https://repo-default.voidlinux.org/current
oldpkg-1.0_1 remove x86_64 https://repo-default.voidlinux.org/current
bash-5.3_2 configure x86_64 https://repo-default.voidlinux.org/current
`
got := ParseDryRun(out)
want := []Update{
{Name: "firefox", NewVersion: "144.0_1", Action: "update"},
{Name: "gtk+3", NewVersion: "3.24.50_1", Action: "update"},
{Name: "libfoo", NewVersion: "2.1_3", Action: "install"},
{Name: "linux6.12", NewVersion: "6.12.50_1", Action: "update"},
{Name: "oldpkg", NewVersion: "1.0_1", Action: "remove"},
}
if !reflect.DeepEqual(got, want) {
t.Errorf("ParseDryRun:\n got %+v\nwant %+v", got, want)
}
if got := ParseDryRun(""); len(got) != 0 {
t.Errorf("ParseDryRun(empty) = %+v, want none", got)
}
}
func TestParseInstalled(t *testing.T) {
out := "ii acl-2.4.0_1 Access Control List filesystem support\n" +
"ii base-container-0.3_3 Void Linux base system meta\n" +
"\n"
want := map[string]string{"acl": "2.4.0_1", "base-container": "0.3_3"}
if got := ParseInstalled(out); !reflect.DeepEqual(got, want) {
t.Errorf("ParseInstalled = %v, want %v", got, want)
}
}
func TestSplitPkgver(t *testing.T) {
tests := []struct {
in, name, version string
ok bool
}{
{"xbps-0.60.5_1", "xbps", "0.60.5_1", true},
{"font-jetbrains-mono-2.304_1", "font-jetbrains-mono", "2.304_1", true},
{"[*]", "", "", false},
{"Updating", "", "", false},
{"name-", "", "", false},
{"no-revision-1.0", "", "", false},
}
for _, tt := range tests {
name, version, ok := SplitPkgver(tt.in)
if name != tt.name || version != tt.version || ok != tt.ok {
t.Errorf("SplitPkgver(%q) = %q, %q, %v; want %q, %q, %v", tt.in, name, version, ok, tt.name, tt.version, tt.ok)
}
}
}
func TestNeedsReboot(t *testing.T) {
tests := []struct {
names []string
want bool
}{
{[]string{"firefox", "mousepad"}, false},
{[]string{"linux6.12"}, true},
{[]string{"linux"}, true},
{[]string{"glibc"}, true},
{[]string{"linux-headers", "linux-firmware-network"}, false},
}
for _, tt := range tests {
var updates []Update
for _, n := range tt.names {
updates = append(updates, Update{Name: n})
}
if got := NeedsReboot(updates); got != tt.want {
t.Errorf("NeedsReboot(%v) = %v, want %v", tt.names, got, tt.want)
}
}
}