Przeglądaj źródła

suite: put suite setup inside test run

Signed-off-by: Tibor Vass <tibor@docker.com>
Tibor Vass 5 lat temu
rodzic
commit
d32e6bbde8
1 zmienionych plików z 15 dodań i 11 usunięć
  1. 15 11
      internal/test/suite/suite.go

+ 15 - 11
internal/test/suite/suite.go

@@ -21,6 +21,14 @@ func Run(t *testing.T, suite interface{}) {
 
 
 	suiteSetupDone := false
 	suiteSetupDone := false
 
 
+	defer func() {
+		if suiteSetupDone {
+			if tearDownAllSuite, ok := suite.(TearDownAllSuite); ok {
+				tearDownAllSuite.TearDownSuite(t)
+			}
+		}
+	}()
+
 	methodFinder := reflect.TypeOf(suite)
 	methodFinder := reflect.TypeOf(suite)
 	suiteName := methodFinder.Elem().Name()
 	suiteName := methodFinder.Elem().Name()
 	for index := 0; index < methodFinder.NumMethod(); index++ {
 	for index := 0; index < methodFinder.NumMethod(); index++ {
@@ -28,20 +36,16 @@ func Run(t *testing.T, suite interface{}) {
 		if !methodFilter(method.Name, method.Type) {
 		if !methodFilter(method.Name, method.Type) {
 			continue
 			continue
 		}
 		}
-		if !suiteSetupDone {
-			if setupAllSuite, ok := suite.(SetupAllSuite); ok {
-				setupAllSuite.SetUpSuite(t)
-			}
-			defer func() {
-				if tearDownAllSuite, ok := suite.(TearDownAllSuite); ok {
-					tearDownAllSuite.TearDownSuite(t)
-				}
-			}()
-			suiteSetupDone = true
-		}
 		t.Run(suiteName+"/"+method.Name, func(t *testing.T) {
 		t.Run(suiteName+"/"+method.Name, func(t *testing.T) {
 			defer failOnPanic(t)
 			defer failOnPanic(t)
 
 
+			if !suiteSetupDone {
+				if setupAllSuite, ok := suite.(SetupAllSuite); ok {
+					setupAllSuite.SetUpSuite(t)
+				}
+				suiteSetupDone = true
+			}
+
 			if setupTestSuite, ok := suite.(SetupTestSuite); ok {
 			if setupTestSuite, ok := suite.(SetupTestSuite); ok {
 				setupTestSuite.SetUpTest(t)
 				setupTestSuite.SetUpTest(t)
 			}
 			}