github.com/nak3/source-to-image@v1.1.10-0.20180319140719-2ed55639898d/pkg/build/strategies/sti/usage_test.go (about) 1 package sti 2 3 import ( 4 "fmt" 5 "reflect" 6 "testing" 7 8 "github.com/openshift/source-to-image/pkg/api" 9 ) 10 11 type FakeUsageHandler struct { 12 cleanupCalled bool 13 setupRequired []string 14 setupOptional []string 15 setupError error 16 executeCommand string 17 executeUser string 18 executeError error 19 } 20 21 type FakeCleaner struct { 22 cleanupCalled bool 23 } 24 25 func (f *FakeCleaner) Cleanup(*api.Config) { 26 f.cleanupCalled = true 27 } 28 29 func (f *FakeUsageHandler) Prepare(*api.Config) error { 30 return f.setupError 31 } 32 33 func (f *FakeUsageHandler) SetScripts(r, o []string) { 34 f.setupRequired = r 35 f.setupOptional = o 36 } 37 38 func (f *FakeUsageHandler) Execute(command string, user string, r *api.Config) error { 39 f.executeCommand = command 40 f.executeUser = user 41 return f.executeError 42 } 43 44 func (f *FakeUsageHandler) Download(*api.Config) error { 45 return nil 46 } 47 48 func newTestUsage() *Usage { 49 return &Usage{ 50 handler: &FakeUsageHandler{}, 51 } 52 } 53 54 func TestUsage(t *testing.T) { 55 u := newTestUsage() 56 g := &FakeCleaner{} 57 u.garbage = g 58 fh := u.handler.(*FakeUsageHandler) 59 err := u.Show() 60 if err != nil { 61 t.Errorf("Unexpected error returned from Usage: %v", err) 62 } 63 if !reflect.DeepEqual(fh.setupOptional, []string{}) { 64 t.Errorf("setup called with unexpected optional scripts: %#v", fh.setupOptional) 65 } 66 if !reflect.DeepEqual(fh.setupRequired, []string{api.Usage}) { 67 t.Errorf("setup called with unexpected required scripts: %#v", fh.setupRequired) 68 } 69 if fh.executeCommand != "usage" { 70 t.Errorf("execute called with unexpected command: %#v", fh.executeCommand) 71 } 72 if !g.cleanupCalled { 73 t.Errorf("cleanup was not called from usage.") 74 } 75 } 76 77 func TestUsageSetupError(t *testing.T) { 78 u := newTestUsage() 79 u.garbage = &FakeCleaner{} 80 fh := u.handler.(*FakeUsageHandler) 81 fh.setupError = fmt.Errorf("setup error") 82 err := u.Show() 83 if err != fh.setupError { 84 t.Errorf("Unexpected error returned from Usage: %v", err) 85 } 86 if fh.executeCommand != "" { 87 t.Errorf("Execute called when there was a setup error.") 88 } 89 } 90 91 func TestUsageExecuteError(t *testing.T) { 92 u := newTestUsage() 93 u.garbage = &FakeCleaner{} 94 fh := u.handler.(*FakeUsageHandler) 95 fh.executeError = fmt.Errorf("execute error") 96 err := u.Show() 97 if err != fh.executeError { 98 t.Errorf("Unexpected error returned from Usage: %v", err) 99 } 100 }