code.cloudfoundry.org/cli@v7.1.0+incompatible/cf/net/progress_reader_test.go (about) 1 // +build windows 2 3 package net_test 4 5 import ( 6 "os" 7 "time" 8 9 . "code.cloudfoundry.org/cli/cf/net" 10 "code.cloudfoundry.org/cli/cf/terminal/terminalfakes" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("ProgressReader", func() { 16 var ( 17 testFile *os.File 18 err error 19 progressReader *ProgressReader 20 ui *terminalfakes.FakeUI 21 b []byte 22 fileStat os.FileInfo 23 ) 24 25 BeforeEach(func() { 26 ui = new(terminalfakes.FakeUI) 27 28 testFile, err = os.Open("../../fixtures/test.file") 29 Expect(err).NotTo(HaveOccurred()) 30 31 fileStat, err = testFile.Stat() 32 Expect(err).NotTo(HaveOccurred()) 33 34 b = make([]byte, 1024) 35 progressReader = NewProgressReader(testFile, ui, 1*time.Millisecond) 36 progressReader.SetTotalSize(fileStat.Size()) 37 }) 38 39 It("prints progress while content is being read", func() { 40 for { 41 time.Sleep(50 * time.Microsecond) 42 _, err := progressReader.Read(b) 43 if err != nil { 44 break 45 } 46 } 47 48 Expect(ui.SayCallCount()).To(Equal(1)) 49 Expect(ui.SayArgsForCall(0)).To(ContainSubstring("\rDone ")) 50 51 Expect(ui.PrintCapturingNoOutputCallCount()).To(BeNumerically(">", 0)) 52 status, _ := ui.PrintCapturingNoOutputArgsForCall(0) 53 Expect(status).To(ContainSubstring("uploaded...")) 54 status, _ = ui.PrintCapturingNoOutputArgsForCall(ui.PrintCapturingNoOutputCallCount() - 1) 55 Expect(status).To(Equal("\r ")) 56 }) 57 58 It("reads the correct number of bytes", func() { 59 bytesRead := 0 60 61 for { 62 n, err := progressReader.Read(b) 63 if err != nil { 64 break 65 } 66 67 bytesRead += n 68 } 69 70 Expect(int64(bytesRead)).To(Equal(fileStat.Size())) 71 }) 72 })