dimanche 24 janvier 2021

Go test invalid memory address

I am writing a simple test, but I receive an error, and can't figure out why. Here is the code for the function:

var messages = []Message{}

func saveMessage(m Message) {
    if len(messages) >= config.Conf.MessageAmount {
        messages = messages[1:]
    }
    messages = append(messages, m)
}

And here is the code of my test:

func Test_saveMessage(t *testing.T){
    m := Message{
        Username:  "Name",
        Message: "Test message"}
    saveMessage(m)
    assert.Equal(t, 1, len(messages), "Expected to have 1 message")
}

Both the test and the function are in the same go package, however i receive this error:

--- FAIL: Test_saveMessage (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x5c6ba0]

goroutine 6 [running]:
testing.tRunner.func1.1(0x5f0fa0, 0x78e0d0)
        /snap/go/6745/src/testing/testing.go:1072 +0x30d
testing.tRunner.func1(0xc000001b00)
        /snap/go/6745/src/testing/testing.go:1075 +0x41a
panic(0x5f0fa0, 0x78e0d0)
        /snap/go/6745/src/runtime/panic.go:969 +0x1b9
_/home/marius/interactio/chat-api/src/messenger.saveMessage(...)
        /home/marius/interactio/chat-api/src/messenger/handler.go:76
_/home/marius/interactio/chat-api/src/messenger.Test_saveMessage(0xc000001b00)
        /home/marius/interactio/chat-api/src/messenger/handler_test.go:24 +0x40
testing.tRunner(0xc000001b00, 0x63eda8)
        /snap/go/6745/src/testing/testing.go:1123 +0xef
created by testing.(*T).Run
        /snap/go/6745/src/testing/testing.go:1168 +0x2b3
exit status 2
FAIL    _/home/marius/interactio/chat-api/src/messenger 0.004s

What might be the problem and how could i solve this?

Aucun commentaire:

Enregistrer un commentaire