mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
Merge pull request #9794 from hashicorp/b-partial-input
command/meta: always ask for unset variable input
This commit is contained in:
commit
f6dacab0ba
@ -407,6 +407,47 @@ func TestApply_input(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// When only a partial set of the variables are set, Terraform
|
||||
// should still ask for the unset ones by default (with -input=true)
|
||||
func TestApply_inputPartial(t *testing.T) {
|
||||
// Disable test mode so input would be asked
|
||||
test = false
|
||||
defer func() { test = true }()
|
||||
|
||||
// Set some default reader/writers for the inputs
|
||||
defaultInputReader = bytes.NewBufferString("one\ntwo\n")
|
||||
defaultInputWriter = new(bytes.Buffer)
|
||||
|
||||
statePath := testTempFile(t)
|
||||
|
||||
p := testProvider()
|
||||
ui := new(cli.MockUi)
|
||||
c := &ApplyCommand{
|
||||
Meta: Meta{
|
||||
ContextOpts: testCtxConfig(p),
|
||||
Ui: ui,
|
||||
},
|
||||
}
|
||||
|
||||
args := []string{
|
||||
"-state", statePath,
|
||||
"-var", "foo=foovalue",
|
||||
testFixturePath("apply-input-partial"),
|
||||
}
|
||||
if code := c.Run(args); code != 0 {
|
||||
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
|
||||
}
|
||||
|
||||
expected := strings.TrimSpace(`
|
||||
<no state>
|
||||
Outputs:
|
||||
|
||||
bar = one
|
||||
foo = foovalue
|
||||
`)
|
||||
testStateOutput(t, statePath, expected)
|
||||
}
|
||||
|
||||
func TestApply_noArgs(t *testing.T) {
|
||||
cwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
|
@ -221,10 +221,8 @@ func (m *Meta) InputMode() terraform.InputMode {
|
||||
|
||||
var mode terraform.InputMode
|
||||
mode |= terraform.InputModeProvider
|
||||
if len(m.variables) == 0 {
|
||||
mode |= terraform.InputModeVar
|
||||
mode |= terraform.InputModeVarUnset
|
||||
}
|
||||
mode |= terraform.InputModeVar
|
||||
mode |= terraform.InputModeVarUnset
|
||||
|
||||
return mode
|
||||
}
|
||||
|
@ -175,7 +175,11 @@ func TestMetaInputMode_vars(t *testing.T) {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
if m.InputMode()&terraform.InputModeVar != 0 {
|
||||
if m.InputMode()&terraform.InputModeVar == 0 {
|
||||
t.Fatalf("bad: %#v", m.InputMode())
|
||||
}
|
||||
|
||||
if m.InputMode()&terraform.InputModeVarUnset == 0 {
|
||||
t.Fatalf("bad: %#v", m.InputMode())
|
||||
}
|
||||
}
|
||||
|
5
command/test-fixtures/apply-input-partial/main.tf
Normal file
5
command/test-fixtures/apply-input-partial/main.tf
Normal file
@ -0,0 +1,5 @@
|
||||
variable "foo" {}
|
||||
variable "bar" {}
|
||||
|
||||
output "foo" { value = "${var.foo}" }
|
||||
output "bar" { value = "${var.bar}" }
|
@ -22,7 +22,8 @@ const (
|
||||
// InputModeVar asks for all variables
|
||||
InputModeVar InputMode = 1 << iota
|
||||
|
||||
// InputModeVarUnset asks for variables which are not set yet
|
||||
// InputModeVarUnset asks for variables which are not set yet.
|
||||
// InputModeVar must be set for this to have an effect.
|
||||
InputModeVarUnset
|
||||
|
||||
// InputModeProvider asks for provider variables
|
||||
|
Loading…
Reference in New Issue
Block a user