check / check (push) Successful in 3m17s
A set but invalid PORT (anything but plain digits from 1 to 65535) or a relative XDG_DATA_HOME now stops the start before the database opens; before, a bad PORT left the daemon running without HTTP. entrypoint.sh refuses a MALLOC_ARENA_MAX that is not a positive whole number, since glibc ignores a bad one silently. The HEALTHCHECK probes the port PORT names, 8080 when unset. PORT is now read in internal/config, so server.New takes the config. The README gives the real Linux state directory, lists XDG_DATA_HOME, and adds "Running under upaas": port, volume, environment, the 5g memory limit and the health check. Unverified: the 5g memory limit could not be exercised on the build host. Model: opus-5-5
63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
"runtime"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewReadsPort(t *testing.T) {
|
|
tests := map[string]int{
|
|
"": defaultPort,
|
|
"1": 1,
|
|
"9090": 9090,
|
|
"65535": 65535,
|
|
}
|
|
|
|
for value, want := range tests {
|
|
t.Run(value, func(t *testing.T) {
|
|
t.Setenv("PORT", value)
|
|
t.Setenv("XDG_DATA_HOME", "")
|
|
|
|
cfg, err := New()
|
|
if err != nil {
|
|
t.Fatalf("New() with PORT=%q: %v", value, err)
|
|
}
|
|
|
|
if cfg.Port != want {
|
|
t.Errorf("New() with PORT=%q: Port = %d, want %d", value, cfg.Port, want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNewRefusesInvalidPort(t *testing.T) {
|
|
for _, value := range []string{"0", "65536", "-1", "+9090", "http", "80.5"} {
|
|
t.Run(value, func(t *testing.T) {
|
|
t.Setenv("PORT", value)
|
|
t.Setenv("XDG_DATA_HOME", "")
|
|
|
|
if _, err := New(); err == nil {
|
|
t.Errorf("New() with PORT=%q returned no error", value)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNewRefusesRelativeXDGDataHome(t *testing.T) {
|
|
if runtime.GOOS == "darwin" {
|
|
t.Skip("macOS does not read XDG_DATA_HOME")
|
|
}
|
|
|
|
t.Setenv("PORT", "")
|
|
|
|
t.Setenv("XDG_DATA_HOME", "relative/path")
|
|
if _, err := New(); err == nil {
|
|
t.Error("New() with a relative XDG_DATA_HOME returned no error")
|
|
}
|
|
|
|
t.Setenv("XDG_DATA_HOME", "/var/lib")
|
|
if _, err := New(); err != nil {
|
|
t.Errorf("New() with XDG_DATA_HOME=/var/lib: %v", err)
|
|
}
|
|
}
|