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