github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/pkg/logging/logging_test.go (about) 1 package logging_test 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/heroku/color" 8 "github.com/sclevine/spec" 9 "github.com/sclevine/spec/report" 10 11 "github.com/buildpacks/pack/pkg/logging" 12 h "github.com/buildpacks/pack/testhelpers" 13 ) 14 15 func TestLogging(t *testing.T) { 16 color.Disable(true) 17 defer color.Disable(false) 18 spec.Run(t, "Logging", testLogging, spec.Parallel(), spec.Report(report.Terminal{})) 19 } 20 21 func testLogging(t *testing.T, when spec.G, it spec.S) { 22 when("#GetWriterForLevel", func() { 23 when("isSelectableWriter", func() { 24 it("returns Logger for appropriate level", func() { 25 outCons, output := h.MockWriterAndOutput() 26 errCons, errOutput := h.MockWriterAndOutput() 27 logger := logging.NewLogWithWriters(outCons, errCons) 28 29 infoLogger := logging.GetWriterForLevel(logger, logging.InfoLevel) 30 _, _ = infoLogger.Write([]byte("info test")) 31 h.AssertEq(t, output(), "info test") 32 33 errorLogger := logging.GetWriterForLevel(logger, logging.ErrorLevel) 34 _, _ = errorLogger.Write([]byte("error test")) 35 h.AssertEq(t, errOutput(), "error test") 36 }) 37 }) 38 39 when("doesn't implement isSelectableWriter", func() { 40 it("returns one Writer for all levels", func() { 41 var w bytes.Buffer 42 logger := logging.NewSimpleLogger(&w) 43 writer := logging.GetWriterForLevel(logger, logging.InfoLevel) 44 _, _ = writer.Write([]byte("info test\n")) 45 h.AssertEq(t, w.String(), "info test\n") 46 47 writer = logging.GetWriterForLevel(logger, logging.ErrorLevel) 48 _, _ = writer.Write([]byte("error test\n")) 49 h.AssertEq(t, w.String(), "info test\nerror test\n") 50 }) 51 }) 52 }) 53 54 when("IsQuiet", func() { 55 when("implements isSelectableWriter", func() { 56 it("return true for quiet mode", func() { 57 var w bytes.Buffer 58 logger := logging.NewLogWithWriters(&w, &w) 59 h.AssertEq(t, logging.IsQuiet(logger), false) 60 61 logger.WantQuiet(true) 62 h.AssertEq(t, logging.IsQuiet(logger), true) 63 }) 64 }) 65 66 when("doesn't implement isSelectableWriter", func() { 67 it("always returns false", func() { 68 var w bytes.Buffer 69 logger := logging.NewSimpleLogger(&w) 70 h.AssertEq(t, logging.IsQuiet(logger), false) 71 }) 72 }) 73 }) 74 75 when("#Tip", func() { 76 it("prepends `Tip:` to string", func() { 77 var w bytes.Buffer 78 logger := logging.NewSimpleLogger(&w) 79 logging.Tip(logger, "test") 80 h.AssertContains(t, w.String(), "Tip: "+"test") 81 }) 82 }) 83 }