forked from buildpacks/pack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_test.go
112 lines (95 loc) · 2.83 KB
/
run_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package pack_test
import (
"bytes"
"context"
"crypto/md5"
"fmt"
"math/rand"
"path/filepath"
"reflect"
"testing"
"time"
"github.com/fatih/color"
"github.com/golang/mock/gomock"
"github.com/sclevine/spec"
"github.com/sclevine/spec/report"
"github.com/buildpack/pack"
"github.com/buildpack/pack/config"
"github.com/buildpack/pack/logging"
"github.com/buildpack/pack/mocks"
h "github.com/buildpack/pack/testhelpers"
)
func TestRun(t *testing.T) {
color.NoColor = true
rand.Seed(time.Now().UTC().UnixNano())
spec.Run(t, "run", testRun, spec.Parallel(), spec.Report(report.Terminal{}))
}
func testRun(t *testing.T, when spec.G, it spec.S) {
var (
outBuf bytes.Buffer
errBuf bytes.Buffer
logger *logging.Logger
mockController *gomock.Controller
)
it.Before(func() {
mockController = gomock.NewController(t)
logger = logging.NewLogger(&outBuf, &errBuf, true, false)
})
it.After(func() {
mockController.Finish()
})
when("#RunConfigFromFlags", func() {
var (
mockController *gomock.Controller
factory *pack.BuildFactory
MockImageFetcher *mocks.MockImageFetcher
mockCache *mocks.MockCache
)
it.Before(func() {
mockController = gomock.NewController(t)
MockImageFetcher = mocks.NewMockImageFetcher(mockController)
mockCache = mocks.NewMockCache(mockController)
factory = &pack.BuildFactory{
Logger: logger,
Fetcher: MockImageFetcher,
Cache: mockCache,
Config: &config.Config{},
}
mockCache.EXPECT().Image().Return("some-volume").AnyTimes()
})
it.After(func() {
mockController.Finish()
})
it("creates args RunConfig derived from args BuildConfig", func() {
mockBuilderImage := mocks.NewMockImage(mockController)
MockImageFetcher.EXPECT().Fetch(gomock.Any(), "some/builder", true, true).Return(mockBuilderImage, nil)
mockRunImage := mocks.NewMockImage(mockController)
MockImageFetcher.EXPECT().Fetch(gomock.Any(), "some/run", true, true).Return(mockRunImage, nil)
run, err := factory.RunConfigFromFlags(context.TODO(), &pack.RunFlags{
BuildFlags: pack.BuildFlags{
AppDir: "acceptance/testdata/node_app",
Builder: "some/builder",
RunImage: "some/run",
},
Ports: []string{"1370"},
})
h.AssertNil(t, err)
absAppDir, _ := filepath.Abs("acceptance/testdata/node_app")
absAppDirMd5 := fmt.Sprintf("pack.local/run/%x", md5.Sum([]byte(absAppDir)))
h.AssertEq(t, run.RepoName, absAppDirMd5)
h.AssertEq(t, run.Ports, []string{"1370"})
build, ok := run.Build.(*pack.BuildConfig)
h.AssertEq(t, ok, true)
for _, field := range []string{
"RepoName",
"Logger",
} {
h.AssertSameInstance(
t,
reflect.Indirect(reflect.ValueOf(run)).FieldByName(field).Interface(),
reflect.Indirect(reflect.ValueOf(build)).FieldByName(field).Interface(),
)
}
})
})
}