Merge pull request #9794 from hashicorp/b-partial-input

command/meta: always ask for unset variable input
This commit is contained in:
Mitchell Hashimoto 2016-11-04 08:48:05 -07:00 committed by GitHub
commit f6dacab0ba
5 changed files with 55 additions and 6 deletions

View File

@ -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 {

View File

@ -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
}

View File

@ -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())
}
}

View File

@ -0,0 +1,5 @@
variable "foo" {}
variable "bar" {}
output "foo" { value = "${var.foo}" }
output "bar" { value = "${var.bar}" }

View File

@ -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