github.com/swisscom/cloudfoundry-cli@v7.1.0+incompatible/cf/terminal/tee_printer_test.go (about)

     1  package terminal_test
     2  
     3  import (
     4  	"os"
     5  
     6  	. "code.cloudfoundry.org/cli/cf/terminal"
     7  
     8  	io_helpers "code.cloudfoundry.org/cli/cf/util/testhelpers/io"
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  	"github.com/onsi/gomega/gbytes"
    12  )
    13  
    14  var _ = Describe("TeePrinter", func() {
    15  	var (
    16  		output  []string
    17  		printer *TeePrinter
    18  	)
    19  
    20  	Describe(".Print", func() {
    21  		var bucket *gbytes.Buffer
    22  
    23  		BeforeEach(func() {
    24  			bucket = gbytes.NewBuffer()
    25  
    26  			output = io_helpers.CaptureOutput(func() {
    27  				printer = NewTeePrinter(os.Stdout)
    28  				printer.SetOutputBucket(bucket)
    29  				printer.Print("Hello ")
    30  				printer.Print("Mom!")
    31  			})
    32  		})
    33  
    34  		It("should delegate to fmt.Print", func() {
    35  			Expect(output[0]).To(Equal("Hello Mom!"))
    36  		})
    37  
    38  		It("should save the output to the slice", func() {
    39  			Expect(bucket).To(gbytes.Say("Hello "))
    40  			Expect(bucket).To(gbytes.Say("Mom!"))
    41  		})
    42  
    43  		It("should decolorize text", func() {
    44  			io_helpers.CaptureOutput(func() {
    45  				printer = NewTeePrinter(os.Stdout)
    46  				printer.SetOutputBucket(bucket)
    47  				printer.Print("hi " + EntityNameColor("foo"))
    48  			})
    49  
    50  			Expect(bucket).To(gbytes.Say("hi foo"))
    51  		})
    52  	})
    53  
    54  	Describe(".Printf", func() {
    55  		var bucket *gbytes.Buffer
    56  
    57  		BeforeEach(func() {
    58  			bucket = gbytes.NewBuffer()
    59  
    60  			output = io_helpers.CaptureOutput(func() {
    61  				printer = NewTeePrinter(os.Stdout)
    62  				printer.SetOutputBucket(bucket)
    63  				printer.Printf("Hello %s", "everybody")
    64  			})
    65  		})
    66  
    67  		It("should delegate to fmt.Printf", func() {
    68  			Expect(output[0]).To(Equal("Hello everybody"))
    69  		})
    70  
    71  		It("should save the output to the slice", func() {
    72  			Expect(bucket).To(gbytes.Say("Hello everybody"))
    73  		})
    74  
    75  		It("should decolorize text", func() {
    76  			io_helpers.CaptureOutput(func() {
    77  				printer = NewTeePrinter(os.Stdout)
    78  				printer.SetOutputBucket(bucket)
    79  				printer.Printf("hi %s", EntityNameColor("foo"))
    80  			})
    81  
    82  			Expect(bucket).To(gbytes.Say("hi foo"))
    83  		})
    84  	})
    85  
    86  	Describe(".Println", func() {
    87  		var bucket *gbytes.Buffer
    88  		BeforeEach(func() {
    89  			bucket = gbytes.NewBuffer()
    90  
    91  			output = io_helpers.CaptureOutput(func() {
    92  				printer = NewTeePrinter(os.Stdout)
    93  				printer.SetOutputBucket(bucket)
    94  				printer.Println("Hello ", "everybody")
    95  			})
    96  		})
    97  
    98  		It("should delegate to fmt.Printf", func() {
    99  			Expect(output[0]).To(Equal("Hello everybody"))
   100  		})
   101  
   102  		It("should save the output to the slice", func() {
   103  			Expect(bucket).To(gbytes.Say("Hello everybody"))
   104  		})
   105  
   106  		It("should decolorize text", func() {
   107  			io_helpers.CaptureOutput(func() {
   108  				printer = NewTeePrinter(os.Stdout)
   109  				printer.SetOutputBucket(bucket)
   110  				printer.Println("hi " + EntityNameColor("foo"))
   111  			})
   112  
   113  			Expect(bucket).To(gbytes.Say("hi foo"))
   114  		})
   115  	})
   116  
   117  	Describe(".SetOutputBucket", func() {
   118  		It("sets the []string used to save the output", func() {
   119  			bucket := gbytes.NewBuffer()
   120  
   121  			output := io_helpers.CaptureOutput(func() {
   122  				printer = NewTeePrinter(os.Stdout)
   123  				printer.SetOutputBucket(bucket)
   124  				printer.Printf("Hello %s", "everybody")
   125  			})
   126  
   127  			Expect(bucket).To(gbytes.Say("Hello everybody"))
   128  			Expect(output).To(ContainElement("Hello everybody"))
   129  		})
   130  
   131  		It("disables the output saving when set to nil", func() {
   132  			output := io_helpers.CaptureOutput(func() {
   133  				printer = NewTeePrinter(os.Stdout)
   134  				printer.SetOutputBucket(nil)
   135  				printer.Printf("Hello %s", "everybody")
   136  			})
   137  			Expect(output).To(ContainElement("Hello everybody"))
   138  		})
   139  	})
   140  })