github.com/cloudfoundry/libcfbuildpack@v1.91.23/logger/logger_test.go (about) 1 /* 2 * Copyright 2018-2020 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package logger_test 18 19 import ( 20 "bytes" 21 "fmt" 22 "testing" 23 24 bp "github.com/buildpack/libbuildpack/logger" 25 "github.com/cloudfoundry/libcfbuildpack/logger" 26 "github.com/fatih/color" 27 "github.com/onsi/gomega" 28 "github.com/sclevine/spec" 29 "github.com/sclevine/spec/report" 30 ) 31 32 func TestLogger(t *testing.T) { 33 spec.Run(t, "Logger", func(t *testing.T, _ spec.G, it spec.S) { 34 35 g := gomega.NewWithT(t) 36 37 it("writes title with format", func() { 38 var info bytes.Buffer 39 40 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 41 logger.Title(metadata{"test-name", 1}) 42 43 g.Expect(info.String()). 44 To(gomega.Equal(fmt.Sprintf("\n%s %s\n", color.New(color.FgBlue, color.Bold).Sprint("test-name"), 45 color.New(color.FgBlue).Sprint("1")))) 46 }) 47 48 it("writes header with format", func() { 49 var info bytes.Buffer 50 51 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 52 logger.Header("test-header") 53 54 g.Expect(info.String()).To(gomega.Equal(" test-header\n")) 55 }) 56 57 it("writes header error with format", func() { 58 var info bytes.Buffer 59 60 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 61 logger.HeaderError("test-header") 62 63 g.Expect(info.String()).To(gomega.Equal(fmt.Sprintf(" %s\n", color.New(color.FgRed, color.Bold).Sprint("test-header")))) 64 }) 65 66 it("writes header warning with format", func() { 67 var info bytes.Buffer 68 69 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 70 logger.HeaderWarning("test-header") 71 72 g.Expect(info.String()).To(gomega.Equal(fmt.Sprintf(" %s\n", color.New(color.FgYellow, color.Bold).Sprint("test-header")))) 73 }) 74 75 it("writes body with format", func() { 76 var info bytes.Buffer 77 78 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 79 logger.Body("test-body-1\ntest-body-2") 80 81 g.Expect(info.String()).To(gomega.Equal(fmt.Sprintf("%s\n", color.New(color.Faint).Sprint(" test-body-1\n test-body-2")))) 82 }) 83 84 it("writes body error with format", func() { 85 var info bytes.Buffer 86 87 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 88 logger.BodyError("test-body-1\ntest-body-2") 89 90 actual := info.String() 91 expected := fmt.Sprintf("%s\n", color.New(color.Faint).Sprintf(" %s\x1b[%dm", color.New(color.FgRed, color.Bold).Sprint("test-body-1\n test-body-2"), color.Faint)) 92 g.Expect(actual).To(gomega.Equal(expected)) 93 }) 94 95 it("writes body with indent", func() { 96 logger := logger.Logger{Logger: bp.NewLogger(nil, nil)} 97 s := logger.BodyIndent("test-body-1\ntest-body-2") 98 99 g.Expect(s).To(gomega.Equal(" test-body-1\n test-body-2")) 100 }) 101 102 it("writes launch configuration", func() { 103 var info bytes.Buffer 104 105 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 106 logger.LaunchConfiguration("test-message", "test-default") 107 108 g.Expect(info.String()).To(gomega.Equal(fmt.Sprintf("%s\n", color.New(color.Faint).Sprintf(" test-message. Default %s\x1b[%dm", color.New(color.Italic).Sprint("test-default"), color.Faint)))) 109 }) 110 111 it("writes body warning with format", func() { 112 var info bytes.Buffer 113 114 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 115 logger.BodyWarning("test-body-1\ntest-body-2") 116 117 actual := info.String() 118 expected := fmt.Sprintf("%s\n", color.New(color.Faint).Sprintf(" %s\x1b[%dm", color.New(color.FgYellow, color.Bold).Sprint("test-body-1\n test-body-2"), color.Faint)) 119 g.Expect(actual).To(gomega.Equal(expected)) 120 }) 121 122 it("writes terminal error with format", func() { 123 var info bytes.Buffer 124 125 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 126 logger.TerminalError(metadata{"test-name", 1}, "test-error") 127 128 g.Expect(info.String()). 129 To(gomega.Equal(fmt.Sprintf("\n%s %s\n %s\n", color.New(color.FgRed, color.Bold).Sprint("test-name"), 130 color.New(color.FgRed).Sprint("1"), color.New(color.FgRed, color.Bold).Sprint("test-error")))) 131 }) 132 133 it("writes eye catcher on first line", func() { 134 var info bytes.Buffer 135 136 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 137 logger.FirstLine("test %s", "message") 138 139 g.Expect(info.String()).To(gomega.Equal(fmt.Sprintf("%s test message\n", color.New(color.FgRed, color.Bold).Sprint("----->")))) 140 }) 141 142 it("writes eye catcher on warning", func() { 143 var info bytes.Buffer 144 145 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 146 logger.Warning("test %s", "message") 147 148 g.Expect(info.String()).To(gomega.Equal(fmt.Sprintf("%s test message\n", color.New(color.FgYellow, color.Bold).Sprint("----->")))) 149 }) 150 151 it("writes eye catcher on error", func() { 152 var info bytes.Buffer 153 154 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 155 logger.Error("test %s", "message") 156 157 g.Expect(info.String()).To(gomega.Equal(fmt.Sprintf("%s test message\n", color.New(color.FgRed, color.Bold).Sprint("----->")))) 158 }) 159 160 it("writes indent on second line", func() { 161 var info bytes.Buffer 162 163 logger := logger.Logger{Logger: bp.NewLogger(nil, &info)} 164 logger.SubsequentLine("test %s", "message") 165 166 g.Expect(info.String()).To(gomega.Equal(" test message\n")) 167 }) 168 }, spec.Report(report.Terminal{})) 169 } 170 171 type metadata struct { 172 Alpha string 173 Bravo int 174 } 175 176 func (m metadata) Identity() (string, string) { 177 return m.Alpha, fmt.Sprintf("%d", m.Bravo) 178 }