From af9cc7b333964da6417abce88a3f3ad1d61c2dc2 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Thu, 21 May 2026 19:18:14 -0400 Subject: [PATCH] Fix Arch package test failures --- distro-packages/Arch-Linux/skald-git/PKGBUILD | 6 ++++- webserver/api_test.go | 24 ++++++++++++----- webserver/webserver.go | 26 +++++++++++-------- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/distro-packages/Arch-Linux/skald-git/PKGBUILD b/distro-packages/Arch-Linux/skald-git/PKGBUILD index 3dcd624..8a3a8ac 100644 --- a/distro-packages/Arch-Linux/skald-git/PKGBUILD +++ b/distro-packages/Arch-Linux/skald-git/PKGBUILD @@ -27,8 +27,12 @@ sha256sums=( pkgver() { cd skald || return - git describe --long --tags 2>/dev/null | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' || + local describe + if describe="$(git describe --long --tags 2>/dev/null)"; then + printf '%s\n' "$describe" | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' + else printf '0.0.0.r%s.g%s' "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + fi } build() { diff --git a/webserver/api_test.go b/webserver/api_test.go index bcf0fab..c1b1f5a 100644 --- a/webserver/api_test.go +++ b/webserver/api_test.go @@ -11,6 +11,7 @@ import ( "time" "encoding/json" + "net" "net/http" "path/filepath" "testing" @@ -20,19 +21,30 @@ import ( ) var setupOnce sync.Once +var setupErr error +var testServerURL string -func setup() { +func setup() error { setupOnce.Do(func() { Insecure = true - err := Serve("localhost:1234", "") + listener, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { - panic("could not start server") + setupErr = fmt.Errorf("listen test server: %w", err) + return + } + testServerURL = "http://" + listener.Addr().String() + setupErr = serve(listener, listener.Addr().String(), "") + if setupErr != nil { + listener.Close() } }) + return setupErr } func setupTest(dir, datadir string) error { - setup() + if err := setup(); err != nil { + return err + } hall.Directory = dir hall.DataDirectory = datadir @@ -77,7 +89,7 @@ func TestApi(t *testing.T) { do := func(method, path, ctype, im, inm, body string) (*http.Response, error) { req, err := http.NewRequest(method, - "http://localhost:1234"+path, + testServerURL+path, strings.NewReader(body), ) if err != nil { @@ -430,7 +442,7 @@ func TestApiBadAuth(t *testing.T) { do := func(method, path string) { req, err := http.NewRequest(method, - "http://localhost:1234"+path, + testServerURL+path, nil) if err != nil { t.Errorf("New request: %v", err) diff --git a/webserver/webserver.go b/webserver/webserver.go index 3624359..68c752a 100644 --- a/webserver/webserver.go +++ b/webserver/webserver.go @@ -34,6 +34,19 @@ var StaticRoot string var Insecure bool func Serve(address string, dataDir string) error { + proto := "tcp" + if strings.HasPrefix(address, "/") { + proto = "unix" + } + + listener, err := net.Listen(proto, address) + if err != nil { + return err + } + return serve(listener, address, dataDir) +} + +func serve(listener net.Listener, address string, dataDir string) error { http.Handle("/", &fileHandler{http.Dir(StaticRoot)}) http.HandleFunc("/hall/", hallHandler) http.HandleFunc("/recordings", @@ -69,21 +82,12 @@ func Serve(address string, dataDir string) error { server = s - proto := "tcp" - if strings.HasPrefix(address, "/") { - proto = "unix" - } - - listener, err := net.Listen(proto, address) - if err != nil { - return err - } go func() { defer listener.Close() if !Insecure { - err = s.ServeTLS(listener, "", "") + _ = s.ServeTLS(listener, "", "") } else { - err = s.Serve(listener) + _ = s.Serve(listener) } }() return nil