diff --git a/builtin/provisioners/remote-exec/resource_provisioner.go b/builtin/provisioners/remote-exec/resource_provisioner.go index 042e8544e6..14df1fa59d 100644 --- a/builtin/provisioners/remote-exec/resource_provisioner.go +++ b/builtin/provisioners/remote-exec/resource_provisioner.go @@ -8,6 +8,7 @@ import ( "io/ioutil" "log" "os" + "strings" "sync/atomic" "time" @@ -78,11 +79,13 @@ func applyFn(ctx context.Context) error { // generateScripts takes the configuration and creates a script from each inline config func generateScripts(d *schema.ResourceData) ([]string, error) { - var scripts []string + var lines []string for _, l := range d.Get("inline").([]interface{}) { - scripts = append(scripts, l.(string)) + lines = append(lines, l.(string)) } - return scripts, nil + lines = append(lines, "") + + return []string{strings.Join(lines, "\n")}, nil } // collectScripts is used to collect all the scripts we need diff --git a/builtin/provisioners/remote-exec/resource_provisioner_test.go b/builtin/provisioners/remote-exec/resource_provisioner_test.go index 5508e58dcf..3bbeaca616 100644 --- a/builtin/provisioners/remote-exec/resource_provisioner_test.go +++ b/builtin/provisioners/remote-exec/resource_provisioner_test.go @@ -3,11 +3,8 @@ package remoteexec import ( "bytes" "io" - "strings" "testing" - "reflect" - "github.com/hashicorp/terraform/config" "github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform/terraform" @@ -46,8 +43,6 @@ wget http://foobar exit 0 ` -var expectedInlineScriptsOut = strings.Split(expectedScriptOut, "\n") - func TestResourceProvider_generateScript(t *testing.T) { p := Provisioner().(*schema.Provisioner) conf := map[string]interface{}{ @@ -63,7 +58,11 @@ func TestResourceProvider_generateScript(t *testing.T) { t.Fatalf("err: %v", err) } - if reflect.DeepEqual(out, expectedInlineScriptsOut) { + if len(out) != 1 { + t.Fatal("expected 1 out") + } + + if out[0] != expectedScriptOut { t.Fatalf("bad: %v", out) } } @@ -84,20 +83,18 @@ func TestResourceProvider_CollectScripts_inline(t *testing.T) { t.Fatalf("err: %v", err) } - if len(scripts) != 3 { + if len(scripts) != 1 { t.Fatalf("bad: %v", scripts) } - for i, script := range scripts { - var out bytes.Buffer - _, err = io.Copy(&out, script) - if err != nil { - t.Fatalf("err: %v", err) - } + var out bytes.Buffer + _, err = io.Copy(&out, scripts[0]) + if err != nil { + t.Fatalf("err: %v", err) + } - if out.String() != expectedInlineScriptsOut[i] { - t.Fatalf("bad: %v", out.String()) - } + if out.String() != expectedScriptOut { + t.Fatalf("bad: %v", out.String()) } }