Add null formatter

This commit is contained in:
Dan Jones 2024-03-11 21:18:52 -05:00
commit 632c7143f1
5 changed files with 83 additions and 2 deletions

View file

@ -67,7 +67,10 @@ var dropCmd = &cobra.Command{
if err != nil {
return err
}
fmt.Fprintf(cmd.OutOrStdout(), "%s\n", out)
if len(out) > 0 && out[len(out)-1] != 10 {
out = append(out, 10)
}
fmt.Fprintf(cmd.OutOrStdout(), "%s", out)
return nil
},

View file

@ -11,6 +11,7 @@ type formatMaker func(config.Formatters) (Formatter, error)
var formatterMap = map[string]formatMaker{
"plain": newPlain,
"json": newJson,
"zero": newNull,
}
func Preferred() (f Formatter, err error) {

View file

@ -10,7 +10,7 @@ import (
)
func TestKinds(t *testing.T) {
assert.ElementsMatch(t, []string{"plain", "json"}, Kinds())
assert.ElementsMatch(t, []string{"plain", "json", "zero"}, Kinds())
}
func TestNewUnsupported(t *testing.T) {

32
formatters/null.go Normal file
View file

@ -0,0 +1,32 @@
package formatters
import (
"codeberg.org/danjones000/my-log/config"
"codeberg.org/danjones000/my-log/models"
)
func newNull(ff config.Formatters) (Formatter, error) {
return &Null{}, nil
}
type Null struct{}
func (n *Null) Name() string {
return "zero"
}
func (n *Null) Meta(m models.Meta) (o []byte, err error) {
return
}
func (n *Null) Entry(e models.Entry) (o []byte, err error) {
return
}
func (n *Null) Log(l models.Log) (o []byte, err error) {
return
}
func (n *Null) Logs(logs []models.Log) (out []byte, err error) {
return
}

45
formatters/null_test.go Normal file
View file

@ -0,0 +1,45 @@
package formatters
import (
"testing"
"time"
"codeberg.org/danjones000/my-log/models"
"github.com/stretchr/testify/assert"
)
var empty []byte
func TestNullName(t *testing.T) {
f, err := New("zero")
assert.NoError(t, err)
assert.Equal(t, "zero", f.Name())
}
func TestNullMeta(t *testing.T) {
f, _ := New("zero")
o, err := f.Meta(models.Meta{"foo", 42})
assert.NoError(t, err)
assert.Equal(t, empty, o)
}
func TestNullEntry(t *testing.T) {
f, _ := New("zero")
o, err := f.Entry(models.Entry{"title", time.Now(), models.Metas{}})
assert.NoError(t, err)
assert.Equal(t, empty, o)
}
func TestNullLog(t *testing.T) {
f, _ := New("zero")
o, err := f.Log(models.Log{"jim", []models.Entry{{"title", time.Now(), models.Metas{}}}})
assert.NoError(t, err)
assert.Equal(t, empty, o)
}
func TestNullLogs(t *testing.T) {
f, _ := New("zero")
o, err := f.Logs([]models.Log{{"jim", []models.Entry{{"title", time.Now(), models.Metas{}}}}})
assert.NoError(t, err)
assert.Equal(t, empty, o)
}