Skip to content

Commit

Permalink
etcdctl: modify etcdctl v2 and v3 for code coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
fanminshi committed Feb 28, 2017
1 parent 01557eb commit aca4ea2
Show file tree
Hide file tree
Showing 7 changed files with 146 additions and 12 deletions.
2 changes: 1 addition & 1 deletion etcdctl/ctlv2/ctl.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func Start() {
command.NewAuthCommands(),
}

err := app.Run(os.Args)
err := runCtlV2(app)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
Expand Down
28 changes: 28 additions & 0 deletions etcdctl/ctlv2/ctl_cov.go
Original file line number Diff line number Diff line change
@@ -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 changes: 27 additions & 0 deletions etcdctl/ctlv2/ctl_nocov.go
Original file line number Diff line number Diff line change
@@ -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)
}
11 changes: 0 additions & 11 deletions etcdctl/ctlv3/ctl.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,3 @@ func init() {
func init() {
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 changes: 33 additions & 0 deletions etcdctl/ctlv3/ctl_cov.go
Original file line number Diff line number Diff line change
@@ -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 changes: 28 additions & 0 deletions etcdctl/ctlv3/ctl_nocov.go
Original file line number Diff line number Diff line change
@@ -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 changes: 29 additions & 0 deletions etcdctl/main_test.go
Original file line number Diff line number Diff line change
@@ -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()
}

0 comments on commit aca4ea2

Please sign in to comment.