cmd/go-contrib-init: add unit test for the cmdErr function

Change-Id: I5f03eb6ea220befb15e5318634124d1b5005e0b1
Reviewed-on: https://go-review.googlesource.com/c/tools/+/205799
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/cmd/go-contrib-init/contrib_test.go b/cmd/go-contrib-init/contrib_test.go
index c151f02..94764b0 100644
--- a/cmd/go-contrib-init/contrib_test.go
+++ b/cmd/go-contrib-init/contrib_test.go
@@ -1,7 +1,13 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
 package main
 
 import (
+	"errors"
 	"os"
+	"os/exec"
 	"runtime"
 	"testing"
 )
@@ -33,3 +39,21 @@
 		}
 	}
 }
+
+func TestCmdErr(t *testing.T) {
+	tests := []struct {
+		input error
+		want  string
+	}{
+		{input: errors.New("cmd error"), want: "cmd error"},
+		{input: &exec.ExitError{ProcessState: nil, Stderr: nil}, want: "<nil>"},
+		{input: &exec.ExitError{ProcessState: nil, Stderr: []byte("test")}, want: "<nil>: test"},
+	}
+
+	for i, tt := range tests {
+		got := cmdErr(tt.input)
+		if got != tt.want {
+			t.Fatalf("%d. got %q, want %q", i, got, tt.want)
+		}
+	}
+}