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  }