@@ -185,6 +185,89 @@ func TestMergeBlock(t *testing.T) {
185185 assert .Empty (t , blocks [0 ].Labels ())
186186 })
187187
188+ t .Run ("MixedStaticDynamicSuppression" , func (t * testing.T ) {
189+ t .Parallel ()
190+ primary := parseBlock (t , `resource "a" "b" {
191+ option {
192+ name = "static"
193+ }
194+ dynamic "option" {
195+ for_each = var.list
196+ content {
197+ name = option.value
198+ }
199+ }
200+ }` )
201+ override := parseBlock (t , `resource "a" "b" {
202+ option {
203+ name = "replaced"
204+ }
205+ }` )
206+ mergeBlock (primary , override )
207+
208+ blocks := primary .Body ().Blocks ()
209+ require .Len (t , blocks , 1 )
210+ assert .Equal (t , "option" , blocks [0 ].Type ())
211+ assert .Empty (t , blocks [0 ].Labels ())
212+ })
213+
214+ t .Run ("MixedStaticDynamicSuppressionByDynamic" , func (t * testing.T ) {
215+ t .Parallel ()
216+ primary := parseBlock (t , `resource "a" "b" {
217+ option {
218+ name = "static"
219+ }
220+ dynamic "option" {
221+ for_each = var.list
222+ content {
223+ name = option.value
224+ }
225+ }
226+ }` )
227+ override := parseBlock (t , `resource "a" "b" {
228+ dynamic "option" {
229+ for_each = var.other
230+ content {
231+ name = option.value
232+ }
233+ }
234+ }` )
235+ mergeBlock (primary , override )
236+
237+ blocks := primary .Body ().Blocks ()
238+ require .Len (t , blocks , 1 )
239+ assert .Equal (t , "dynamic" , blocks [0 ].Type ())
240+ require .Len (t , blocks [0 ].Labels (), 1 )
241+ assert .Equal (t , "option" , blocks [0 ].Labels ()[0 ])
242+ })
243+
244+ t .Run ("StaticSuppressionByMixedOverride" , func (t * testing.T ) {
245+ t .Parallel ()
246+ primary := parseBlock (t , `resource "a" "b" {
247+ option {
248+ name = "old"
249+ }
250+ }` )
251+ override := parseBlock (t , `resource "a" "b" {
252+ option {
253+ name = "static"
254+ }
255+ dynamic "option" {
256+ for_each = var.list
257+ content {
258+ name = option.value
259+ }
260+ }
261+ }` )
262+ mergeBlock (primary , override )
263+
264+ blocks := primary .Body ().Blocks ()
265+ require .Len (t , blocks , 2 )
266+ assert .Equal (t , "option" , blocks [0 ].Type ())
267+ assert .Equal (t , "dynamic" , blocks [1 ].Type ())
268+ assert .Equal (t , "option" , blocks [1 ].Labels ()[0 ])
269+ })
270+
188271 t .Run ("NoNestedBlocksInOverride" , func (t * testing.T ) {
189272 t .Parallel ()
190273 primary := parseBlock (t , `resource "a" "b" {
0 commit comments