github.com/hashicorp/packer@v1.14.3/provisioner/shell-local/provisioner_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package shell 5 6 import ( 7 "testing" 8 9 packersdk "github.com/hashicorp/packer-plugin-sdk/packer" 10 ) 11 12 func TestProvisioner_impl(t *testing.T) { 13 var _ packersdk.Provisioner = new(Provisioner) 14 } 15 16 func TestConfigPrepare(t *testing.T) { 17 cases := []struct { 18 Key string 19 Value interface{} 20 Err bool 21 }{ 22 { 23 "unknown_key", 24 "bad", 25 true, 26 }, 27 28 { 29 "command", 30 nil, 31 true, 32 }, 33 } 34 35 for _, tc := range cases { 36 raw := testConfig(t) 37 38 if tc.Value == nil { 39 delete(raw, tc.Key) 40 } else { 41 raw[tc.Key] = tc.Value 42 } 43 44 var p Provisioner 45 err := p.Prepare(raw) 46 if tc.Err { 47 testConfigErr(t, err, tc.Key) 48 } else { 49 testConfigOk(t, err) 50 } 51 } 52 } 53 54 func testConfig(t *testing.T) map[string]interface{} { 55 return map[string]interface{}{ 56 "command": "echo foo", 57 } 58 } 59 60 func testConfigErr(t *testing.T, err error, extra string) { 61 if err == nil { 62 t.Fatalf("should error: %s", extra) 63 } 64 } 65 66 func testConfigOk(t *testing.T, err error) { 67 if err != nil { 68 t.Fatalf("bad: %s", err) 69 } 70 }