mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
0078399788
This makes test code more clear and reduces the number of code lines by 500.
This also simplifies debugging tests. See https://itnext.io/f-tests-as-a-replacement-for-table-driven-tests-in-go-8814a8b19e9e
While at it, consistently use t.Fatal* instead of t.Error* across tests, since t.Error*
requires more boilerplate code, which can result in additional bugs inside tests.
While t.Error* allows writing logging errors for the same, this doesn't simplify fixing
broken tests most of the time.
This is a follow-up for a9525da8a4
46 lines
876 B
Go
46 lines
876 B
Go
package unittest
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/app/vmalert/templates"
|
|
)
|
|
|
|
func TestMain(m *testing.M) {
|
|
if err := templates.Load([]string{}, true); err != nil {
|
|
os.Exit(1)
|
|
}
|
|
os.Exit(m.Run())
|
|
}
|
|
|
|
func TestUnitTest_Failure(t *testing.T) {
|
|
f := func(files []string) {
|
|
t.Helper()
|
|
|
|
failed := UnitTest(files, false)
|
|
if !failed {
|
|
t.Fatalf("expecting failed test")
|
|
}
|
|
}
|
|
|
|
// failing test
|
|
f([]string{"./testdata/failed-test.yaml"})
|
|
}
|
|
|
|
func TestUnitTest_Success(t *testing.T) {
|
|
f := func(disableGroupLabel bool, files []string) {
|
|
t.Helper()
|
|
|
|
failed := UnitTest(files, disableGroupLabel)
|
|
if failed {
|
|
t.Fatalf("unexpected failed test")
|
|
}
|
|
}
|
|
|
|
// run multi files
|
|
f(false, []string{"./testdata/test1.yaml", "./testdata/test2.yaml"})
|
|
|
|
// disable group label
|
|
f(true, []string{"./testdata/disable-group-label.yaml"})
|
|
}
|