@@ -28,12 +28,15 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
2828 workingDir string
2929 cnbDir string
3030
31- clock chronos.Clock
32- timeStamp time.Time
33- installProcess * fakes.InstallProcess
34- buffer * bytes.Buffer
35- logEmitter scribe.Emitter
36- entryResolver * fakes.EntryResolver
31+ clock chronos.Clock
32+ timeStamp time.Time
33+ buffer * bytes.Buffer
34+ logEmitter scribe.Emitter
35+
36+ entryResolver * fakes.EntryResolver
37+ installProcess * fakes.InstallProcess
38+ sitePackagesProcess * fakes.SitePackagesProcess
39+ venvDirLocator * fakes.VenvDirLocator
3740
3841 build packit.BuildFunc
3942 )
@@ -49,8 +52,13 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
4952 cnbDir , err = ioutil .TempDir ("" , "cnb" )
5053 Expect (err ).NotTo (HaveOccurred ())
5154
52- installProcess = & fakes.InstallProcess {}
5355 entryResolver = & fakes.EntryResolver {}
56+ installProcess = & fakes.InstallProcess {}
57+ sitePackagesProcess = & fakes.SitePackagesProcess {}
58+ venvDirLocator = & fakes.VenvDirLocator {}
59+
60+ sitePackagesProcess .ExecuteCall .Returns .SitePackagesPath = "some-site-packages-path"
61+ venvDirLocator .LocateVenvDirCall .Returns .VenvDir = "some-venv-dir"
5462
5563 buffer = bytes .NewBuffer (nil )
5664 logEmitter = scribe .NewEmitter (buffer )
@@ -60,7 +68,7 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
6068 return timeStamp
6169 })
6270
63- build = pipenvinstall .Build (entryResolver , installProcess , clock , logEmitter )
71+ build = pipenvinstall .Build (entryResolver , installProcess , sitePackagesProcess , venvDirLocator , clock , logEmitter )
6472 })
6573
6674 it .After (func () {
@@ -79,7 +87,7 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
7987 Plan : packit.BuildpackPlan {
8088 Entries : []packit.BuildpackPlanEntry {
8189 {
82- Name : pipenvinstall . SitePackages ,
90+ Name : "site-packages" ,
8391 },
8492 },
8593 },
@@ -92,9 +100,14 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
92100 Expect (result ).To (Equal (packit.BuildResult {
93101 Layers : []packit.Layer {
94102 {
95- Name : pipenvinstall .PackagesLayerName ,
96- Path : filepath .Join (layersDir , pipenvinstall .PackagesLayerName ),
97- SharedEnv : packit.Environment {},
103+ Name : "packages" ,
104+ Path : filepath .Join (layersDir , "packages" ),
105+ SharedEnv : packit.Environment {
106+ "PATH.delim" : ":" ,
107+ "PATH.prepend" : filepath .Join ("some-venv-dir" , "bin" ),
108+ "PYTHONPATH.delim" : ":" ,
109+ "PYTHONPATH.prepend" : "some-site-packages-path" ,
110+ },
98111 BuildEnv : packit.Environment {},
99112 LaunchEnv : packit.Environment {},
100113 ProcessLaunchEnv : map [string ]packit.Environment {},
@@ -110,12 +123,12 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
110123 }))
111124
112125 Expect (installProcess .ExecuteCall .Receives .WorkingDir ).To (Equal (workingDir ))
113- Expect (installProcess .ExecuteCall .Receives .TargetLayer .Path ).To (Equal (filepath .Join (layersDir , pipenvinstall . PackagesLayerName )))
114- Expect (installProcess .ExecuteCall .Receives .CacheLayer .Path ).To (Equal (filepath .Join (layersDir , pipenvinstall . CacheLayerName )))
126+ Expect (installProcess .ExecuteCall .Receives .TargetLayer .Path ).To (Equal (filepath .Join (layersDir , "packages" )))
127+ Expect (installProcess .ExecuteCall .Receives .CacheLayer .Path ).To (Equal (filepath .Join (layersDir , "cache" )))
115128
116- Expect (entryResolver .MergeLayerTypesCall .Receives .Name ).To (Equal (pipenvinstall . SitePackages ))
129+ Expect (entryResolver .MergeLayerTypesCall .Receives .Name ).To (Equal ("site-packages" ))
117130 Expect (entryResolver .MergeLayerTypesCall .Receives .Entries ).To (Equal ([]packit.BuildpackPlanEntry {
118- {Name : pipenvinstall . SitePackages },
131+ {Name : "site-packages" },
119132 }))
120133
121134 Expect (buffer .String ()).To (ContainSubstring ("Some Buildpack some-version" ))
@@ -139,7 +152,7 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
139152 Plan : packit.BuildpackPlan {
140153 Entries : []packit.BuildpackPlanEntry {
141154 {
142- Name : pipenvinstall . SitePackages ,
155+ Name : "site-packages" ,
143156 },
144157 },
145158 },
@@ -152,9 +165,14 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
152165 Expect (result ).To (Equal (packit.BuildResult {
153166 Layers : []packit.Layer {
154167 {
155- Name : pipenvinstall .PackagesLayerName ,
156- Path : filepath .Join (layersDir , pipenvinstall .PackagesLayerName ),
157- SharedEnv : packit.Environment {},
168+ Name : "packages" ,
169+ Path : filepath .Join (layersDir , "packages" ),
170+ SharedEnv : packit.Environment {
171+ "PATH.delim" : ":" ,
172+ "PATH.prepend" : filepath .Join ("some-venv-dir" , "bin" ),
173+ "PYTHONPATH.delim" : ":" ,
174+ "PYTHONPATH.prepend" : "some-site-packages-path" ,
175+ },
158176 BuildEnv : packit.Environment {},
159177 LaunchEnv : packit.Environment {},
160178 ProcessLaunchEnv : map [string ]packit.Environment {},
@@ -195,7 +213,7 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
195213 Plan : packit.BuildpackPlan {
196214 Entries : []packit.BuildpackPlanEntry {
197215 {
198- Name : pipenvinstall . SitePackages ,
216+ Name : "site-packages" ,
199217 },
200218 },
201219 },
@@ -208,9 +226,15 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
208226 Expect (result ).To (Equal (packit.BuildResult {
209227 Layers : []packit.Layer {
210228 {
211- Name : pipenvinstall .PackagesLayerName ,
212- Path : filepath .Join (layersDir , pipenvinstall .PackagesLayerName ),
213- SharedEnv : packit.Environment {},
229+ Name : "packages" ,
230+ Path : filepath .Join (layersDir , "packages" ),
231+ SharedEnv : packit.Environment {
232+ "PATH.delim" : ":" ,
233+ "PATH.prepend" : filepath .Join ("some-venv-dir" , "bin" ),
234+ "PYTHONPATH.delim" : ":" ,
235+ "PYTHONPATH.prepend" : "some-site-packages-path" ,
236+ },
237+
214238 BuildEnv : packit.Environment {},
215239 LaunchEnv : packit.Environment {},
216240 ProcessLaunchEnv : map [string ]packit.Environment {},
@@ -223,8 +247,8 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
223247 },
224248 },
225249 {
226- Name : pipenvinstall . CacheLayerName ,
227- Path : filepath .Join (layersDir , pipenvinstall . CacheLayerName ),
250+ Name : "cache" ,
251+ Path : filepath .Join (layersDir , "cache" ),
228252 SharedEnv : packit.Environment {},
229253 BuildEnv : packit.Environment {},
230254 LaunchEnv : packit.Environment {},
@@ -296,5 +320,59 @@ func testBuild(t *testing.T, context spec.G, it spec.S) {
296320 Expect (err ).To (MatchError (ContainSubstring ("some-error" )))
297321 })
298322 })
323+
324+ context ("when venv directory locator returns an error" , func () {
325+ it .Before (func () {
326+ venvDirLocator .LocateVenvDirCall .Returns .Err = errors .New ("some-venv-error" )
327+ })
328+
329+ it ("returns an error" , func () {
330+ _ , err := build (packit.BuildContext {
331+ WorkingDir : workingDir ,
332+ CNBPath : cnbDir ,
333+ Stack : "some-stack" ,
334+ BuildpackInfo : packit.BuildpackInfo {
335+ Name : "Some Buildpack" ,
336+ Version : "some-version" ,
337+ },
338+ Plan : packit.BuildpackPlan {
339+ Entries : []packit.BuildpackPlanEntry {
340+ {
341+ Name : "site-packages" ,
342+ },
343+ },
344+ },
345+ Layers : packit.Layers {Path : layersDir },
346+ })
347+ Expect (err ).To (MatchError (ContainSubstring ("some-venv-error" )))
348+ })
349+ })
350+
351+ context ("when site packages process locator returns an error" , func () {
352+ it .Before (func () {
353+ sitePackagesProcess .ExecuteCall .Returns .Err = errors .New ("some-site-error" )
354+ })
355+
356+ it ("returns an error" , func () {
357+ _ , err := build (packit.BuildContext {
358+ WorkingDir : workingDir ,
359+ CNBPath : cnbDir ,
360+ Stack : "some-stack" ,
361+ BuildpackInfo : packit.BuildpackInfo {
362+ Name : "Some Buildpack" ,
363+ Version : "some-version" ,
364+ },
365+ Plan : packit.BuildpackPlan {
366+ Entries : []packit.BuildpackPlanEntry {
367+ {
368+ Name : "site-packages" ,
369+ },
370+ },
371+ },
372+ Layers : packit.Layers {Path : layersDir },
373+ })
374+ Expect (err ).To (MatchError (ContainSubstring ("some-site-error" )))
375+ })
376+ })
299377 })
300378}
0 commit comments