packer-cn/packer/rpc/post_processor_test.go

91 lines
1.8 KiB
Go
Raw Normal View History

2013-06-18 16:44:57 -04:00
package rpc
import (
"github.com/mitchellh/packer/packer"
"reflect"
2013-06-18 16:44:57 -04:00
"testing"
)
2013-12-09 17:46:33 -05:00
var testPostProcessorArtifact = new(packer.MockArtifact)
2013-06-18 16:44:57 -04:00
type TestPostProcessor struct {
configCalled bool
configVal []interface{}
2013-06-18 16:44:57 -04:00
ppCalled bool
ppArtifact packer.Artifact
2013-12-09 22:07:36 -05:00
ppArtifactId string
2013-06-19 00:54:33 -04:00
ppUi packer.Ui
2013-06-18 16:44:57 -04:00
}
func (pp *TestPostProcessor) Configure(v ...interface{}) error {
2013-06-18 16:44:57 -04:00
pp.configCalled = true
pp.configVal = v
return nil
}
func (pp *TestPostProcessor) PostProcess(ui packer.Ui, a packer.Artifact) (packer.Artifact, bool, error) {
2013-06-18 16:44:57 -04:00
pp.ppCalled = true
pp.ppArtifact = a
2013-12-09 22:07:36 -05:00
pp.ppArtifactId = a.Id()
pp.ppUi = ui
return testPostProcessorArtifact, false, nil
2013-06-18 16:44:57 -04:00
}
func TestPostProcessorRPC(t *testing.T) {
// Create the interface to test
p := new(TestPostProcessor)
// Start the server
2013-12-09 19:22:11 -05:00
client, server := testClientServer(t)
2013-12-09 17:57:18 -05:00
defer client.Close()
2013-12-09 19:22:11 -05:00
defer server.Close()
server.RegisterPostProcessor(p)
2013-12-09 17:57:18 -05:00
ppClient := client.PostProcessor()
2013-06-18 16:44:57 -04:00
// Test Configure
config := 42
2013-12-09 17:57:18 -05:00
err := ppClient.Configure(config)
2013-06-18 16:44:57 -04:00
if err != nil {
t.Fatalf("error: %s", err)
}
if !p.configCalled {
t.Fatal("config should be called")
}
if !reflect.DeepEqual(p.configVal, []interface{}{42}) {
2013-06-18 16:44:57 -04:00
t.Fatalf("unknown config value: %#v", p.configVal)
}
// Test PostProcess
a := &packer.MockArtifact{
IdValue: "ppTestId",
}
ui := new(testUi)
2013-12-09 17:57:18 -05:00
artifact, _, err := ppClient.PostProcess(ui, a)
2013-06-18 16:44:57 -04:00
if err != nil {
t.Fatalf("err: %s", err)
}
if !p.ppCalled {
t.Fatal("postprocess should be called")
}
2013-12-09 22:07:36 -05:00
if p.ppArtifactId != "ppTestId" {
t.Fatalf("unknown artifact: %s", p.ppArtifact.Id())
2013-06-18 16:44:57 -04:00
}
if artifact.Id() != "id" {
t.Fatalf("unknown artifact: %s", artifact.Id())
2013-06-18 16:44:57 -04:00
}
}
func TestPostProcessor_Implements(t *testing.T) {
var raw interface{}
raw = PostProcessor(nil)
if _, ok := raw.(packer.PostProcessor); !ok {
t.Fatal("not a postprocessor")
}
}