| // Copyright (c) The OpenTofu Authors | |
| // SPDX-License-Identifier: MPL-2.0 | |
| // Copyright (c) 2023 HashiCorp, Inc. | |
| // SPDX-License-Identifier: MPL-2.0 | |
| package tofu | |
| import "github.com/opentofu/opentofu/internal/addrs" | |
| // nodeExternalReference allows external callers (such as the testing framework) | |
| // to provide the list of references they are making into the graph. This | |
| // ensures that OpenTofu will not remove any nodes from the graph that might | |
| // not be referenced from within a module but are referenced by the currently | |
| // executing test file. | |
| // | |
| // This should only be added to the graph if we are executing the | |
| // `tofu test` command. | |
| type nodeExternalReference struct { | |
| ExternalReferences []*addrs.Reference | |
| } | |
| var ( | |
| _ GraphNodeReferencer = (*nodeExternalReference)(nil) | |
| ) | |
| // GraphNodeModulePath | |
| func (n *nodeExternalReference) ModulePath() addrs.Module { | |
| // The external references are always made from test files, which currently | |
| // execute as if they are in the root module. | |
| return addrs.RootModule | |
| } | |
| // GraphNodeReferencer | |
| func (n *nodeExternalReference) References() []*addrs.Reference { | |
| return n.ExternalReferences | |
| } |