Skip to content

Commit d2ecf21

Browse files
committed
remove use of deprecated github.com/bmizerany/assert package
The github.com/bmizerany/assert module has been deprecated and is no longer maintained. In addition, the dependency brings various indirect dependencies with it; module github.com/fluent/fluent-logger-golang go 1.19 require ( github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 github.com/tinylib/msgp v1.1.6 ) require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/philhofer/fwd v1.1.1 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect ) The assertion package itself also looks to have some issues. For example, it's not marked as a `t.Helper()`, and while it includes the location of the error in the output, the failures are prefixed with the location of the assertion itself, which is somewhat confusing: === RUN Test_New_itShouldUseDefaultConfigValuesIfNoOtherProvided assert.go:15: /Users/thajeztah/go/src/github.com/fluent/fluent-logger-golang/fluent/fluent_test.go:275 assert.go:62: ! Unexpected: <24224> --- FAIL: Test_New_itShouldUseDefaultConfigValuesIfNoOtherProvided (0.00s) === RUN Test_New_itShouldUseUnixDomainSocketIfUnixSocketSpecified assert.go:15: /Users/thajeztah/go/src/github.com/fluent/fluent-logger-golang/fluent/fluent_test.go:306 assert.go:62: ! Unexpected: <"unix"> --- FAIL: Test_New_itShouldUseUnixDomainSocketIfUnixSocketSpecified (0.00s) === RUN Test_New_itShouldUseConfigValuesFromArguments assert.go:15: /Users/thajeztah/go/src/github.com/fluent/fluent-logger-golang/fluent/fluent_test.go:327 assert.go:62: ! Unexpected: <6666> --- FAIL: Test_New_itShouldUseConfigValuesFromArguments (0.00s) === RUN Test_New_itShouldUseConfigValuesFromMashalAsJSONArgument assert.go:15: /Users/thajeztah/go/src/github.com/fluent/fluent-logger-golang/fluent/fluent_test.go:333 assert.go:62: ! Unexpected: <true> --- FAIL: Test_New_itShouldUseConfigValuesFromMashalAsJSONArgument (0.00s) === CONT TestNoPanicOnAsyncClose/Channel_closed_before_write assert.go:15: /Users/thajeztah/go/src/github.com/fluent/fluent-logger-golang/fluent/fluent_test.go:653 === CONT TestNoPanicOnAsyncClose/Channel_not_closed_at_all assert.go:15: /Users/thajeztah/go/src/github.com/fluent/fluent-logger-golang/fluent/fluent_test.go:655 === CONT TestNoPanicOnAsyncClose/Channel_closed_before_write assert.go:62: ! Unexpected: <&errors.errorString{s:"fluent#appendBuffer: Logger already closed"}> === CONT TestNoPanicOnAsyncClose/Channel_not_closed_at_all assert.go:62: ! Unexpected: <<nil>> While a good assertion library can help (for example by printing a rich diff output if a struct does not match), a look at how it's used shows that most cases are comparing primitive types (int, string, bool). This patch swaps the library for a local `assertEqual()` utility. With this patch, test-failures look like the example below: === RUN Test_New_itShouldUseDefaultConfigValuesIfNoOtherProvided fluent_test.go:281: got: '24224', expected: '24224' fluent_test.go:282: got: '127.0.0.1', expected: '127.0.0.1' fluent_test.go:283: got: '3s', expected: '3s' fluent_test.go:284: got: '0s', expected: '0s' fluent_test.go:285: got: '8192', expected: '8192' fluent_test.go:286: got: 'tcp', expected: 'tcp' fluent_test.go:287: got: '', expected: '' --- FAIL: Test_New_itShouldUseDefaultConfigValuesIfNoOtherProvided (0.00s) === RUN Test_New_itShouldUseUnixDomainSocketIfUnixSocketSpecified fluent_test.go:312: got: 'unix', expected: 'unix' fluent_test.go:313: got: '/tmp/fluent-logger-golang.sock', expected: '/tmp/fluent-logger-golang.sock' --- FAIL: Test_New_itShouldUseUnixDomainSocketIfUnixSocketSpecified (0.00s) === RUN Test_New_itShouldUseConfigValuesFromArguments fluent_test.go:333: got: '6666', expected: '6666' fluent_test.go:334: got: 'foobarhost', expected: 'foobarhost' --- FAIL: Test_New_itShouldUseConfigValuesFromArguments (0.00s) === RUN Test_New_itShouldUseConfigValuesFromMashalAsJSONArgument fluent_test.go:339: got: 'true', expected: 'true' --- FAIL: Test_New_itShouldUseConfigValuesFromMashalAsJSONArgument (0.00s) === RUN TestJsonConfig fluent_test.go:441: got: '{FluentPort:8888 FluentHost:localhost FluentNetwork:tcp FluentSocketPath:/var/tmp/fluent.sock Timeout:3µs WriteTimeout:6µs BufferLimit:10 RetryWait:5 MaxRetry:3 MaxRetryWait:0 TagPrefix:fluent Async:false ForceStopAsyncSend:false AsyncResultCallback:<nil> AsyncConnect:false MarshalAsJSON:true AsyncReconnectInterval:0 SubSecondPrecision:false RequestAck:false TlsInsecureSkipVerify:false}', expected: '{FluentPort:8888 FluentHost:localhost FluentNetwork:tcp FluentSocketPath:/var/tmp/fluent.sock Timeout:3µs WriteTimeout:6µs BufferLimit:10 RetryWait:5 MaxRetry:3 MaxRetryWait:0 TagPrefix:fluent Async:false ForceStopAsyncSend:false AsyncResultCallback:<nil> AsyncConnect:false MarshalAsJSON:true AsyncReconnectInterval:0 SubSecondPrecision:false RequestAck:false TlsInsecureSkipVerify:false}' --- FAIL: TestJsonConfig (0.00s) === CONT TestPostWithTime/without_Async fluent_test.go:177: got: '["acme.tag_name",1482493046,{"foo":"bar"},{}]', expected: '["acme.tag_name",1482493046,{"foo":"bar"},{}]' fluent_test.go:177: got: '["acme.tag_name",1482493050,{"fluentd":"is awesome"},{}]', expected: '["acme.tag_name",1482493050,{"fluentd":"is awesome"},{}]' fluent_test.go:177: got: '["acme.tag_name",1634263200,{"welcome":"to use"},{}]', expected: '["acme.tag_name",1634263200,{"welcome":"to use"},{}]' === CONT TestPostWithTime/with_Async fluent_test.go:177: got: '["acme.tag_name",1482493046,{"foo":"bar"},{}]', expected: '["acme.tag_name",1482493046,{"foo":"bar"},{}]' fluent_test.go:177: got: '["acme.tag_name",1482493050,{"fluentd":"is awesome"},{}]', expected: '["acme.tag_name",1482493050,{"fluentd":"is awesome"},{}]' fluent_test.go:177: got: '["acme.tag_name",1634263200,{"welcome":"to use"},{}]', expected: '["acme.tag_name",1634263200,{"welcome":"to use"},{}]' === CONT TestReconnectAndResendAfterTransientFailure/with_Async fluent_test.go:177: got: '["tag_name",1482493046,{"foo":"bar"},{}]', expected: '["tag_name",1482493046,{"foo":"bar"},{}]' === CONT TestReconnectAndResendAfterTransientFailure/without_Async fluent_test.go:177: got: '["tag_name",1482493046,{"foo":"bar"},{}]', expected: '["tag_name",1482493046,{"foo":"bar"},{}]' fluent_test.go:177: got: '["tag_name",1482493050,{"fluentd":"is awesome"},{}]', expected: '["tag_name",1482493050,{"fluentd":"is awesome"},{}]' === CONT TestReconnectAndResendAfterTransientFailure/with_Async fluent_test.go:177: got: '["tag_name",1482493050,{"fluentd":"is awesome"},{}]', expected: '["tag_name",1482493050,{"fluentd":"is awesome"},{}]' === CONT TestNoPanicOnAsyncClose/Channel_closed_before_write fluent_test.go:657: got: 'fluent#appendBuffer: Logger already closed', expected: 'fluent#appendBuffer: Logger already closed' === CONT TestNoPanicOnAsyncClose/Channel_not_closed_at_all fluent_test.go:659: got: '<nil>', expected: '<nil>' The list of dependencies have also been reduced with this patch: module github.com/fluent/fluent-logger-golang go 1.19 require github.com/tinylib/msgp v1.1.6 require github.com/philhofer/fwd v1.1.1 // indirect Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent f50164e commit d2ecf21

File tree

2 files changed

+32
-24
lines changed

2 files changed

+32
-24
lines changed

.github/workflows/ci.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ jobs:
2727
run: go env -w GO111MODULE=auto
2828
- name: Install requirements
2929
run: |
30-
go get github.com/bmizerany/assert
3130
go get github.com/philhofer/fwd
3231
go get github.com/tinylib/msgp
3332
- name: Test

fluent/fluent_test.go

+32-23
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"testing"
1414
"time"
1515

16-
"github.com/bmizerany/assert"
1716
"github.com/tinylib/msgp/msgp"
1817
)
1918

@@ -162,13 +161,21 @@ func (d *testDialer) waitForNextDialing(accept bool, delayReads bool) *Conn {
162161
return conn
163162
}
164163

164+
// asserEqual asserts that actual and expected are equivalent, and otherwise
165+
// marks the test as failed (t.Error). It uses reflect.DeepEqual internally.
166+
func assertEqual(t *testing.T, actual, expected interface{}) {
167+
t.Helper()
168+
if !reflect.DeepEqual(actual, expected) {
169+
t.Errorf("got: '%+v', expected: '%+v'", actual, expected)
170+
}
171+
}
172+
165173
// assertReceived is used below by test cases to assert the content written to a *Conn
166174
// matches an expected string. This is generally used in conjunction with
167175
// Conn.waitForNextWrite().
168176
func assertReceived(t *testing.T, rcv []byte, expected string) {
169-
if string(rcv) != expected {
170-
t.Fatalf("got %s, expect %s", string(rcv), expected)
171-
}
177+
t.Helper()
178+
assertEqual(t, string(rcv), expected)
172179
}
173180

174181
// Conn extends net.Conn to add channels used to synchronise across goroutines, eg.
@@ -272,13 +279,13 @@ func (c *Conn) Close() error {
272279

273280
func Test_New_itShouldUseDefaultConfigValuesIfNoOtherProvided(t *testing.T) {
274281
f, _ := New(Config{})
275-
assert.Equal(t, f.Config.FluentPort, defaultPort)
276-
assert.Equal(t, f.Config.FluentHost, defaultHost)
277-
assert.Equal(t, f.Config.Timeout, defaultTimeout)
278-
assert.Equal(t, f.Config.WriteTimeout, defaultWriteTimeout)
279-
assert.Equal(t, f.Config.BufferLimit, defaultBufferLimit)
280-
assert.Equal(t, f.Config.FluentNetwork, defaultNetwork)
281-
assert.Equal(t, f.Config.FluentSocketPath, defaultSocketPath)
282+
assertEqual(t, f.Config.FluentPort, defaultPort)
283+
assertEqual(t, f.Config.FluentHost, defaultHost)
284+
assertEqual(t, f.Config.Timeout, defaultTimeout)
285+
assertEqual(t, f.Config.WriteTimeout, defaultWriteTimeout)
286+
assertEqual(t, f.Config.BufferLimit, defaultBufferLimit)
287+
assertEqual(t, f.Config.FluentNetwork, defaultNetwork)
288+
assertEqual(t, f.Config.FluentSocketPath, defaultSocketPath)
282289
}
283290

284291
func Test_New_itShouldUseUnixDomainSocketIfUnixSocketSpecified(t *testing.T) {
@@ -303,8 +310,8 @@ func Test_New_itShouldUseUnixDomainSocketIfUnixSocketSpecified(t *testing.T) {
303310
return
304311
}
305312
defer f.Close()
306-
assert.Equal(t, f.Config.FluentNetwork, network)
307-
assert.Equal(t, f.Config.FluentSocketPath, socketFile)
313+
assertEqual(t, f.Config.FluentNetwork, network)
314+
assertEqual(t, f.Config.FluentSocketPath, socketFile)
308315

309316
socketFile = "/tmp/fluent-logger-golang-xxx.sock"
310317
network = "unixxxx"
@@ -324,13 +331,13 @@ func Test_New_itShouldUseUnixDomainSocketIfUnixSocketSpecified(t *testing.T) {
324331

325332
func Test_New_itShouldUseConfigValuesFromArguments(t *testing.T) {
326333
f, _ := New(Config{FluentPort: 6666, FluentHost: "foobarhost"})
327-
assert.Equal(t, f.Config.FluentPort, 6666)
328-
assert.Equal(t, f.Config.FluentHost, "foobarhost")
334+
assertEqual(t, f.Config.FluentPort, 6666)
335+
assertEqual(t, f.Config.FluentHost, "foobarhost")
329336
}
330337

331338
func Test_New_itShouldUseConfigValuesFromMashalAsJSONArgument(t *testing.T) {
332339
f, _ := New(Config{MarshalAsJSON: true})
333-
assert.Equal(t, f.Config.MarshalAsJSON, true)
340+
assertEqual(t, f.Config.MarshalAsJSON, true)
334341
}
335342

336343
func Test_MarshalAsMsgpack(t *testing.T) {
@@ -432,9 +439,7 @@ func TestJsonConfig(t *testing.T) {
432439
t.Error(err)
433440
}
434441

435-
if !reflect.DeepEqual(expect, got) {
436-
t.Errorf("got %v, except %v", got, expect)
437-
}
442+
assertEqual(t, got, expect)
438443
}
439444

440445
func TestPostWithTime(t *testing.T) {
@@ -650,9 +655,9 @@ func TestNoPanicOnAsyncClose(t *testing.T) {
650655
}
651656
err = f.EncodeAndPostData("tag_name", time.Unix(1482493046, 0), map[string]string{"foo": "bar"})
652657
if tc.shouldError {
653-
assert.Equal(t, fmt.Errorf("fluent#appendBuffer: Logger already closed"), err)
658+
assertEqual(t, err, fmt.Errorf("fluent#appendBuffer: Logger already closed"))
654659
} else {
655-
assert.Equal(t, nil, err)
660+
assertEqual(t, err, nil)
656661
}
657662
})
658663
}
@@ -760,10 +765,14 @@ func TestSyncWriteAfterCloseFails(t *testing.T) {
760765
err = f.PostWithTime("tag_name", time.Unix(1482493050, 0), map[string]string{"foo": "buzz"})
761766

762767
// The event submission must fail,
763-
assert.NotEqual(t, err, nil)
768+
if err == nil {
769+
t.Error("expected an error")
770+
}
764771

765772
// and also must keep Fluentd closed.
766-
assert.NotEqual(t, f.closed, false)
773+
if f.closed != true {
774+
t.Error("expected Fluentd to be kept closed")
775+
}
767776
}()
768777

769778
conn := d.waitForNextDialing(true, false)

0 commit comments

Comments
 (0)