Migrate from testify to nalgeon/be testing library

- Replace all testify/assert and testify/require with be library
- Update go.mod to use be v0.3.0 instead of testify
- Simplify test assertions using be.Equal, be.Err, and be.True
- Refactor append_test, entry_test, meta_test, log_test, and formatter tests
This commit is contained in:
Dan Jones 2026-02-13 14:12:30 -06:00
commit 1110288d84
16 changed files with 226 additions and 236 deletions

View file

@ -4,11 +4,12 @@ import (
"bufio"
"encoding"
"encoding/json"
"regexp"
"strings"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/nalgeon/be"
)
// Type assertions
@ -126,19 +127,19 @@ func getEntryMarshalTestRunner(title string, date time.Time, fields []Meta, firs
return func(t *testing.T) {
en := Entry{title, date, fields}
o, er := en.MarshalText()
assert.Equal(t, err, er)
be.Err(t, er, err)
if first == "" {
return
}
os := string(o)
if len(lines) == 0 {
assert.Equal(t, first, os)
be.Equal(t, os, first)
return
}
assert.Regexp(t, first, os)
be.True(t, regexp.MustCompile(first).MatchString(os))
for _, line := range lines {
assert.Regexp(t, "(?m)^"+line, os)
be.True(t, regexp.MustCompile("(?m)^"+line).MatchString(os))
}
}
}
@ -215,12 +216,12 @@ func getEntryUnmarshalTestRunner(in string, title string, date time.Time, fields
e := &Entry{}
er := e.UnmarshalText([]byte(in))
if err != nil {
assert.ErrorIs(t, er, err)
be.Err(t, er, err)
return
}
assert.Equal(t, title, e.Title)
assert.WithinRange(t, e.Date, date.Add(-time.Second), date.Add(time.Second))
be.Equal(t, e.Title, title)
be.True(t, e.Date.After(date.Add(-time.Second)) && e.Date.Before(date.Add(time.Second)))
for _, f := range fields {
got := false
for _, m := range e.Fields {
@ -237,7 +238,7 @@ func getEntryUnmarshalTestRunner(in string, title string, date time.Time, fields
break
}
}
assert.Truef(t, got, "Couldn't find field %+v. We have %+v", f, e.Fields)
be.True(t, got)
}
}
}
@ -247,13 +248,13 @@ func TestScan(t *testing.T) {
read := strings.NewReader(in)
scan := bufio.NewScanner(read)
scan.Split(scanEntry)
assert.True(t, scan.Scan())
assert.Equal(t, "@begin date - Title\nlong", scan.Text())
assert.True(t, scan.Scan())
assert.Equal(t, "@foo john\njones", scan.Text())
assert.True(t, scan.Scan())
assert.Equal(t, "@bar 42@nobody", scan.Text())
assert.False(t, scan.Scan())
be.True(t, scan.Scan())
be.Equal(t, scan.Text(), "@begin date - Title\nlong")
be.True(t, scan.Scan())
be.Equal(t, scan.Text(), "@foo john\njones")
be.True(t, scan.Scan())
be.Equal(t, scan.Text(), "@bar 42@nobody")
be.True(t, !scan.Scan())
}
func TestEntryJsonMarshal(t *testing.T) {
@ -297,10 +298,12 @@ func getEntryJsonMarshalTestRunner(title string, date time.Time, fields []Meta,
e := Entry{title, date, fields}
o, er := json.Marshal(e)
if err == nil {
assert.JSONEq(t, out, string(o))
var got, want any
json.Unmarshal([]byte(out), &want)
json.Unmarshal(o, &got)
be.Equal(t, got, want)
} else {
assert.ErrorIs(t, er, err)
be.Err(t, er, err)
}
}
}
@ -376,14 +379,14 @@ func getEntryJsonUnmarshalTestRunner(in, title string, date time.Time, fields []
e := new(Entry)
er := e.UnmarshalJSON([]byte(in))
if err != nil {
assert.ErrorIs(t, er, err)
be.Err(t, er, err)
return
}
assert.Nil(t, er)
assert.Equal(t, title, e.Title)
assert.WithinRange(t, e.Date, date.Add(-time.Second), date.Add(time.Second))
assert.Len(t, e.Fields, len(fields))
be.Equal(t, er, nil)
be.Equal(t, e.Title, title)
be.True(t, e.Date.After(date.Add(-time.Second)) && e.Date.Before(date.Add(time.Second)))
be.Equal(t, len(e.Fields), len(fields))
for _, f := range fields {
got := false
fTime, isTime := f.Value.(time.Time)
@ -402,13 +405,13 @@ func getEntryJsonUnmarshalTestRunner(in, title string, date time.Time, fields []
}
if isTime && m.Key == f.Key {
mTime, _ := mVal.(time.Time)
if assert.WithinRange(t, mTime, fTime.Add(-2*time.Second), fTime.Add(2*time.Second)) {
if mTime.After(fTime.Add(-2*time.Second)) && mTime.Before(fTime.Add(2*time.Second)) {
got = true
break
}
}
}
assert.Truef(t, got, "Couldn't find field %+v. We have %+v", f, e.Fields)
be.True(t, got)
}
}
}