package host import ( "errors" "os" "os/exec" "path/filepath" "strings" "testing" "github.com/carlosframework/platform/internal/release" "github.com/carlosframework/platform/internal/rootstate" ) func TestR2AdoptFoundationFailureExitsOne(t *testing.T) { if os.Getenv("PLAN14_FIX3_ADOPT_CHILD") == "1" { runAdoptWithEnsureSystemUnits([]string{"-stage-only", "-registry", os.Getenv("PLAN14_FIX3_REGISTRY")}, nil, func() {}, noCensusAdoptSource(func() (rootstate.Store, error) { return &rollbackMemory{files: map[string][]byte{}}, nil })) return } if os.Geteuid() == 0 { t.Skip("this fixture runs the local registry as an unprivileged user") } dir := t.TempDir() data := filepath.Join(dir, "data") if err := os.MkdirAll(filepath.Join(data, "channel-first-seen.json"), 0755); err != nil { t.Fatal(err) } _, pub, err := release.GenerateKey() if err != nil { t.Fatal(err) } cmd := exec.Command(os.Args[0], "-test.run=^TestR2AdoptFoundationFailureExitsOne$", "-test.v") cmd.Dir = dir cmd.Env = isolatedAdoptOrderEnv(t, "PLAN14_FIX3_ADOPT_CHILD=1", "PLAN14_FIX3_REGISTRY="+filepath.Join(data, "registry.db"), "CARLOS_DATA_DIR="+data, "CARLOS_OPT_DIR="+filepath.Join(dir, "opt"), "CARLOS_DEPLOYMENT_BUCKET=", "CARLOS_DEPLOYMENT_DIR="+filepath.Join(dir, "bucket"), "CARLOS_HOST_CLAIM=", "CARLOS_REGION_HA=", "CARLOS_MOVES_PHASE1=", "CARLOS_SECRETS_KEY=", "CARLOS_RELEASE_PUBKEY="+pub, ) out, err := cmd.CombinedOutput() var status *exec.ExitError if !errors.As(err, &status) || status.ExitCode() != 1 || !strings.Contains(string(out), "record bake clock:") { t.Fatalf("foundation failure lost exit status: %v\n%s", err, out) } }