11package integration_test
22
33import (
4- "bytes "
5- "fmt "
4+ "encoding/json "
5+ "os "
66 "path/filepath"
7- "strings"
87 "testing"
98 "time"
109
11- "github.com/cloudfoundry/dagger"
12- "github.com/paketo-buildpacks/packit/pexec"
10+ "github.com/paketo-buildpacks/occam"
1311 "github.com/sclevine/spec"
1412 "github.com/sclevine/spec/report"
1513
1614 . "github.com/onsi/gomega"
1715)
1816
19- var (
20- rackupBuildpack string
21- mriBuildpack string
22- bundlerBuildpack string
23- bundleInstallBuildpack string
24- )
17+ var settings struct {
18+ Buildpacks struct {
19+ Rackup struct {
20+ Online string
21+ }
22+ MRI struct {
23+ Online string
24+ }
25+ Bundler struct {
26+ Online string
27+ }
28+ BundleInstall struct {
29+ Online string
30+ }
31+ }
32+
33+ Config struct {
34+ MRI string `json:"mri"`
35+ Bundler string `json:"bundler"`
36+ BundleInstall string `json:"bundle-install"`
37+ }
38+ }
2539
2640func TestIntegration (t * testing.T ) {
2741 Expect := NewWithT (t ).Expect
2842
29- root , err := filepath . Abs ("./.. " )
43+ file , err := os . Open ("../integration.json " )
3044 Expect (err ).NotTo (HaveOccurred ())
3145
32- rackupBuildpack , err = dagger .PackageBuildpack (root )
46+ Expect (json .NewDecoder (file ).Decode (& settings .Config )).To (Succeed ())
47+ Expect (file .Close ()).To (Succeed ())
48+
49+ root , err := filepath .Abs ("./.." )
3350 Expect (err ).NotTo (HaveOccurred ())
3451
35- // HACK: we need to fix dagger and the package.sh scripts so that this isn't required
36- rackupBuildpack = fmt .Sprintf ("%s.tgz" , rackupBuildpack )
52+ buildpackStore := occam .NewBuildpackStore ()
53+
54+ settings .Buildpacks .Rackup .Online , err = buildpackStore .Get .
55+ WithVersion ("1.2.3" ).
56+ Execute (root )
57+ Expect (err ).NotTo (HaveOccurred ())
3758
38- mriBuildpack , err = dagger .GetLatestCommunityBuildpack ("paketo-community" , "mri" )
59+ settings .Buildpacks .MRI .Online , err = buildpackStore .Get .
60+ Execute (settings .Config .MRI )
3961 Expect (err ).NotTo (HaveOccurred ())
4062
41- bundlerBuildpack , err = dagger .GetLatestCommunityBuildpack ("paketo-community" , "bundler" )
63+ settings .Buildpacks .Bundler .Online , err = buildpackStore .Get .
64+ Execute (settings .Config .Bundler )
4265 Expect (err ).NotTo (HaveOccurred ())
4366
44- bundleInstallBuildpack , err = dagger .GetLatestCommunityBuildpack ("paketo-community" , "bundle-install" )
67+ settings .Buildpacks .BundleInstall .Online , err = buildpackStore .Get .
68+ Execute (settings .Config .BundleInstall )
4569 Expect (err ).NotTo (HaveOccurred ())
4670
4771 SetDefaultEventuallyTimeout (10 * time .Second )
@@ -50,44 +74,5 @@ func TestIntegration(t *testing.T) {
5074 suite ("SimpleApp" , testSimpleApp )
5175 suite ("SinatraApp" , testSinatraApp )
5276
53- defer AfterSuite (t )
5477 suite .Run (t )
5578}
56-
57- func AfterSuite (t * testing.T ) {
58- var Expect = NewWithT (t ).Expect
59-
60- Expect (dagger .DeleteBuildpack (rackupBuildpack )).To (Succeed ())
61- Expect (dagger .DeleteBuildpack (mriBuildpack )).To (Succeed ())
62- Expect (dagger .DeleteBuildpack (bundlerBuildpack )).To (Succeed ())
63- Expect (dagger .DeleteBuildpack (bundleInstallBuildpack )).To (Succeed ())
64- }
65-
66- func GetGitVersion () (string , error ) {
67- gitExec := pexec .NewExecutable ("git" )
68- revListOut := bytes .NewBuffer (nil )
69-
70- err := gitExec .Execute (pexec.Execution {
71- Args : []string {"rev-list" , "--tags" , "--max-count=1" },
72- Stdout : revListOut ,
73- })
74-
75- if revListOut .String () == "" {
76- return "0.0.0" , nil
77- }
78-
79- if err != nil {
80- return "" , err
81- }
82-
83- stdout := bytes .NewBuffer (nil )
84- err = gitExec .Execute (pexec.Execution {
85- Args : []string {"describe" , "--tags" , strings .TrimSpace (revListOut .String ())},
86- Stdout : stdout ,
87- })
88- if err != nil {
89- return "" , err
90- }
91-
92- return strings .TrimSpace (strings .TrimPrefix (stdout .String (), "v" )), nil
93- }
0 commit comments