core: Remove testutil.Init in init and use v23 test generate
to generate proper TestMains.

Next step, remove remaining TestHelperProcesses. This proved to cause
issues on TestAppLifeCycle, where converting to the generated TestMain
didn't work. Will look into that in another CL.

Change-Id: I804dfcf4760a899642705d7da98f07e85e37a594
diff --git a/security/flag/flag_test.go b/security/flag/flag_test.go
index 2416001..8419343 100644
--- a/security/flag/flag_test.go
+++ b/security/flag/flag_test.go
@@ -13,13 +13,10 @@
 	"v.io/core/veyron2/services/security/access"
 
 	"v.io/core/veyron/lib/modules"
-	"v.io/core/veyron/lib/testutil"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
 )
 
-func TestHelperProcess(t *testing.T) {
-	modules.DispatchInTest()
-}
+//go:generate v23 test generate
 
 var (
 	acl1 = access.TaggedACLMap{}
@@ -38,11 +35,6 @@
 	}
 )
 
-func init() {
-	testutil.Init()
-	modules.RegisterChild("tamFromFlag", "", tamFromFlag)
-}
-
 func auth(a security.Authorizer, err error) security.Authorizer {
 	if err != nil {
 		panic(err)
diff --git a/security/flag/v23_internal_test.go b/security/flag/v23_internal_test.go
new file mode 100644
index 0000000..8b3fa7c
--- /dev/null
+++ b/security/flag/v23_internal_test.go
@@ -0,0 +1,26 @@
+// This file was auto-generated via go generate.
+// DO NOT UPDATE MANUALLY
+package flag
+
+import "fmt"
+import "testing"
+import "os"
+
+import "v.io/core/veyron/lib/modules"
+import "v.io/core/veyron/lib/testutil"
+
+func init() {
+	modules.RegisterChild("tamFromFlag", ``, tamFromFlag)
+}
+
+func TestMain(m *testing.M) {
+	testutil.Init()
+	if modules.IsModulesProcess() {
+		if err := modules.Dispatch(); err != nil {
+			fmt.Fprintf(os.Stderr, "modules.Dispatch failed: %v\n", err)
+			os.Exit(1)
+		}
+		return
+	}
+	os.Exit(m.Run())
+}
diff --git a/security/serialization/serialization_test.go b/security/serialization/serialization_test.go
index bda4c95..b280f0c 100644
--- a/security/serialization/serialization_test.go
+++ b/security/serialization/serialization_test.go
@@ -9,6 +9,7 @@
 	"io"
 	"io/ioutil"
 	mrand "math/rand"
+	"os"
 	"reflect"
 	"strings"
 	"testing"
@@ -19,7 +20,12 @@
 	"v.io/core/veyron2/security"
 )
 
-func init() { testutil.Init() }
+// We call our own TestMain here because v23 test generate causes an import cycle
+// in this package.
+func TestMain(m *testing.M) {
+	testutil.Init()
+	os.Exit(m.Run())
+}
 
 type bufferCloser struct {
 	bytes.Buffer