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) {
|
func TestApply_noArgs(t *testing.T) {
|
||||||
cwd, err := os.Getwd()
|
cwd, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -221,10 +221,8 @@ func (m *Meta) InputMode() terraform.InputMode {
|
||||||
|
|
||||||
var mode terraform.InputMode
|
var mode terraform.InputMode
|
||||||
mode |= terraform.InputModeProvider
|
mode |= terraform.InputModeProvider
|
||||||
if len(m.variables) == 0 {
|
|
||||||
mode |= terraform.InputModeVar
|
mode |= terraform.InputModeVar
|
||||||
mode |= terraform.InputModeVarUnset
|
mode |= terraform.InputModeVarUnset
|
||||||
}
|
|
||||||
|
|
||||||
return mode
|
return mode
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,7 +175,11 @@ func TestMetaInputMode_vars(t *testing.T) {
|
||||||
t.Fatalf("err: %s", err)
|
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())
|
t.Fatalf("bad: %#v", m.InputMode())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 asks for all variables
|
||||||
InputModeVar InputMode = 1 << iota
|
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
|
InputModeVarUnset
|
||||||
|
|
||||||
// InputModeProvider asks for provider variables
|
// InputModeProvider asks for provider variables
|
||||||
|
|
Loading…
Reference in New Issue