package keeper import ( "os" "syscall" "testing" "time" "wartank/pkg/components/kernel/slog" "wartank/pkg/mock/mockenv" "wartank/pkg/mock/mockkernel" ) /* Тест для сторожа */ // Тестер для сторожа type tester struct { t *testing.T err error me *mockenv.MockEnv kp *Keeper kern *mockkernel.MockKernel } func TestKeeper(t *testing.T) { test := &tester{ t: t, me: mockenv.NewMockEnv(), } test.create() test.cancel() _ = os.RemoveAll("./log") } // Отмена глобального контекста приложения func (сам *tester) cancel() { сам.kp.chSys <- syscall.SIGTERM time.Sleep(time.Microsecond * 150) сам.createGood1() сам.kern.CancelApp() time.Sleep(time.Microsecond * 150) } // Создание сторожа func (сам *tester) create() { сам.createBad1() сам.createGood1() } func (сам *tester) createGood1() { defer func() { if _panic := recover(); _panic != nil { сам.t.Errorf("createGood1(: panic=\n\t%v\n", _panic) } }() сам.me.Unset() if err := сам.me.InitLocal(); err != nil { сам.t.Errorf("createGood1(): не локальное окружение, err=\n\t%v\n", err) return } сам.kern = mockkernel.NewMockKernel() сам.kern.Slog_, сам.err = slog.NewSlog(сам.kern) if сам.err != nil { сам.t.Errorf("createGood1(): in create ISlog, err=\n\t%v", сам.err) } сам.kp = NewKeeper(сам.kern) if сам.kp == nil { сам.t.Errorf("createGood1(): keep==nil") } } // Нет объекта приложения func (сам *tester) createBad1() { defer func() { if _panic := recover(); _panic == nil { сам.t.Errorf("createBad1(: panic==nil\n") } if сам.kp != nil { сам.t.Errorf("createBad1(): keep!=nil") } }() сам.kp = NewKeeper(nil) }