Size: a a a

2020 December 09

IS

Ilya Sinelnikov in Go-go!
suite.T() ==nil?
источник

AE

Andrey Enshin in Go-go!
нет, не nil
источник

H

Hiroki Fujisawa in Go-go!
А по stacktrace не видно?
источник

H

Hiroki Fujisawa in Go-go!
Чего мы гадаем - там же будет явно написано где NPD случился
источник

AE

Andrey Enshin in Go-go!
@Yurkeen что такое NPD?

стек трейс вот такой:
suite.go:61: test panicked: runtime error: invalid memory address or nil pointer dereference
источник

H

Hiroki Fujisawa in Go-go!
NPD = nil pointer deterrence
источник

H

Hiroki Fujisawa in Go-go!
Andrey Enshin
@Yurkeen что такое NPD?

стек трейс вот такой:
suite.go:61: test panicked: runtime error: invalid memory address or nil pointer dereference
Это только кусок трейса
источник

AE

Andrey Enshin in Go-go!
а больше и нет
источник

H

Hiroki Fujisawa in Go-go!
Там же есть полный стек вызывающих функций?
источник

H

Hiroki Fujisawa in Go-go!
Вплоть до вашего _test.go
источник

АД

Алексей Долгов... in Go-go!
там recover() в suite.go:61
источник

AE

Andrey Enshin in Go-go!
источник

ВС

Владимир Столяров... in Go-go!
Andrey Enshin
Чатик, привет!

Вопрос по stretchr/testify/suite
https://godoc.org/github.com/stretchr/testify/assert#Nil

Запускаю простой тест, проверяю ошибку на nil - assert.Nil(suite.T(), err)
В err лежит &errors.StatusError который вернул мне клиент k8s k8s.io/client-go/dynamic.

И оно внезапно паникует: suite.go:61: test panicked: runtime error: invalid memory address or nil pointer dereference

Что я делаю не так?
Так можно же прямо вызывать suite.Nil
источник

AE

Andrey Enshin in Go-go!
мне кажется что он, в попытках проверить на нил ссылку на ошибку пытается дерефнуть как-то не так
источник

H

Hiroki Fujisawa in Go-go!
А покажите тест?
источник

AE

Andrey Enshin in Go-go!
пытаюсь сделать poc, опустив ненужные детали, но что-то не выходит
ещё чуть поковыряю, пока выяснил, что версия у нас 1.3.0 а последняя 1.6.1, что может объяснять причину

суть пока проста (но чот у меня самого вне нашего тест сюта не воспроизводится):
func TestNilAssertion(t *testing.T) {                                            
  err := fmt.Errorf("oops")                                                      
  assert.Nil(t, &err)                                                            
}
источник

RL

Ragnar Lodbrok in Go-go!
assert.Nil(t,err) надо
источник

AE

Andrey Enshin in Go-go!
да, тогда всё пашет, это так

но у теста логика такова: пропускать только nil, остальное нет

а что там будет - строка, структура или ссылка, мы не должны паниковать
источник

RL

Ragnar Lodbrok in Go-go!
Если err=nil, то &err вернет панику
источник

н

немедленно in Go-go!
Ragnar Lodbrok
Если err=nil, то &err вернет панику
разве?
источник