github.com/daniellockard/packer@v0.7.6-0.20141210173435-5a9390934716/packer/rpc/environment_test.go (about) 1 package rpc 2 3 import ( 4 "github.com/mitchellh/packer/packer" 5 "testing" 6 ) 7 8 var testEnvBuilder = &packer.MockBuilder{} 9 var testEnvCache = &testCache{} 10 var testEnvUi = &testUi{} 11 12 type testEnvironment struct { 13 builderCalled bool 14 builderName string 15 cliCalled bool 16 cliArgs []string 17 hookCalled bool 18 hookName string 19 ppCalled bool 20 ppName string 21 provCalled bool 22 provName string 23 uiCalled bool 24 } 25 26 func (e *testEnvironment) Builder(name string) (packer.Builder, error) { 27 e.builderCalled = true 28 e.builderName = name 29 return testEnvBuilder, nil 30 } 31 32 func (e *testEnvironment) Cache() packer.Cache { 33 return testEnvCache 34 } 35 36 func (e *testEnvironment) Cli(args []string) (int, error) { 37 e.cliCalled = true 38 e.cliArgs = args 39 return 42, nil 40 } 41 42 func (e *testEnvironment) Hook(name string) (packer.Hook, error) { 43 e.hookCalled = true 44 e.hookName = name 45 return nil, nil 46 } 47 48 func (e *testEnvironment) PostProcessor(name string) (packer.PostProcessor, error) { 49 e.ppCalled = true 50 e.ppName = name 51 return nil, nil 52 } 53 54 func (e *testEnvironment) Provisioner(name string) (packer.Provisioner, error) { 55 e.provCalled = true 56 e.provName = name 57 return nil, nil 58 } 59 60 func (e *testEnvironment) Ui() packer.Ui { 61 e.uiCalled = true 62 return testEnvUi 63 } 64 65 func TestEnvironmentRPC(t *testing.T) { 66 // Create the interface to test 67 e := &testEnvironment{} 68 69 // Start the server 70 client, server := testClientServer(t) 71 defer client.Close() 72 defer server.Close() 73 server.RegisterEnvironment(e) 74 eClient := client.Environment() 75 76 // Test Builder 77 builder, _ := eClient.Builder("foo") 78 if !e.builderCalled { 79 t.Fatal("builder should be called") 80 } 81 if e.builderName != "foo" { 82 t.Fatalf("bad: %#v", e.builderName) 83 } 84 85 builder.Prepare(nil) 86 if !testEnvBuilder.PrepareCalled { 87 t.Fatal("should be called") 88 } 89 90 // Test Cache 91 cache := eClient.Cache() 92 cache.Lock("foo") 93 if !testEnvCache.lockCalled { 94 t.Fatal("should be called") 95 } 96 97 // Test Provisioner 98 _, _ = eClient.Provisioner("foo") 99 if !e.provCalled { 100 t.Fatal("should be called") 101 } 102 if e.provName != "foo" { 103 t.Fatalf("bad: %s", e.provName) 104 } 105 106 // Test Ui 107 ui := eClient.Ui() 108 if !e.uiCalled { 109 t.Fatal("should be called") 110 } 111 112 // Test calls on the Ui 113 ui.Say("format") 114 if !testEnvUi.sayCalled { 115 t.Fatal("should be called") 116 } 117 if testEnvUi.sayMessage != "format" { 118 t.Fatalf("bad: %#v", testEnvUi.sayMessage) 119 } 120 } 121 122 func TestEnvironment_ImplementsEnvironment(t *testing.T) { 123 var _ packer.Environment = new(Environment) 124 }