From f6c536e4360429e75d291fa89d960847424c74ea Mon Sep 17 00:00:00 2001 From: James Bardin Date: Thu, 15 Jun 2023 10:09:55 -0400 Subject: [PATCH] validate planned set sizes using refinements --- internal/plans/objchange/plan_valid.go | 10 +++------- internal/plans/objchange/plan_valid_test.go | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/internal/plans/objchange/plan_valid.go b/internal/plans/objchange/plan_valid.go index c20241267b..5e9ac2a832 100644 --- a/internal/plans/objchange/plan_valid.go +++ b/internal/plans/objchange/plan_valid.go @@ -447,14 +447,10 @@ func assertPlannedObjectValid(schema *configschema.Object, prior, config, planne } case configschema.NestingSet: - if !planned.IsKnown() || !config.IsKnown() { - // if either is unknown we cannot check the lengths - return errs - } + plannedL := planned.Length() + configL := config.Length() - plannedL := planned.LengthInt() - configL := config.LengthInt() - if plannedL != configL { + if ok := plannedL.Range().Includes(configL); ok.IsKnown() && ok.False() { errs = append(errs, path.NewErrorf("count in plan (%#v) disagrees with count in config (%#v)", plannedL, configL)) return errs } diff --git a/internal/plans/objchange/plan_valid_test.go b/internal/plans/objchange/plan_valid_test.go index 56fb4cfa81..2b1a502f63 100644 --- a/internal/plans/objchange/plan_valid_test.go +++ b/internal/plans/objchange/plan_valid_test.go @@ -1700,7 +1700,7 @@ func TestAssertPlanValid(t *testing.T) { &configschema.Block{ Attributes: map[string]*configschema.Attribute{ "set": { - //Computed: true, + Computed: true, Optional: true, NestedType: &configschema.Object{ Nesting: configschema.NestingSet,