github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/actor/v3action/v3action_suite_test.go (about) 1 package v3action_test 2 3 import ( 4 "archive/zip" 5 "io" 6 "os" 7 "path/filepath" 8 "strings" 9 10 . "code.cloudfoundry.org/cli/actor/v3action" 11 "code.cloudfoundry.org/cli/actor/v3action/v3actionfakes" 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 log "github.com/sirupsen/logrus" 15 16 "testing" 17 ) 18 19 func TestV3Action(t *testing.T) { 20 RegisterFailHandler(Fail) 21 RunSpecs(t, "V3 Actions Suite") 22 } 23 24 var _ = BeforeEach(func() { 25 log.SetLevel(log.PanicLevel) 26 }) 27 28 func NewTestActor() (*Actor, *v3actionfakes.FakeCloudControllerClient, *v3actionfakes.FakeConfig, *v3actionfakes.FakeSharedActor, *v3actionfakes.FakeUAAClient) { 29 fakeCloudControllerClient := new(v3actionfakes.FakeCloudControllerClient) 30 fakeConfig := new(v3actionfakes.FakeConfig) 31 fakeSharedActor := new(v3actionfakes.FakeSharedActor) 32 fakeUAAClient := new(v3actionfakes.FakeUAAClient) 33 actor := NewActor(fakeCloudControllerClient, fakeConfig, fakeSharedActor, fakeUAAClient) 34 35 return actor, fakeCloudControllerClient, fakeConfig, fakeSharedActor, fakeUAAClient 36 } 37 38 // Thanks to Svett Ralchev 39 // http://blog.ralch.com/tutorial/golang-working-with-zip/ 40 func zipit(source, target, prefix string) error { 41 zipfile, err := os.Create(target) 42 if err != nil { 43 return err 44 } 45 defer zipfile.Close() 46 47 if prefix != "" { 48 _, err = io.WriteString(zipfile, prefix) 49 if err != nil { 50 return err 51 } 52 } 53 54 archive := zip.NewWriter(zipfile) 55 defer archive.Close() 56 57 err = filepath.Walk(source, func(path string, info os.FileInfo, err error) error { 58 if err != nil { 59 return err 60 } 61 62 header, err := zip.FileInfoHeader(info) 63 if err != nil { 64 return err 65 } 66 67 header.Name = strings.TrimPrefix(path, source) 68 69 if info.IsDir() { 70 header.Name += string(os.PathSeparator) 71 } else { 72 header.Method = zip.Deflate 73 } 74 75 writer, err := archive.CreateHeader(header) 76 if err != nil { 77 return err 78 } 79 80 if info.IsDir() { 81 return nil 82 } 83 84 file, err := os.Open(path) 85 if err != nil { 86 return err 87 } 88 defer file.Close() 89 90 _, err = io.Copy(writer, file) 91 return err 92 }) 93 94 return err 95 }