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  }