github.com/hairyhenderson/templater@v3.5.0+incompatible/cmd/gomplate/main_test.go (about)

     1  package main
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/spf13/cobra"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestValidateOpts(t *testing.T) {
    11  	err := validateOpts(parseFlags(), nil)
    12  	assert.NoError(t, err)
    13  
    14  	cmd := parseFlags("-i=foo", "-f", "bar")
    15  	err = validateOpts(cmd, nil)
    16  	assert.Error(t, err)
    17  
    18  	cmd = parseFlags("-i=foo", "-o=bar", "-o=baz")
    19  	err = validateOpts(cmd, nil)
    20  	assert.Error(t, err)
    21  
    22  	cmd = parseFlags("-i=foo", "--input-dir=baz")
    23  	err = validateOpts(cmd, nil)
    24  	assert.Error(t, err)
    25  
    26  	cmd = parseFlags("--input-dir=foo", "-f=bar")
    27  	err = validateOpts(cmd, nil)
    28  	assert.Error(t, err)
    29  
    30  	cmd = parseFlags("--output-dir=foo", "-o=bar")
    31  	err = validateOpts(cmd, nil)
    32  	assert.Error(t, err)
    33  
    34  	cmd = parseFlags("--output-dir=foo")
    35  	err = validateOpts(cmd, nil)
    36  	assert.Error(t, err)
    37  
    38  	cmd = parseFlags("--output-map", "bar")
    39  	err = validateOpts(cmd, nil)
    40  	assert.Error(t, err)
    41  
    42  	cmd = parseFlags("-o", "foo", "--output-map", "bar")
    43  	err = validateOpts(cmd, nil)
    44  	assert.Error(t, err)
    45  
    46  	cmd = parseFlags(
    47  		"--input-dir", "in",
    48  		"--output-dir", "foo",
    49  		"--output-map", "bar",
    50  	)
    51  	err = validateOpts(cmd, nil)
    52  	assert.Error(t, err)
    53  
    54  	cmd = parseFlags(
    55  		"--input-dir", "in",
    56  		"--output-map", "bar",
    57  	)
    58  	err = validateOpts(cmd, nil)
    59  	assert.NoError(t, err)
    60  }
    61  
    62  func parseFlags(flags ...string) *cobra.Command {
    63  	cmd := &cobra.Command{}
    64  	initFlags(cmd)
    65  	err := cmd.ParseFlags(flags)
    66  	if err != nil {
    67  		panic(err)
    68  	}
    69  	return cmd
    70  }