Files
snapd/testutil/base.go
Samuele Pedroni 512c4b909b many: check that users of BaseTest don't forget to consume cleanups
make their order of execution also LIFO which is more expected

fix places that were wrong, also cleanup some of devicestate
suites to use AddCleanup more and not need specific TearDownTest
2020-08-28 16:52:43 +02:00

56 lines
1.6 KiB
Go

// -*- Mode: Go; indent-tabs-mode: t -*-
/*
* Copyright (C) 2015-2020 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package testutil
import (
"gopkg.in/check.v1"
)
// BaseTest is a structure used as a base test suite for all the snappy
// tests.
type BaseTest struct {
cleanupHandlers []func()
}
// SetUpTest prepares the cleanup
func (s *BaseTest) SetUpTest(c *check.C) {
if len(s.cleanupHandlers) != 0 {
panic("BaseTest cleanup handlers were not consumed before a new test start, missing BaseTest.TearDownTest call?")
}
}
// TearDownTest cleans up the channel.ini files in case they were changed by
// the test.
// It also runs the cleanup handlers
func (s *BaseTest) TearDownTest(c *check.C) {
// run cleanup handlers in reverse order and clear the slice
n := len(s.cleanupHandlers)
for i := range s.cleanupHandlers {
f := s.cleanupHandlers[n-1-i]
f()
}
s.cleanupHandlers = nil
}
// AddCleanup adds a new cleanup function to the test
func (s *BaseTest) AddCleanup(f func()) {
s.cleanupHandlers = append(s.cleanupHandlers, f)
}