path: make Join variadic

R=rsc, r
CC=golang-dev
https://golang.org/cl/198049
diff --git a/src/pkg/path/path_test.go b/src/pkg/path/path_test.go
index 296712e..cd5978c 100644
--- a/src/pkg/path/path_test.go
+++ b/src/pkg/path/path_test.go
@@ -92,23 +92,39 @@
 }
 
 type JoinTest struct {
-	dir, file, path string
+	elem []string
+	path string
 }
 
 var jointests = []JoinTest{
-	JoinTest{"a", "b", "a/b"},
-	JoinTest{"a", "", "a"},
-	JoinTest{"", "b", "b"},
-	JoinTest{"/", "a", "/a"},
-	JoinTest{"/", "", "/"},
-	JoinTest{"a/", "b", "a/b"},
-	JoinTest{"a/", "", "a"},
+	// zero parameters
+	JoinTest{[]string{}, ""},
+
+	// one parameter
+	JoinTest{[]string{""}, ""},
+	JoinTest{[]string{"a"}, "a"},
+
+	// two parameters
+	JoinTest{[]string{"a", "b"}, "a/b"},
+	JoinTest{[]string{"a", ""}, "a"},
+	JoinTest{[]string{"", "b"}, "b"},
+	JoinTest{[]string{"/", "a"}, "/a"},
+	JoinTest{[]string{"/", ""}, "/"},
+	JoinTest{[]string{"a/", "b"}, "a/b"},
+	JoinTest{[]string{"a/", ""}, "a"},
+	JoinTest{[]string{"", ""}, ""},
+}
+
+// join takes a []string and passes it to Join.
+func join(elem []string, args ...string) string {
+	args = elem
+	return Join(args)
 }
 
 func TestJoin(t *testing.T) {
 	for _, test := range jointests {
-		if p := Join(test.dir, test.file); p != test.path {
-			t.Errorf("Join(%q, %q) = %q, want %q", test.dir, test.file, p, test.path)
+		if p := join(test.elem); p != test.path {
+			t.Errorf("join(%q) = %q, want %q", test.elem, p, test.path)
 		}
 	}
 }