mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-25 16:31:10 -06:00
Merge pull request #17071 from MarkFreebairn/Issue-16360-empty-target-points-to-all-resources-in-state
command: Fix #16360 - Fail fast if -target is specified but empty
This commit is contained in:
commit
2f8532407a
@ -487,6 +487,13 @@ func (c *Context) Input(mode InputMode) error {
|
||||
func (c *Context) Apply() (*State, error) {
|
||||
defer c.acquireRun("apply")()
|
||||
|
||||
// Check there are no empty target parameter values
|
||||
for _, target := range c.targets {
|
||||
if target == "" {
|
||||
return nil, fmt.Errorf("Target parameter must not have empty value")
|
||||
}
|
||||
}
|
||||
|
||||
// Copy our own state
|
||||
c.state = c.state.DeepCopy()
|
||||
|
||||
@ -524,6 +531,13 @@ func (c *Context) Apply() (*State, error) {
|
||||
func (c *Context) Plan() (*Plan, error) {
|
||||
defer c.acquireRun("plan")()
|
||||
|
||||
// Check there are no empty target parameter values
|
||||
for _, target := range c.targets {
|
||||
if target == "" {
|
||||
return nil, fmt.Errorf("Target parameter must not have empty value")
|
||||
}
|
||||
}
|
||||
|
||||
p := &Plan{
|
||||
Module: c.module,
|
||||
Vars: c.variables,
|
||||
|
@ -7485,6 +7485,27 @@ aws_instance.foo:
|
||||
`)
|
||||
}
|
||||
|
||||
func TestContext2Apply_targetEmpty(t *testing.T) {
|
||||
m := testModule(t, "apply-targeted")
|
||||
p := testProvider("aws")
|
||||
p.ApplyFn = testApplyFn
|
||||
p.DiffFn = testDiffFn
|
||||
ctx := testContext2(t, &ContextOpts{
|
||||
Module: m,
|
||||
ProviderResolver: ResourceProviderResolverFixed(
|
||||
map[string]ResourceProviderFactory{
|
||||
"aws": testProviderFuncFixed(p),
|
||||
},
|
||||
),
|
||||
Targets: []string{""},
|
||||
})
|
||||
|
||||
_, err := ctx.Apply()
|
||||
if err == nil {
|
||||
t.Fatalf("should error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestContext2Apply_targetedCount(t *testing.T) {
|
||||
m := testModule(t, "apply-targeted-count")
|
||||
p := testProvider("aws")
|
||||
|
@ -2733,6 +2733,26 @@ STATE:
|
||||
}
|
||||
}
|
||||
|
||||
func TestContext2Plan_targetEmpty(t *testing.T) {
|
||||
m := testModule(t, "plan-targeted")
|
||||
p := testProvider("aws")
|
||||
p.DiffFn = testDiffFn
|
||||
ctx := testContext2(t, &ContextOpts{
|
||||
Module: m,
|
||||
ProviderResolver: ResourceProviderResolverFixed(
|
||||
map[string]ResourceProviderFactory{
|
||||
"aws": testProviderFuncFixed(p),
|
||||
},
|
||||
),
|
||||
Targets: []string{""},
|
||||
})
|
||||
|
||||
_, err := ctx.Plan()
|
||||
if err == nil {
|
||||
t.Fatal("should error")
|
||||
}
|
||||
}
|
||||
|
||||
// Test that targeting a module properly plans any inputs that depend
|
||||
// on another module.
|
||||
func TestContext2Plan_targetedCrossModule(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user