package hostwrite import ( "context" "errors" "testing" ) type rejectSelector struct{ calls *int } func (s rejectSelector) Select(context.Context, string, string) (Work, error) { *s.calls++ return nil, ErrUnavailable } func TestFlagAndDisabledParity(t *testing.T) { for _, tc := range []struct { value string want bool }{{"", false}, {" \n", false}, {"0", true}, {"1", true}} { calls := 0 got := Enabled(func(key string) string { calls++ if key != "CARLOS_HOST_CLAIM" { t.Fatal(key) } return tc.value }) if got != tc.want || calls != 1 { t.Fatal(tc, got, calls) } } calls, writes := 0, 0 work, err := (Config{Selector: rejectSelector{&calls}}).Select(context.Background(), "host", "config") if err != nil { t.Fatal(err) } sentinel := errors.New("legacy error") err = work.With(context.Background(), Identity{}, func() error { writes++; return sentinel }) if err != sentinel || calls != 0 || writes != 1 { t.Fatal(err, calls, writes) } } func TestEnabledMissingProviderRefuses(t *testing.T) { work, err := (Config{Enabled: true}).Select(context.Background(), "host", "config") if work != nil || !errors.Is(err, ErrUnavailable) { t.Fatal(work, err) } }