Browse Source

etcdctl: modify etcdctl v2 and v3 for code coverage

fanmin shi 8 years ago
parent
commit
aca4ea2a29

+ 1 - 1
etcdctl/ctlv2/ctl.go

@@ -71,7 +71,7 @@ func Start() {
 		command.NewAuthCommands(),
 		command.NewAuthCommands(),
 	}
 	}
 
 
-	err := app.Run(os.Args)
+	err := runCtlV2(app)
 	if err != nil {
 	if err != nil {
 		fmt.Fprintln(os.Stderr, err)
 		fmt.Fprintln(os.Stderr, err)
 		os.Exit(1)
 		os.Exit(1)

+ 28 - 0
etcdctl/ctlv2/ctl_cov.go

@@ -0,0 +1,28 @@
+// 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.
+
+// +build cov
+
+package ctlv2
+
+import (
+	"os"
+	"strings"
+
+	"github.com/urfave/cli"
+)
+
+func runCtlV2(app *cli.App) error {
+	return app.Run(strings.Split(os.Getenv("ETCDCTL_ARGS"), "\xff"))
+}

+ 27 - 0
etcdctl/ctlv2/ctl_nocov.go

@@ -0,0 +1,27 @@
+// 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.
+
+// +build !cov
+
+package ctlv2
+
+import (
+	"os"
+
+	"github.com/urfave/cli"
+)
+
+func runCtlV2(app *cli.App) error {
+	return app.Run(os.Args)
+}

+ 0 - 11
etcdctl/ctlv3/ctl.go

@@ -86,14 +86,3 @@ func init() {
 func init() {
 func init() {
 	cobra.EnablePrefixMatching = true
 	cobra.EnablePrefixMatching = true
 }
 }
-
-func Start() {
-	rootCmd.SetUsageFunc(usageFunc)
-
-	// Make help just show the usage
-	rootCmd.SetHelpTemplate(`{{.UsageString}}`)
-
-	if err := rootCmd.Execute(); err != nil {
-		command.ExitWithError(command.ExitError, err)
-	}
-}

+ 33 - 0
etcdctl/ctlv3/ctl_cov.go

@@ -0,0 +1,33 @@
+// 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.
+
+// +build cov
+
+package ctlv3
+
+import (
+	"os"
+	"strings"
+
+	"github.com/coreos/etcd/etcdctl/ctlv3/command"
+)
+
+func Start() {
+	// ETCDCTL_ARGS=etcdctl_test arg1 arg2...
+	// SetArgs() takes arg1 arg2...
+	rootCmd.SetArgs(strings.Split(os.Getenv("ETCDCTL_ARGS"), "\xff")[1:])
+	if err := rootCmd.Execute(); err != nil {
+		command.ExitWithError(command.ExitError, err)
+	}
+}

+ 28 - 0
etcdctl/ctlv3/ctl_nocov.go

@@ -0,0 +1,28 @@
+// 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.
+
+// +build !cov
+
+package ctlv3
+
+import "github.com/coreos/etcd/etcdctl/ctlv3/command"
+
+func Start() {
+	rootCmd.SetUsageFunc(usageFunc)
+	// Make help just show the usage
+	rootCmd.SetHelpTemplate(`{{.UsageString}}`)
+	if err := rootCmd.Execute(); err != nil {
+		command.ExitWithError(command.ExitError, err)
+	}
+}

+ 29 - 0
etcdctl/main_test.go

@@ -0,0 +1,29 @@
+// 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 (
+	"os"
+	"strings"
+	"testing"
+)
+
+func TestMain(t *testing.T) {
+	// don't launch etcdctl when invoked via go test
+	if strings.HasSuffix(os.Args[0], "etcdctl.test") {
+		return
+	}
+	main()
+}