diff --git a/etcdctl/main.go b/etcdctl/main.go index 95b3416dea5..e53059e241d 100644 --- a/etcdctl/main.go +++ b/etcdctl/main.go @@ -19,16 +19,6 @@ import ( "go.etcd.io/etcd/etcdctl/v3/ctlv3" ) -/* -* -mainWithError is fully analogous to main, but instead of signaling errors -by os.Exit, it exposes the error explicitly, such that test-logic can intercept -control to e.g. dump coverage data (even for test-for-failure scenarios). -*/ -func mainWithError() error { - return ctlv3.Start() -} - func main() { ctlv3.MustStart() return diff --git a/etcdctl/main_test.go b/etcdctl/main_test.go deleted file mode 100644 index 501f9e7fd21..00000000000 --- a/etcdctl/main_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2017 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "log" - "os" - "strings" - "testing" -) - -func SplitTestArgs(args []string) ([]string, []string) { - var testArgs, appArgs []string - - for i, arg := range args { - switch { - case strings.HasPrefix(arg, "-test."): - testArgs = append(testArgs, arg) - case i == 0: - appArgs = append(appArgs, arg) - testArgs = append(testArgs, arg) - default: - appArgs = append(appArgs, arg) - } - } - return testArgs, appArgs -} - -// TestEmpty is an empty test to avoid no-tests warning. -func TestEmpty(t *testing.T) {} - -/** - * The purpose of this "test" is to run etcdctl with code-coverage - * collection turned on. The technique is documented here: - * - * https://www.cyphar.com/blog/post/20170412-golang-integration-coverage - */ -func TestMain(m *testing.M) { - // don't launch etcdctl when invoked via go test - if strings.HasSuffix(os.Args[0], "etcdctl.test") { - return - } - - testArgs, appArgs := SplitTestArgs(os.Args) - - os.Args = appArgs - - err := mainWithError() - if err != nil { - log.Fatalf("etcdctl failed with: %v", err) - } - - // This will generate coverage files: - os.Args = testArgs - m.Run() -} diff --git a/etcdutl/main_test.go b/etcdutl/main_test.go deleted file mode 100644 index 118cfa655a5..00000000000 --- a/etcdutl/main_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2017 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "log" - "os" - "strings" - "testing" -) - -func SplitTestArgs(args []string) ([]string, []string) { - var testArgs, appArgs []string - - for i, arg := range args { - switch { - case strings.HasPrefix(arg, "-test."): - testArgs = append(testArgs, arg) - case i == 0: - appArgs = append(appArgs, arg) - testArgs = append(testArgs, arg) - default: - appArgs = append(appArgs, arg) - } - } - return testArgs, appArgs -} - -// TestEmpty is empty test to avoid no-tests warning. -func TestEmpty(t *testing.T) {} - -/** - * The purpose of this "test" is to run etcdctl with code-coverage - * collection turned on. The technique is documented here: - * - * https://www.cyphar.com/blog/post/20170412-golang-integration-coverage - */ -func TestMain(m *testing.M) { - // don't launch etcdutl when invoked via go test - if strings.HasSuffix(os.Args[0], "etcdutl.test") { - return - } - - testArgs, appArgs := SplitTestArgs(os.Args) - - os.Args = appArgs - - err := Start() - if err != nil { - log.Fatalf("etcdctl failed with: %v", err) - } - - // This will generate coverage files: - os.Args = testArgs - m.Run() -} diff --git a/server/main_test.go b/server/main_test.go deleted file mode 100644 index e537ba54818..00000000000 --- a/server/main_test.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2017 The etcd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "log" - "os" - "os/signal" - "strings" - "syscall" - "testing" - - "go.etcd.io/etcd/server/v3/etcdmain" -) - -func SplitTestArgs(args []string) ([]string, []string) { - var testArgs, appArgs []string - - for i, arg := range args { - switch { - case strings.HasPrefix(arg, "-test."): - testArgs = append(testArgs, arg) - case i == 0: - appArgs = append(appArgs, arg) - testArgs = append(testArgs, arg) - default: - appArgs = append(appArgs, arg) - } - } - return testArgs, appArgs -} - -func TestEmpty(t *testing.T) {} - -/** - * The purpose of this "test" is to run etcd server with code-coverage - * collection turned on. The technique is documented here: - * - * https://www.cyphar.com/blog/post/20170412-golang-integration-coverage - */ -func TestMain(m *testing.M) { - // don't launch etcd server when invoked via go test - if strings.HasSuffix(os.Args[0], ".test") { - log.Print("skip launching etcd server when invoked via go test") - return - } - - testArgs, appArgs := SplitTestArgs(os.Args) - - notifier := make(chan os.Signal, 1) - signal.Notify(notifier, syscall.SIGINT, syscall.SIGTERM) - go etcdmain.Main(appArgs) - <-notifier - - // This will generate coverage files: - os.Args = testArgs - m.Run() -}