github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/testlib/assertions.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package testlib
     5  
     6  import (
     7  	"bytes"
     8  	"encoding/json"
     9  	"io"
    10  	"testing"
    11  )
    12  
    13  // AssertLog asserts that a JSON-encoded buffer of logs contains one with the given level and message.
    14  func AssertLog(t *testing.T, logs *bytes.Buffer, level, message string) {
    15  	dec := json.NewDecoder(logs)
    16  	for {
    17  		var log struct {
    18  			Level string
    19  			Msg   string
    20  		}
    21  		if err := dec.Decode(&log); err == io.EOF {
    22  			break
    23  		} else if err != nil {
    24  			continue
    25  		}
    26  
    27  		if log.Level == level && log.Msg == message {
    28  			return
    29  		}
    30  	}
    31  
    32  	t.Fatalf("failed to find %s log message: %s", level, message)
    33  }
    34  
    35  // AssertNoLog asserts that a JSON-encoded buffer of logs does not contains one with the given level and message.
    36  func AssertNoLog(t *testing.T, logs *bytes.Buffer, level, message string) {
    37  	dec := json.NewDecoder(logs)
    38  	for {
    39  		var log struct {
    40  			Level string
    41  			Msg   string
    42  		}
    43  		if err := dec.Decode(&log); err == io.EOF {
    44  			break
    45  		} else if err != nil {
    46  			continue
    47  		}
    48  
    49  		if log.Level == level && log.Msg == message {
    50  			t.Fatalf("found %s log message: %s", level, message)
    51  			return
    52  		}
    53  	}
    54  }