package appexport import ( "testing" "gitea.dooplex.hu/admin/felhom-controller/internal/appbackup" ) // R-1187, found live on 9202 2026-10-26 night (grimmory): the import ran `compose` WITHOUT the two path variables the // controller adds at every install and start (USERDATA_PATH, IMPORT_PATH — stacks.policyEnv). Compose then printed // „The USERDATA_PATH variable is not set" on its combined output, the DB step read that WARNING as the container id, // waited 60 s for a container that does not exist, and left the app removed and not started. Both halves pinned here. // RED-PROOF: with the old helpers (the first output line; the env unchanged) both tests fail. func TestR1187_TheContainerIDIsNeverAComposeWarning(t *testing.T) { out := []byte("time=\"2026-10-26T20:18:06Z\" level=warning msg=\"The \\\"USERDATA_PATH\\\" variable is not set. Defaulting to a blank string.\"\n" + "1047c698c778ab12cd34ef56ab78cd90ef12ab34cd56ef78ab90cd12ef34ab56\n") if got := containerIDFrom(out); got != "1047c698c778ab12cd34ef56ab78cd90ef12ab34cd56ef78ab90cd12ef34ab56" { t.Fatalf("container id = %q", got) } if got := containerIDFrom([]byte("time=x level=warning msg=y\n")); got != "" { t.Fatalf("a warning alone must give no id, got %q", got) } } func TestR1187_TheImportEnvCarriesTheControllersPathVars(t *testing.T) { env := map[string]string{"HDD_PATH": "/mnt/felhom-drives/d", "USERDATA_PATH": "/mnt/felhom-drives/d/appdata/other", "X": "1"} got := withImportPathVars(env, "/mnt/felhom-drives/d", "/mnt/sys_drive/felhom-data/userdata/import") if got["USERDATA_PATH"] != appbackup.UserdataDir("/mnt/felhom-drives/d") { t.Fatalf("USERDATA_PATH = %q — must be the controller's own derivation, never the bundle's", got["USERDATA_PATH"]) } if got["IMPORT_PATH"] != "/mnt/sys_drive/felhom-data/userdata/import" || got["X"] != "1" || got["HDD_PATH"] != "/mnt/felhom-drives/d" { t.Fatalf("env = %v", got) } if env["USERDATA_PATH"] != "/mnt/felhom-drives/d/appdata/other" { t.Fatal("the caller's map was changed") } if g := withImportPathVars(map[string]string{"IMPORT_PATH": "/x"}, "", ""); g["USERDATA_PATH"] != "" || g["IMPORT_PATH"] != "" { t.Fatalf("no namespace / no import root must leave neither variable: %v", g) } }