Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package opentofu for openSUSE:Factory 
checked in at 2026-07-14 13:52:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opentofu (Old)
 and      /work/SRC/openSUSE:Factory/.opentofu.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "opentofu"

Tue Jul 14 13:52:10 2026 rev:52 rq:1365470 version:1.12.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/opentofu/opentofu.changes        2026-06-19 
17:19:31.670266732 +0200
+++ /work/SRC/openSUSE:Factory/.opentofu.new.1991/opentofu.changes      
2026-07-14 13:52:33.828417343 +0200
@@ -1,0 +2,14 @@
+Tue Jul 14 05:08:43 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.12.4:
+  * BUG FIXES:
+    - tofu plan -out no longer fails when the plan includes a
+      resource with lifecycle { destroy = false } that needs
+      replacement, which previously errored with invalid change
+      action ForgetThenCreate. (#4324)
+    - Moved block now correctly compares provider source addresses.
+      (#4280)[https://github.com//pull/4280]
+    - Correct Source Provider Address now passed into Provider
+      MoveResource requests. (#4355)[https://github.com//pull/4355]
+
+-------------------------------------------------------------------

Old:
----
  opentofu-1.12.3.obscpio

New:
----
  opentofu-1.12.4.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ opentofu.spec ++++++
--- /var/tmp/diff_new_pack.RixtSq/_old  2026-07-14 13:52:36.920524254 +0200
+++ /var/tmp/diff_new_pack.RixtSq/_new  2026-07-14 13:52:36.924524392 +0200
@@ -19,7 +19,7 @@
 %define executable_name tofu
 
 Name:           opentofu
-Version:        1.12.3
+Version:        1.12.4
 Release:        0
 Summary:        Declaratively manage your cloud infrastructure
 License:        MPL-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.RixtSq/_old  2026-07-14 13:52:36.996526882 +0200
+++ /var/tmp/diff_new_pack.RixtSq/_new  2026-07-14 13:52:37.004527158 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/opentofu/opentofu.git</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">refs/tags/v1.12.3</param>
+    <param name="revision">refs/tags/v1.12.4</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.RixtSq/_old  2026-07-14 13:52:37.036528265 +0200
+++ /var/tmp/diff_new_pack.RixtSq/_new  2026-07-14 13:52:37.040528403 +0200
@@ -3,6 +3,6 @@
                 <param name="url">https://github.com/opentofu/opentofu/</param>
               <param 
name="changesrevision">bdcbf091aab886499ed7718d7f558b428fffce39</param></service><service
 name="tar_scm">
                 <param 
name="url">https://github.com/opentofu/opentofu.git</param>
-              <param 
name="changesrevision">e33607a2e3b29bfc7cf9f4dcdc261e669e3a457b</param></service></servicedata>
+              <param 
name="changesrevision">d5291190380d16aa5ef4590facbe0719d7fa165f</param></service></servicedata>
 (No newline at EOF)
 

++++++ opentofu-1.12.3.obscpio -> opentofu-1.12.4.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opentofu-1.12.3/CHANGELOG.md 
new/opentofu-1.12.4/CHANGELOG.md
--- old/opentofu-1.12.3/CHANGELOG.md    2026-06-18 15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/CHANGELOG.md    2026-07-13 17:08:17.000000000 +0200
@@ -1,6 +1,14 @@
 The v1.12.x release series is supported until **February 1 2027**.
 
-## 1.12.4 (unreleased)
+## 1.12.5 (unreleased)
+
+## 1.12.4
+
+BUG FIXES:
+
+- `tofu plan -out` no longer fails when the plan includes a resource with 
`lifecycle { destroy = false }` that needs replacement, which previously 
errored with `invalid change action ForgetThenCreate`. 
([#4324](https://github.com/opentofu/opentofu/issues/4324))
+- Moved block now correctly compares provider source addresses. 
(#4280)[https://github.com/opentofu/opentofu/pull/4280]
+- Correct Source Provider Address now passed into Provider MoveResource 
requests. (#4355)[https://github.com/opentofu/opentofu/pull/4355]
 
 ## 1.12.3
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opentofu-1.12.3/internal/plans/planfile/tfplan.go 
new/opentofu-1.12.4/internal/plans/planfile/tfplan.go
--- old/opentofu-1.12.3/internal/plans/planfile/tfplan.go       2026-06-18 
15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/internal/plans/planfile/tfplan.go       2026-07-13 
17:08:17.000000000 +0200
@@ -433,6 +433,10 @@
                ret.Action = plans.DeleteThenCreate
                beforeIdx = 0
                afterIdx = 1
+       case planproto.Action_FORGET_THEN_CREATE:
+               ret.Action = plans.ForgetThenCreate
+               beforeIdx = 0
+               afterIdx = 1
        default:
                return nil, fmt.Errorf("invalid change action %s", 
rawChange.Action)
        }
@@ -897,6 +901,9 @@
        case plans.CreateThenDelete:
                ret.Action = planproto.Action_CREATE_THEN_DELETE
                ret.Values = []*planproto.DynamicValue{before, after}
+       case plans.ForgetThenCreate:
+               ret.Action = planproto.Action_FORGET_THEN_CREATE
+               ret.Values = []*planproto.DynamicValue{before, after}
        default:
                return nil, fmt.Errorf("invalid change action %s", 
change.Action)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentofu-1.12.3/internal/plans/planfile/tfplan_test.go 
new/opentofu-1.12.4/internal/plans/planfile/tfplan_test.go
--- old/opentofu-1.12.3/internal/plans/planfile/tfplan_test.go  2026-06-18 
15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/internal/plans/planfile/tfplan_test.go  2026-07-13 
17:08:17.000000000 +0200
@@ -156,6 +156,31 @@
                                        Addr: addrs.Resource{
                                                Mode: addrs.ManagedResourceMode,
                                                Type: "test_thing",
+                                               Name: "forget_then_create",
+                                       
}.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance),
+                                       PrevRunAddr: addrs.Resource{
+                                               Mode: addrs.ManagedResourceMode,
+                                               Type: "test_thing",
+                                               Name: "forget_then_create",
+                                       
}.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance),
+                                       ProviderAddr: addrs.AbsProviderConfig{
+                                               Provider: 
addrs.NewDefaultProvider("test"),
+                                               Module:   addrs.RootModule,
+                                       },
+                                       ChangeSrc: plans.ChangeSrc{
+                                               Action: plans.ForgetThenCreate,
+                                               Before: 
mustNewDynamicValue(cty.ObjectVal(map[string]cty.Value{
+                                                       "id": 
cty.StringVal("old-id"),
+                                               }), objTy),
+                                               After: 
mustNewDynamicValue(cty.ObjectVal(map[string]cty.Value{
+                                                       "id": 
cty.StringVal("new-id"),
+                                               }), objTy),
+                                       },
+                               },
+                               {
+                                       Addr: addrs.Resource{
+                                               Mode: addrs.ManagedResourceMode,
+                                               Type: "test_thing",
                                                Name: "importing",
                                        
}.Instance(addrs.IntKey(1)).Absolute(addrs.RootModuleInstance),
                                        PrevRunAddr: addrs.Resource{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opentofu-1.12.3/internal/tofu/context_plan.go 
new/opentofu-1.12.4/internal/tofu/context_plan.go
--- old/opentofu-1.12.3/internal/tofu/context_plan.go   2026-06-18 
15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/internal/tofu/context_plan.go   2026-07-13 
17:08:17.000000000 +0200
@@ -969,7 +969,11 @@
                                        prevRunAddr = move.From
                                }
 
-                               if isResourceMovedToDifferentType(addr, 
prevRunAddr) {
+                               // Note: provider addr is provided twice;
+                               // we cannot compare the currently configured 
provider
+                               // with the resource's provider from the 
previous state, so
+                               // we'll skip the provider check
+                               if isResourceMovedToDifferentType(addr, 
prevRunAddr, provider, provider) {
                                        // We don't report drift in case of 
resource type change
                                        continue
                                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opentofu-1.12.3/internal/tofu/context_plan2_test.go 
new/opentofu-1.12.4/internal/tofu/context_plan2_test.go
--- old/opentofu-1.12.3/internal/tofu/context_plan2_test.go     2026-06-18 
15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/internal/tofu/context_plan2_test.go     2026-07-13 
17:08:17.000000000 +0200
@@ -33,6 +33,8 @@
        "github.com/opentofu/opentofu/internal/providers"
        "github.com/opentofu/opentofu/internal/states"
        "github.com/opentofu/opentofu/internal/tfdiags"
+
+       regaddr "github.com/opentofu/registry-address/v2"
 )
 
 func TestContext2Plan_removedDuringRefresh(t *testing.T) {
@@ -1792,6 +1794,124 @@
                })
        }
 }
+func TestContext2Plan_movedResourceToDifferentProvider(t *testing.T) {
+       // This tests a rare scenario where providers might
+       // change during a move, as brought up here:
+       // https://github.com/opentofu/opentofu/issues/4271
+
+       type test struct {
+               name      string
+               schema    providers.Schema
+               resType   string
+               config    map[string]string
+               attrsJSON []byte
+       }
+
+       tests := []test{
+               {
+                       name: "providers have same local name, but different 
namespace",
+                       schema: 
constructProviderSchemaForTesting(map[string]*configschema.Attribute{
+                               "test_number": {
+                                       Type:     cty.Number,
+                                       Optional: true,
+                               },
+                       }),
+                       resType: "test_object",
+                       config: map[string]string{
+                               "main.tf": `
+                                       terraform {
+                                               required_providers {
+                                                       test = {
+                                                               source = 
"opentofu/test"
+                                                       }
+                                               }
+                                       }
+
+                                       resource "test_object" "new" {
+
+                                       }
+                                       moved {
+                                               from = test_object.old
+                                               to   = test_object.new
+                                       }
+                               `,
+                       },
+                       attrsJSON: []byte(`{}`),
+               },
+       }
+
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       oldAddr := mustResourceInstanceAddr(tt.resType + ".old")
+                       m := testModuleInline(t, tt.config)
+
+                       providerAddr1 := addrs.AbsProviderConfig{
+                               Provider: regaddr.Provider{
+                                       Type:      
addrs.MustParseProviderPart("test"),
+                                       Namespace: "hashicorp",
+                                       Hostname:  
addrs.DefaultProviderRegistryHost,
+                               },
+                               Module: addrs.RootModule,
+                       }
+
+                       providerAddr2 := addrs.AbsProviderConfig{
+                               Provider: regaddr.Provider{
+                                       Type:      
addrs.MustParseProviderPart("test"),
+                                       Namespace: "opentofu",
+                                       Hostname:  
addrs.DefaultProviderRegistryHost,
+                               },
+                               Module: addrs.RootModule,
+                       }
+
+                       state := states.BuildState(
+                               func(s *states.SyncState) {
+                                       
s.SetResourceProvider(oldAddr.ContainingResource(), providerAddr1)
+                                       s.SetResourceInstanceCurrent(oldAddr, 
&states.ResourceInstanceObjectSrc{
+                                               Status:    states.ObjectReady,
+                                               AttrsJSON: tt.attrsJSON,
+                                       }, providerAddr1, addrs.NoKey)
+                               })
+
+                       provider1 := &MockProvider{
+                               // Old provider, saved in state as the previous 
provider address
+                               GetProviderSchemaResponse: 
&providers.GetProviderSchemaResponse{
+                                       ResourceTypes: 
map[string]providers.Schema{
+                                               tt.resType: tt.schema,
+                                       },
+                               },
+                       }
+
+                       provider2 := &MockProvider{
+                               // New provider has identical schema; we 
register it with a new address, but same provider name
+                               GetProviderSchemaResponse: 
&providers.GetProviderSchemaResponse{
+                                       ResourceTypes: 
map[string]providers.Schema{
+                                               tt.resType: tt.schema,
+                                       },
+                               },
+                       }
+
+                       providerFactory := map[addrs.Provider]providers.Factory{
+                               providerAddr1.Provider: 
testProviderFuncFixed(provider1),
+                               providerAddr2.Provider: 
testProviderFuncFixed(provider2),
+                       }
+
+                       ctx := testContext2(t, &ContextOpts{
+                               Plugins: plugins.NewLibrary(providerFactory, 
nil),
+                       })
+
+                       _, diags := ctx.Plan(context.Background(), m, state, 
&PlanOpts{
+                               Mode: plans.NormalMode,
+                       })
+
+                       if !provider2.MoveResourceStateCalled {
+                               // We want the provider to move to the other 
state
+                               t.Fatal("expected a call to MoveResourceState, 
but none occurred")
+                       }
+
+                       assertNoErrors(t, diags)
+               })
+       }
+}
 
 func TestContext2Plan_movedResourceCollision(t *testing.T) {
        addrNoKey := mustResourceInstanceAddr("test_object.a")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentofu-1.12.3/internal/tofu/node_resource_abstract.go 
new/opentofu-1.12.4/internal/tofu/node_resource_abstract.go
--- old/opentofu-1.12.3/internal/tofu/node_resource_abstract.go 2026-06-18 
15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/internal/tofu/node_resource_abstract.go 2026-07-13 
17:08:17.000000000 +0200
@@ -602,8 +602,8 @@
        return diags
 }
 
-func isResourceMovedToDifferentType(newAddr, oldAddr 
addrs.AbsResourceInstance) bool {
-       return newAddr.Resource.Resource.Type != oldAddr.Resource.Resource.Type
+func isResourceMovedToDifferentType(newAddr, oldAddr 
addrs.AbsResourceInstance, providerAddr, oldProviderAddr addrs.Provider) bool {
+       return newAddr.Resource.Resource.Type != oldAddr.Resource.Resource.Type 
|| !providerAddr.Equals(oldProviderAddr)
 }
 
 // readResourceInstanceState reads the current object for a specific instance 
in
@@ -632,15 +632,18 @@
 
        // prevAddr will match the newAddr if the resource wasn't moved 
(prevRunAddr checks move results)
        prevAddr := n.prevRunAddr(evalCtx)
+       providerAddr, prevProviderAddr := n.getResourceProviderAddrs(evalCtx, 
addr)
        transformArgs := stateTransformArgs{
                currentAddr:          addr,
+               currentProviderAddr:  providerAddr,
                prevAddr:             prevAddr,
+               prevProviderAddr:     prevProviderAddr,
                provider:             provider,
                objectSrc:            src,
                currentSchema:        schema.Block,
                currentSchemaVersion: currentVersion,
        }
-       if isResourceMovedToDifferentType(addr, prevAddr) {
+       if isResourceMovedToDifferentType(addr, prevAddr, providerAddr, 
prevProviderAddr) {
                src, diags = moveResourceState(transformArgs)
        } else {
                src, diags = upgradeResourceState(transformArgs)
@@ -648,7 +651,7 @@
 
        // Upgrade identity if needed
        if src != nil && src.IdentityJSON != nil {
-               src, diags = upgradeResourceIdentity(ctx, addr, src, provider, 
providerSchema, diags)
+               src, diags = upgradeResourceIdentity(ctx, addr, src, provider, 
prevProviderAddr, providerSchema, diags)
        }
 
        if n.Config != nil {
@@ -666,6 +669,18 @@
        return obj, diags
 }
 
+func (n *NodeAbstractResourceInstance) getResourceProviderAddrs(evalCtx 
EvalContext, addr addrs.AbsResourceInstance) (addrs.Provider, addrs.Provider) {
+       // temporarily set prevProviderAddr to the current one,
+       // and use it if prevRunState is not set in this context
+       providerAddr := n.Provider()
+       prevProviderAddr := providerAddr
+       prevRunState := evalCtx.PrevRunState()
+       if prevRunState != nil {
+               prevProviderAddr = 
prevRunState.ResourceProvider(addr.AffectedAbsResource()).Provider
+       }
+       return providerAddr, prevProviderAddr
+}
+
 // readResourceInstanceStateDeposed reads the deposed object for a specific
 // instance in the state.
 func (n *NodeAbstractResourceInstance) readResourceInstanceStateDeposed(ctx 
context.Context, evalCtx EvalContext, addr addrs.AbsResourceInstance, key 
states.DeposedKey) (*states.ResourceInstanceObject, tfdiags.Diagnostics) {
@@ -696,15 +711,18 @@
        }
        // prevAddr will match the newAddr if the resource wasn't moved 
(prevRunAddr checks move results)
        prevAddr := n.prevRunAddr(evalCtx)
+       providerAddr, prevProviderAddr := n.getResourceProviderAddrs(evalCtx, 
addr)
        transformArgs := stateTransformArgs{
                currentAddr:          addr,
+               currentProviderAddr:  providerAddr,
                prevAddr:             prevAddr,
+               prevProviderAddr:     prevProviderAddr,
                provider:             provider,
                objectSrc:            src,
                currentSchema:        schema.Block,
                currentSchemaVersion: currentVersion,
        }
-       if isResourceMovedToDifferentType(addr, prevAddr) {
+       if isResourceMovedToDifferentType(addr, prevAddr, providerAddr, 
prevProviderAddr) {
                src, diags = moveResourceState(transformArgs)
        } else {
                src, diags = upgradeResourceState(transformArgs)
@@ -712,7 +730,7 @@
 
        // Upgrade identity if needed
        if src != nil && src.IdentityJSON != nil {
-               src, diags = upgradeResourceIdentity(ctx, addr, src, provider, 
providerSchema, diags)
+               src, diags = upgradeResourceIdentity(ctx, addr, src, provider, 
prevProviderAddr, providerSchema, diags)
        }
 
        if n.Config != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentofu-1.12.3/internal/tofu/upgrade_resource_state.go 
new/opentofu-1.12.4/internal/tofu/upgrade_resource_state.go
--- old/opentofu-1.12.3/internal/tofu/upgrade_resource_state.go 2026-06-18 
15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/internal/tofu/upgrade_resource_state.go 2026-07-13 
17:08:17.000000000 +0200
@@ -24,8 +24,14 @@
 type stateTransformArgs struct {
        // currentAddr is the current/latest address of the resource
        currentAddr addrs.AbsResourceInstance
+       // currentProviderAddr is the current/latest address of the resource's 
provider
+       currentProviderAddr addrs.Provider
+
        // prevAddr is the previous address of the resource
-       prevAddr  addrs.AbsResourceInstance
+       prevAddr addrs.AbsResourceInstance
+       // prevProviderAddr is the previous address of the resource's provider
+       prevProviderAddr addrs.Provider
+
        provider  providers.Interface
        objectSrc *states.ResourceInstanceObjectSrc
        // currentSchema is the latest schema of the resource
@@ -66,8 +72,7 @@
                args.objectSrc.AttrsJSON = 
stripRemovedStateAttributes(args.objectSrc.AttrsJSON, 
args.currentSchema.ImpliedType())
        }
 
-       // TODO: This should eventually use a proper FQN.
-       providerType := args.currentAddr.Resource.Resource.ImpliedProvider()
+       providerType := args.currentProviderAddr
 
        if args.objectSrc.SchemaVersion > args.currentSchemaVersion {
                log.Printf("[TRACE] upgradeResourceStateTransform: can't 
downgrade state for %s from version %d to %d", args.currentAddr, 
args.objectSrc.SchemaVersion, args.currentSchemaVersion)
@@ -133,7 +138,7 @@
 func moveResourceStateTransform(args stateTransformArgs) (cty.Value, []byte, 
tfdiags.Diagnostics) {
        log.Printf("[TRACE] moveResourceStateTransform: new address: %s, 
previous address: %s", args.currentAddr, args.prevAddr)
        req := providers.MoveResourceStateRequest{
-               SourceProviderAddress: 
args.prevAddr.Resource.Resource.ImpliedProvider(),
+               SourceProviderAddress: args.prevProviderAddr.String(),
                SourceTypeName:        args.prevAddr.Resource.Resource.Type,
                SourceSchemaVersion:   args.objectSrc.SchemaVersion,
                SourceStateJSON:       args.objectSrc.AttrsJSON,
@@ -171,7 +176,7 @@
        // marshaling/unmarshaling of the new value, but we'll check it here
        // anyway for robustness, e.g. for in-process providers.
        if errs := 
newState.Type().TestConformance(args.currentSchema.ImpliedType()); len(errs) > 
0 {
-               providerType := 
args.currentAddr.Resource.Resource.ImpliedProvider()
+               providerType := args.currentProviderAddr
                for _, err := range errs {
                        diags = diags.Append(tfdiags.Sourceless(
                                tfdiags.Error,
@@ -285,6 +290,7 @@
        addr addrs.AbsResourceInstance,
        src *states.ResourceInstanceObjectSrc,
        provider providers.Interface,
+       providerAddr addrs.Provider,
        providerSchema providers.ProviderSchema,
        diags tfdiags.Diagnostics,
 ) (*states.ResourceInstanceObjectSrc, tfdiags.Diagnostics) {
@@ -307,7 +313,7 @@
                return src, diags.Append(tfdiags.Sourceless(
                        tfdiags.Error,
                        "Resource identity managed by newer provider version",
-                       fmt.Sprintf("The current identity of %s was created by 
a newer provider version than is currently selected. Upgrade the %s provider to 
work with this identity.", addr, addr.Resource.Resource.ImpliedProvider()),
+                       fmt.Sprintf("The current identity of %s was created by 
a newer provider version than is currently selected. Upgrade the %s provider to 
work with this identity.", addr, providerAddr),
                ))
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentofu-1.12.3/internal/tofu/upgrade_resource_state_test.go 
new/opentofu-1.12.4/internal/tofu/upgrade_resource_state_test.go
--- old/opentofu-1.12.3/internal/tofu/upgrade_resource_state_test.go    
2026-06-18 15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/internal/tofu/upgrade_resource_state_test.go    
2026-07-13 17:08:17.000000000 +0200
@@ -180,8 +180,10 @@
                },
        }
        return stateTransformArgs{
-               currentAddr: mustResourceInstanceAddr("foo2_instance.cur"),
-               prevAddr:    mustResourceInstanceAddr("foo_instance.prev"),
+               currentAddr:         
mustResourceInstanceAddr("foo2_instance.cur"),
+               currentProviderAddr: addrs.NewDefaultProvider("foo2"),
+               prevAddr:            
mustResourceInstanceAddr("foo_instance.prev"),
+               prevProviderAddr:    addrs.NewDefaultProvider("foo"),
                provider: &MockProvider{
                        ConfigureProviderCalled: true,
                        MoveResourceStateResponse: 
&providers.MoveResourceStateResponse{
@@ -227,7 +229,7 @@
                        name: "Move check request",
                        args: getMoveStateArgs(),
                        wantRequest: &providers.MoveResourceStateRequest{
-                               SourceProviderAddress: "foo",
+                               SourceProviderAddress: 
addrs.NewDefaultProvider("foo").String(),
                                SourceTypeName:        "foo_instance",
                                SourceSchemaVersion:   2,
                                SourceStateJSON:       []byte(`{"foo":"bar"}`),
@@ -279,8 +281,10 @@
                },
        }
        args := stateTransformArgs{
-               currentAddr: mustResourceInstanceAddr("foo_instance.cur"),
-               prevAddr:    mustResourceInstanceAddr("foo_instance.cur"),
+               currentAddr:         
mustResourceInstanceAddr("foo_instance.cur"),
+               currentProviderAddr: addrs.NewDefaultProvider("foo"),
+               prevAddr:            
mustResourceInstanceAddr("foo_instance.cur"),
+               prevProviderAddr:    addrs.NewDefaultProvider("foo"),
                provider: &MockProvider{
                        ConfigureProviderCalled: true,
                        UpgradeResourceStateResponse: 
&providers.UpgradeResourceStateResponse{
@@ -403,7 +407,8 @@
                {
                        name: "flatmap state should be removed after 
transformation",
                        args: stateTransformArgs{
-                               currentAddr: 
mustResourceInstanceAddr("test_instance.foo"),
+                               currentAddr:         
mustResourceInstanceAddr("test_instance.foo"),
+                               currentProviderAddr: 
addrs.NewDefaultProvider("test"),
                                provider: &MockProvider{
                                        GetProviderSchemaResponse: 
testProviderSchema("test"),
                                },
@@ -661,7 +666,7 @@
 
        for _, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {
-                       gotSrc, diags := upgradeResourceIdentity(t.Context(), 
tt.currentAddr, tt.src, tt.provider, tt.providerSchema, nil)
+                       gotSrc, diags := upgradeResourceIdentity(t.Context(), 
tt.currentAddr, tt.src, tt.provider, addrs.NewDefaultProvider("test"), 
tt.providerSchema, nil)
 
                        if tt.wantErr != "" {
                                if !diags.HasErrors() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opentofu-1.12.3/version/VERSION 
new/opentofu-1.12.4/version/VERSION
--- old/opentofu-1.12.3/version/VERSION 2026-06-18 15:19:06.000000000 +0200
+++ new/opentofu-1.12.4/version/VERSION 2026-07-13 17:08:17.000000000 +0200
@@ -1 +1 @@
-1.12.3
+1.12.4

++++++ opentofu.obsinfo ++++++
--- /var/tmp/diff_new_pack.RixtSq/_old  2026-07-14 13:52:42.564719405 +0200
+++ /var/tmp/diff_new_pack.RixtSq/_new  2026-07-14 13:52:42.568719543 +0200
@@ -1,5 +1,5 @@
 name: opentofu
-version: 1.12.3
-mtime: 1781788746
-commit: e33607a2e3b29bfc7cf9f4dcdc261e669e3a457b
+version: 1.12.4
+mtime: 1783955297
+commit: d5291190380d16aa5ef4590facbe0719d7fa165f
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/opentofu/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.opentofu.new.1991/vendor.tar.gz differ: char 133, 
line 1

Reply via email to