Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
logger_test.go154 linesDownload Raw Back to iotest
1// Copyright 2019 The Go Authors. All rights reserved.2// Use of this source code is governed by a BSD-style3// license that can be found in the LICENSE file.4 5package iotest6 7import (8	"bytes"9	"errors"10	"fmt"11	"log"12	"strings"13	"testing"14)15 16type errWriter struct {17	err error18}19 20func (w errWriter) Write([]byte) (int, error) {21	return 0, w.err22}23 24func TestWriteLogger(t *testing.T) {25	olw := log.Writer()26	olf := log.Flags()27	olp := log.Prefix()28 29	// Revert the original log settings before we exit.30	defer func() {31		log.SetFlags(olf)32		log.SetPrefix(olp)33		log.SetOutput(olw)34	}()35 36	lOut := new(strings.Builder)37	log.SetPrefix("lw: ")38	log.SetOutput(lOut)39	log.SetFlags(0)40 41	lw := new(strings.Builder)42	wl := NewWriteLogger("write:", lw)43	if _, err := wl.Write([]byte("Hello, World!")); err != nil {44		t.Fatalf("Unexpectedly failed to write: %v", err)45	}46 47	if g, w := lw.String(), "Hello, World!"; g != w {48		t.Errorf("WriteLogger mismatch\n\tgot:  %q\n\twant: %q", g, w)49	}50	wantLogWithHex := fmt.Sprintf("lw: write: %x\n", "Hello, World!")51	if g, w := lOut.String(), wantLogWithHex; g != w {52		t.Errorf("WriteLogger mismatch\n\tgot:  %q\n\twant: %q", g, w)53	}54}55 56func TestWriteLogger_errorOnWrite(t *testing.T) {57	olw := log.Writer()58	olf := log.Flags()59	olp := log.Prefix()60 61	// Revert the original log settings before we exit.62	defer func() {63		log.SetFlags(olf)64		log.SetPrefix(olp)65		log.SetOutput(olw)66	}()67 68	lOut := new(strings.Builder)69	log.SetPrefix("lw: ")70	log.SetOutput(lOut)71	log.SetFlags(0)72 73	lw := errWriter{err: errors.New("Write Error!")}74	wl := NewWriteLogger("write:", lw)75	if _, err := wl.Write([]byte("Hello, World!")); err == nil {76		t.Fatalf("Unexpectedly succeeded to write: %v", err)77	}78 79	wantLogWithHex := fmt.Sprintf("lw: write: %x: %v\n", "", "Write Error!")80	if g, w := lOut.String(), wantLogWithHex; g != w {81		t.Errorf("WriteLogger mismatch\n\tgot:  %q\n\twant: %q", g, w)82	}83}84 85func TestReadLogger(t *testing.T) {86	olw := log.Writer()87	olf := log.Flags()88	olp := log.Prefix()89 90	// Revert the original log settings before we exit.91	defer func() {92		log.SetFlags(olf)93		log.SetPrefix(olp)94		log.SetOutput(olw)95	}()96 97	lOut := new(strings.Builder)98	log.SetPrefix("lr: ")99	log.SetOutput(lOut)100	log.SetFlags(0)101 102	data := []byte("Hello, World!")103	p := make([]byte, len(data))104	lr := bytes.NewReader(data)105	rl := NewReadLogger("read:", lr)106 107	n, err := rl.Read(p)108	if err != nil {109		t.Fatalf("Unexpectedly failed to read: %v", err)110	}111 112	if g, w := p[:n], data; !bytes.Equal(g, w) {113		t.Errorf("ReadLogger mismatch\n\tgot:  %q\n\twant: %q", g, w)114	}115 116	wantLogWithHex := fmt.Sprintf("lr: read: %x\n", "Hello, World!")117	if g, w := lOut.String(), wantLogWithHex; g != w {118		t.Errorf("ReadLogger mismatch\n\tgot:  %q\n\twant: %q", g, w)119	}120}121 122func TestReadLogger_errorOnRead(t *testing.T) {123	olw := log.Writer()124	olf := log.Flags()125	olp := log.Prefix()126 127	// Revert the original log settings before we exit.128	defer func() {129		log.SetFlags(olf)130		log.SetPrefix(olp)131		log.SetOutput(olw)132	}()133 134	lOut := new(strings.Builder)135	log.SetPrefix("lr: ")136	log.SetOutput(lOut)137	log.SetFlags(0)138 139	data := []byte("Hello, World!")140	p := make([]byte, len(data))141 142	lr := ErrReader(errors.New("io failure"))143	rl := NewReadLogger("read", lr)144	n, err := rl.Read(p)145	if err == nil {146		t.Fatalf("Unexpectedly succeeded to read: %v", err)147	}148 149	wantLogWithHex := fmt.Sprintf("lr: read %x: io failure\n", p[:n])150	if g, w := lOut.String(), wantLogWithHex; g != w {151		t.Errorf("ReadLogger mismatch\n\tgot:  %q\n\twant: %q", g, w)152	}153}154 
codekingpro/portable-devtools · Team Ai