Compare commits

...

2 Commits

Author SHA1 Message Date
Wilken Rivera fd3cc596c7 The original approach of running version, but that seems to bypass wrappedMain entirely 2021-04-05 16:06:41 -04:00
Wilken Rivera 708f9cdfbd Add example test to validate correct output 2021-04-05 16:01:01 -04:00
4 changed files with 39 additions and 0 deletions

View File

@ -95,6 +95,8 @@ func TestHelperProcess(*testing.T) {
os.Exit((&BuildCommand{Meta: commandMeta()}).Run(args))
case "hcl2_upgrade":
os.Exit((&HCL2UpgradeCommand{Meta: commandMeta()}).Run(args))
case "version":
os.Exit((&VersionCommand{Meta: commandMeta()}).Run(args))
default:
fmt.Fprintf(os.Stderr, "Unknown command %q\n", cmd)
os.Exit(2)

View File

@ -1,11 +1,37 @@
package command
import (
"fmt"
"testing"
"github.com/hashicorp/packer/version"
"github.com/mitchellh/cli"
"github.com/stretchr/testify/assert"
)
func TestVersionCommand_implements(t *testing.T) {
var _ cli.Command = &VersionCommand{}
}
func Test_version(t *testing.T) {
tc := []struct {
command []string
env []string
expected string
}{
{[]string{"version"}, nil, fmt.Sprintf("Packer v%s", version.FormattedVersion()) + "\n"},
{[]string{"version", "&"}, nil, fmt.Sprintf("Packer v%s", version.FormattedVersion()) + "\n"},
}
for _, tc := range tc {
t.Run(fmt.Sprintf("packer %s", tc.command), func(t *testing.T) {
p := helperCommand(t, tc.command...)
bs, err := p.Output()
fmt.Println(err)
if err != nil {
t.Fatalf("%v: %s", err, bs)
}
assert.Equal(t, tc.expected, string(bs))
})
}
}

View File

@ -470,3 +470,5 @@ func init() {
// Seed the random number generator
rand.Seed(time.Now().UTC().UnixNano())
}
var backgroundCheckFn func(int) (bool, error)

View File

@ -2,6 +2,7 @@ package main
import (
"math/rand"
"os"
"reflect"
"strings"
"testing"
@ -67,3 +68,11 @@ func TestRandom(t *testing.T) {
t.Fatal("math.rand is not seeded properly")
}
}
func ExampleWrappedMain() {
os.Setenv("PACKER_WRAP_COOKIE", "49C22B1A-3A93-4C98-97FA-E07D18C787B5")
backgroundCheckFn = func(_ int) (bool, error) { return true, nil }
os.Args = []string{"packer", "version"}
wrappedMain()
//Output: Packer v1.7.2-dev
}