Merge pull request #10878 from hashicorp/rewrite_acctests
Move acctest pkg from the SDK to core and update acceptance tests
This commit is contained in:
commit
734e91b97c
|
@ -0,0 +1,72 @@
|
||||||
|
package acctest
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
testTesting = true
|
||||||
|
|
||||||
|
if err := os.Setenv(TestEnvVar, "1"); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTest_noEnv(t *testing.T) {
|
||||||
|
// Unset the variable
|
||||||
|
if err := os.Setenv(TestEnvVar, ""); err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
defer os.Setenv(TestEnvVar, "1")
|
||||||
|
|
||||||
|
mt := new(mockT)
|
||||||
|
Test(mt, TestCase{})
|
||||||
|
|
||||||
|
if !mt.SkipCalled {
|
||||||
|
t.Fatal("skip not called")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTest_preCheck(t *testing.T) {
|
||||||
|
called := false
|
||||||
|
|
||||||
|
mt := new(mockT)
|
||||||
|
Test(mt, TestCase{
|
||||||
|
PreCheck: func() { called = true },
|
||||||
|
})
|
||||||
|
|
||||||
|
if !called {
|
||||||
|
t.Fatal("precheck should be called")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// mockT implements TestT for testing
|
||||||
|
type mockT struct {
|
||||||
|
ErrorCalled bool
|
||||||
|
ErrorArgs []interface{}
|
||||||
|
FatalCalled bool
|
||||||
|
FatalArgs []interface{}
|
||||||
|
SkipCalled bool
|
||||||
|
SkipArgs []interface{}
|
||||||
|
|
||||||
|
f bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *mockT) Error(args ...interface{}) {
|
||||||
|
t.ErrorCalled = true
|
||||||
|
t.ErrorArgs = args
|
||||||
|
t.f = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *mockT) Fatal(args ...interface{}) {
|
||||||
|
t.FatalCalled = true
|
||||||
|
t.FatalArgs = args
|
||||||
|
t.f = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *mockT) Skip(args ...interface{}) {
|
||||||
|
t.SkipCalled = true
|
||||||
|
t.SkipArgs = args
|
||||||
|
t.f = true
|
||||||
|
}
|
|
@ -8,8 +8,8 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
|
"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
const defaultTestRegion = "cn-beijing"
|
const defaultTestRegion = "cn-beijing"
|
||||||
|
|
|
@ -30,8 +30,8 @@ import (
|
||||||
|
|
||||||
"github.com/Azure/go-autorest/autorest"
|
"github.com/Azure/go-autorest/autorest"
|
||||||
"github.com/Azure/go-autorest/autorest/azure/auth"
|
"github.com/Azure/go-autorest/autorest/azure/auth"
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
const DeviceLoginAcceptanceTest = "DEVICELOGIN_TEST"
|
const DeviceLoginAcceptanceTest = "DEVICELOGIN_TEST"
|
||||||
|
|
|
@ -28,7 +28,7 @@ package dtl
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
const DeviceLoginAcceptanceTest = "DEVICELOGIN_TEST"
|
const DeviceLoginAcceptanceTest = "DEVICELOGIN_TEST"
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/digitalocean/godo"
|
"github.com/digitalocean/godo"
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilder_implBuilder(t *testing.T) {
|
func TestBuilder_implBuilder(t *testing.T) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ package bsu
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -3,7 +3,7 @@ package bsusurrogate
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ package bsuvolume
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -6,10 +6,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
ucloudcommon "github.com/hashicorp/packer/builder/ucloud/common"
|
ucloudcommon "github.com/hashicorp/packer/builder/ucloud/common"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_validateRegion(t *testing.T) {
|
func TestBuilderAcc_validateRegion(t *testing.T) {
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
package iso
|
package iso
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
"github.com/hashicorp/packer-plugin-sdk/acctest"
|
||||||
|
"github.com/hashicorp/packer-plugin-sdk/acctest/testutils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBuilderAcc_basic(t *testing.T) {
|
func TestBuilderAcc_basic(t *testing.T) {
|
||||||
|
@ -15,8 +18,25 @@ func TestBuilderAcc_basic(t *testing.T) {
|
||||||
t.Fatalf("failed to load template file %s", templatePath)
|
t.Fatalf("failed to load template file %s", templatePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
builderT.Test(t, builderT.TestCase{
|
testCase := &acctest.PluginTestCase{
|
||||||
Builder: &Builder{},
|
Name: "vmware-iso_builder_basic_test",
|
||||||
|
Setup: func() error {
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
Teardown: func() error {
|
||||||
|
testutils.CleanupFiles("output-vmware-iso", "packer_cache")
|
||||||
|
return nil
|
||||||
|
},
|
||||||
Template: string(bytes),
|
Template: string(bytes),
|
||||||
})
|
Type: "vmware-iso",
|
||||||
|
Check: func(buildCommand *exec.Cmd, logfile string) error {
|
||||||
|
if buildCommand.ProcessState != nil {
|
||||||
|
if buildCommand.ProcessState.ExitCode() != 0 {
|
||||||
|
return fmt.Errorf("Bad exit code. Logfile: %s", logfile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
acctest.TestPlugin(t, testCase)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,9 +11,9 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
"github.com/hashicorp/packer-plugin-sdk/tmp"
|
"github.com/hashicorp/packer-plugin-sdk/tmp"
|
||||||
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
const vmxTestTemplate string = `{"builders":[{%s}],"provisioners":[{%s}]}`
|
const vmxTestTemplate string = `{"builders":[{%s}],"provisioners":[{%s}]}`
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"builders": [
|
"builders": [
|
||||||
{
|
{
|
||||||
"type": "test",
|
"type": "vmware-iso",
|
||||||
"boot_command": [
|
"boot_command": [
|
||||||
"<esc><wait>",
|
"<esc><wait>",
|
||||||
"<esc><wait>",
|
"<esc><wait>",
|
||||||
|
|
|
@ -4,8 +4,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
"github.com/hashicorp/packer/builder/vsphere/common"
|
"github.com/hashicorp/packer/builder/vsphere/common"
|
||||||
commonT "github.com/hashicorp/packer/builder/vsphere/common/testing"
|
commonT "github.com/hashicorp/packer/builder/vsphere/common/testing"
|
||||||
"github.com/vmware/govmomi/vim25/types"
|
"github.com/vmware/govmomi/vim25/types"
|
||||||
|
|
|
@ -6,8 +6,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
commonT "github.com/hashicorp/packer/builder/vsphere/common/testing"
|
commonT "github.com/hashicorp/packer/builder/vsphere/common/testing"
|
||||||
"github.com/vmware/govmomi/vim25/types"
|
"github.com/vmware/govmomi/vim25/types"
|
||||||
)
|
)
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
)
|
)
|
||||||
|
|
||||||
const InstanceMetadataAddr = "169.254.169.254"
|
const InstanceMetadataAddr = "169.254.169.254"
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -51,7 +51,7 @@ require (
|
||||||
github.com/hashicorp/hcl/v2 v2.9.1
|
github.com/hashicorp/hcl/v2 v2.9.1
|
||||||
github.com/hashicorp/packer-plugin-amazon v0.0.1
|
github.com/hashicorp/packer-plugin-amazon v0.0.1
|
||||||
github.com/hashicorp/packer-plugin-docker v0.0.7
|
github.com/hashicorp/packer-plugin-docker v0.0.7
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.1.2
|
github.com/hashicorp/packer-plugin-sdk v0.1.3-0.20210407090040-d1eff9fe99e8
|
||||||
github.com/hashicorp/vault/api v1.0.4
|
github.com/hashicorp/vault/api v1.0.4
|
||||||
github.com/hetznercloud/hcloud-go v1.15.1
|
github.com/hetznercloud/hcloud-go v1.15.1
|
||||||
github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4
|
github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -445,6 +445,8 @@ github.com/hashicorp/packer-plugin-sdk v0.1.0/go.mod h1:CFsC20uZjtER/EnTn/CSMKD0
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.1.1/go.mod h1:1d3nqB9LUsXMQaNUiL67Q+WYEtjsVcLNTX8ikVlpBrc=
|
github.com/hashicorp/packer-plugin-sdk v0.1.1/go.mod h1:1d3nqB9LUsXMQaNUiL67Q+WYEtjsVcLNTX8ikVlpBrc=
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.1.2 h1:R/WKJw6BDwvjbcKeC3mZs+wSmdFHE8iK+qz+QnArPQk=
|
github.com/hashicorp/packer-plugin-sdk v0.1.2 h1:R/WKJw6BDwvjbcKeC3mZs+wSmdFHE8iK+qz+QnArPQk=
|
||||||
github.com/hashicorp/packer-plugin-sdk v0.1.2/go.mod h1:KRjczE1/c9NV5Re+PXt3myJsVTI/FxEHpZjRjOH0Fug=
|
github.com/hashicorp/packer-plugin-sdk v0.1.2/go.mod h1:KRjczE1/c9NV5Re+PXt3myJsVTI/FxEHpZjRjOH0Fug=
|
||||||
|
github.com/hashicorp/packer-plugin-sdk v0.1.3-0.20210407090040-d1eff9fe99e8 h1:pkB+Y15/ck/NRUBFF9DrdPYQwmnHsEvnNwmgMfl/8hA=
|
||||||
|
github.com/hashicorp/packer-plugin-sdk v0.1.3-0.20210407090040-d1eff9fe99e8/go.mod h1:xePpgQgQYv/bamiypx3hH9ukidxDdcN8q0R0wLi8IEQ=
|
||||||
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
|
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
|
||||||
github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0=
|
github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0=
|
||||||
github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
|
github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
|
||||||
|
|
|
@ -12,8 +12,8 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
||||||
"github.com/hashicorp/packer-plugin-docker/builder/docker"
|
"github.com/hashicorp/packer-plugin-docker/builder/docker"
|
||||||
builderT "github.com/hashicorp/packer-plugin-sdk/acctest"
|
|
||||||
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
||||||
|
builderT "github.com/hashicorp/packer/acctest"
|
||||||
"github.com/hashicorp/packer/provisioner/file"
|
"github.com/hashicorp/packer/provisioner/file"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,112 +0,0 @@
|
||||||
package acctest
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
"os/exec"
|
|
||||||
"path/filepath"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
// DatasourceTestCase is a single set of tests to run for a data source.
|
|
||||||
// A DatasourceTestCase should generally map 1:1 to each test method for your
|
|
||||||
// acceptance tests.
|
|
||||||
// Requirements:
|
|
||||||
// - The plugin to be tested must be previously installed so that Packer can discover it.
|
|
||||||
// - Packer must be installed
|
|
||||||
type DatasourceTestCase struct {
|
|
||||||
// Check is called after this step is executed in order to test that
|
|
||||||
// the step executed successfully. If this is not set, then the next
|
|
||||||
// step will be called
|
|
||||||
Check func(*exec.Cmd, string) error
|
|
||||||
// Name is the name of the test case. Be simple but unique and descriptive.
|
|
||||||
Name string
|
|
||||||
// Setup, if non-nil, will be called once before the test case
|
|
||||||
// runs. This can be used for some setup like setting environment
|
|
||||||
// variables, or for validation prior to the
|
|
||||||
// test running. For example, you can use this to make sure certain
|
|
||||||
// binaries are installed, or text fixtures are in place.
|
|
||||||
Setup func() error
|
|
||||||
// Teardown will be called before the test case is over regardless
|
|
||||||
// of if the test succeeded or failed. This should return an error
|
|
||||||
// in the case that the test can't guarantee all resources were
|
|
||||||
// properly cleaned up.
|
|
||||||
Teardown TestTeardownFunc
|
|
||||||
// Template is the testing HCL2 template to use.
|
|
||||||
Template string
|
|
||||||
// Type is the type of data source.
|
|
||||||
Type string
|
|
||||||
}
|
|
||||||
|
|
||||||
//nolint:errcheck
|
|
||||||
func TestDatasource(t *testing.T, testCase *DatasourceTestCase) {
|
|
||||||
if os.Getenv(TestEnvVar) == "" {
|
|
||||||
t.Skip(fmt.Sprintf(
|
|
||||||
"Acceptance tests skipped unless env '%s' set",
|
|
||||||
TestEnvVar))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if testCase.Setup != nil {
|
|
||||||
err := testCase.Setup()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("test %s setup failed: %s", testCase.Name, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
logfile := fmt.Sprintf("packer_log_%s.txt", testCase.Name)
|
|
||||||
templatePath := fmt.Sprintf("./%s.pkr.hcl", testCase.Name)
|
|
||||||
|
|
||||||
// Write config hcl2 template
|
|
||||||
out := bytes.NewBuffer(nil)
|
|
||||||
fmt.Fprintf(out, testCase.Template)
|
|
||||||
outputFile, err := os.Create(templatePath)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("bad: failed to create template file: %s", err.Error())
|
|
||||||
}
|
|
||||||
_, err = outputFile.Write(out.Bytes())
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("bad: failed to write template file: %s", err.Error())
|
|
||||||
}
|
|
||||||
outputFile.Sync()
|
|
||||||
|
|
||||||
// Make sure packer is installed:
|
|
||||||
packerbin, err := exec.LookPath("packer")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Couldn't find packer binary installed on system: %s", err.Error())
|
|
||||||
}
|
|
||||||
// Run build
|
|
||||||
buildCommand := exec.Command(packerbin, "build", "--machine-readable", templatePath)
|
|
||||||
buildCommand.Env = append(buildCommand.Env, os.Environ()...)
|
|
||||||
buildCommand.Env = append(buildCommand.Env, "PACKER_LOG=1",
|
|
||||||
fmt.Sprintf("PACKER_LOG_PATH=%s", logfile))
|
|
||||||
buildCommand.Run()
|
|
||||||
|
|
||||||
// Check for test custom pass/fail before we clean up
|
|
||||||
var checkErr error
|
|
||||||
if testCase.Check != nil {
|
|
||||||
checkErr = testCase.Check(buildCommand, logfile)
|
|
||||||
}
|
|
||||||
// Clean up anything created in data source run
|
|
||||||
if testCase.Teardown != nil {
|
|
||||||
cleanErr := testCase.Teardown()
|
|
||||||
if cleanErr != nil {
|
|
||||||
log.Printf("bad: failed to clean up test-created resources: %s", cleanErr.Error())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fail test if check failed.
|
|
||||||
if checkErr != nil {
|
|
||||||
cwd, _ := os.Getwd()
|
|
||||||
t.Fatalf(fmt.Sprintf("Error running data source acceptance"+
|
|
||||||
" tests: %s\nLogs can be found at %s\nand the "+
|
|
||||||
"acceptance test template can be found at %s",
|
|
||||||
checkErr.Error(), filepath.Join(cwd, logfile),
|
|
||||||
filepath.Join(cwd, templatePath)))
|
|
||||||
} else {
|
|
||||||
os.Remove(templatePath)
|
|
||||||
os.Remove(logfile)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -11,6 +11,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TestEnvVar must be set to a non-empty value for acceptance tests to run.
|
||||||
|
const TestEnvVar = "PACKER_ACC"
|
||||||
|
|
||||||
// PluginTestCase is a single set of tests to run for a plugin.
|
// PluginTestCase is a single set of tests to run for a plugin.
|
||||||
// A PluginTestCase should generally map 1:1 to each test method for your
|
// A PluginTestCase should generally map 1:1 to each test method for your
|
||||||
// acceptance tests.
|
// acceptance tests.
|
||||||
|
@ -41,6 +44,9 @@ type PluginTestCase struct {
|
||||||
Type string
|
Type string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestTeardownFunc is the callback used for Teardown in TestCase.
|
||||||
|
type TestTeardownFunc func() error
|
||||||
|
|
||||||
//nolint:errcheck
|
//nolint:errcheck
|
||||||
func TestPlugin(t *testing.T, testCase *PluginTestCase) {
|
func TestPlugin(t *testing.T, testCase *PluginTestCase) {
|
||||||
if os.Getenv(TestEnvVar) == "" {
|
if os.Getenv(TestEnvVar) == "" {
|
||||||
|
|
|
@ -13,12 +13,12 @@ import (
|
||||||
var GitCommit string
|
var GitCommit string
|
||||||
|
|
||||||
// Package version helps plugin creators set and track the sdk version using
|
// Package version helps plugin creators set and track the sdk version using
|
||||||
var Version = "0.1.2"
|
var Version = "0.1.3"
|
||||||
|
|
||||||
// A pre-release marker for the version. If this is "" (empty string)
|
// A pre-release marker for the version. If this is "" (empty string)
|
||||||
// then it means that it is a final release. Otherwise, this is a pre-release
|
// then it means that it is a final release. Otherwise, this is a pre-release
|
||||||
// such as "dev" (in development), "beta", "rc1", etc.
|
// such as "dev" (in development), "beta", "rc1", etc.
|
||||||
var VersionPrerelease = ""
|
var VersionPrerelease = "dev"
|
||||||
|
|
||||||
// SDKVersion is used by the plugin set to allow Packer to recognize
|
// SDKVersion is used by the plugin set to allow Packer to recognize
|
||||||
// what version of the sdk the plugin is.
|
// what version of the sdk the plugin is.
|
||||||
|
|
|
@ -511,7 +511,7 @@ github.com/hashicorp/packer-plugin-docker/post-processor/docker-import
|
||||||
github.com/hashicorp/packer-plugin-docker/post-processor/docker-push
|
github.com/hashicorp/packer-plugin-docker/post-processor/docker-push
|
||||||
github.com/hashicorp/packer-plugin-docker/post-processor/docker-save
|
github.com/hashicorp/packer-plugin-docker/post-processor/docker-save
|
||||||
github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag
|
github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag
|
||||||
# github.com/hashicorp/packer-plugin-sdk v0.1.2
|
# github.com/hashicorp/packer-plugin-sdk v0.1.3-0.20210407090040-d1eff9fe99e8
|
||||||
## explicit
|
## explicit
|
||||||
github.com/hashicorp/packer-plugin-sdk/acctest
|
github.com/hashicorp/packer-plugin-sdk/acctest
|
||||||
github.com/hashicorp/packer-plugin-sdk/acctest/provisioneracc
|
github.com/hashicorp/packer-plugin-sdk/acctest/provisioneracc
|
||||||
|
|
Loading…
Reference in New Issue