diff --git a/pkg/util/BUILD b/pkg/util/BUILD index c3b25deb69..35e298f15b 100644 --- a/pkg/util/BUILD +++ b/pkg/util/BUILD @@ -52,7 +52,6 @@ filegroup( "//pkg/util/rlimit:all-srcs", "//pkg/util/selinux:all-srcs", "//pkg/util/slice:all-srcs", - "//pkg/util/strings:all-srcs", "//pkg/util/sysctl:all-srcs", "//pkg/util/system:all-srcs", "//pkg/util/tail:all-srcs", diff --git a/pkg/util/strings/BUILD b/pkg/util/strings/BUILD deleted file mode 100644 index a7cd124f7c..0000000000 --- a/pkg/util/strings/BUILD +++ /dev/null @@ -1,40 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -load( - "@io_bazel_rules_go//go:def.bzl", - "go_library", - "go_test", -) - -go_library( - name = "go_default_library", - srcs = [ - "escape.go", - "line_delimiter.go", - "strings.go", - ], - importpath = "k8s.io/kubernetes/pkg/util/strings", -) - -go_test( - name = "go_default_test", - srcs = [ - "escape_test.go", - "line_delimiter_test.go", - "strings_test.go", - ], - embed = [":go_default_library"], -) - -filegroup( - name = "package-srcs", - srcs = glob(["**"]), - tags = ["automanaged"], - visibility = ["//visibility:private"], -) - -filegroup( - name = "all-srcs", - srcs = [":package-srcs"], - tags = ["automanaged"], -) diff --git a/pkg/util/strings/escape.go b/pkg/util/strings/escape.go deleted file mode 100644 index b82a0f23fb..0000000000 --- a/pkg/util/strings/escape.go +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright 2014 The Kubernetes 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 strings - -import ( - "strings" -) - -// EscapePluginName converts a plugin name in the format -// vendor/pluginname into a proper ondisk vendor~pluginname plugin directory -// format. -func EscapePluginName(in string) string { - return strings.Replace(in, "/", "~", -1) -} - -// UnescapePluginName converts a plugin directory name in the format -// vendor~pluginname into a proper vendor/pluginname. -func UnescapePluginName(in string) string { - return strings.Replace(in, "~", "/", -1) -} - -// EscapeQualifiedNameForDisk converts a plugin name, which might contain a / into a -// string that is safe to use on-disk. This assumes that the input has already -// been validates as a qualified name. we use "~" rather than ":" here in case -// we ever use a filesystem that doesn't allow ":". -func EscapeQualifiedNameForDisk(in string) string { - return strings.Replace(in, "/", "~", -1) -} - -// UnescapeQualifiedNameForDisk converts an escaped plugin name (as per EscapeQualifiedNameForDisk) -// back to its normal form. This assumes that the input has already been -// validates as a qualified name. -func UnescapeQualifiedNameForDisk(in string) string { - return strings.Replace(in, "~", "/", -1) -} diff --git a/pkg/util/strings/escape_test.go b/pkg/util/strings/escape_test.go deleted file mode 100644 index 4c92f638a4..0000000000 --- a/pkg/util/strings/escape_test.go +++ /dev/null @@ -1,63 +0,0 @@ -/* -Copyright 2016 The Kubernetes 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 strings - -import ( - "testing" -) - -func TestEscapePluginName(t *testing.T) { - testCases := []struct { - input string - output string - }{ - {"kubernetes.io/blah", "kubernetes.io~blah"}, - {"blah/blerg/borg", "blah~blerg~borg"}, - {"kubernetes.io", "kubernetes.io"}, - } - for i, tc := range testCases { - escapee := EscapePluginName(tc.input) - if escapee != tc.output { - t.Errorf("case[%d]: expected (%q), got (%q)", i, tc.output, escapee) - } - original := UnescapePluginName(escapee) - if original != tc.input { - t.Errorf("case[%d]: expected (%q), got (%q)", i, tc.input, original) - } - } -} - -func TestEscapeQualifiedNameForDisk(t *testing.T) { - testCases := []struct { - input string - output string - }{ - {"kubernetes.io/blah", "kubernetes.io~blah"}, - {"blah/blerg/borg", "blah~blerg~borg"}, - {"kubernetes.io", "kubernetes.io"}, - } - for i, tc := range testCases { - escapee := EscapeQualifiedNameForDisk(tc.input) - if escapee != tc.output { - t.Errorf("case[%d]: expected (%q), got (%q)", i, tc.output, escapee) - } - original := UnescapeQualifiedNameForDisk(escapee) - if original != tc.input { - t.Errorf("case[%d]: expected (%q), got (%q)", i, tc.input, original) - } - } -} diff --git a/pkg/util/strings/line_delimiter.go b/pkg/util/strings/line_delimiter.go deleted file mode 100644 index 8907869c9e..0000000000 --- a/pkg/util/strings/line_delimiter.go +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright 2015 The Kubernetes 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 strings - -import ( - "bytes" - "io" - "strings" -) - -// LineDelimiter is a filter that will split input on lines -// and bracket each line with the delimiter string. -type LineDelimiter struct { - output io.Writer - delimiter []byte - buf bytes.Buffer -} - -// NewLineDelimiter allocates a new io.Writer that will split input on lines -// and bracket each line with the delimiter string. This can be useful in -// output tests where it is difficult to see and test trailing whitespace. -func NewLineDelimiter(output io.Writer, delimiter string) *LineDelimiter { - return &LineDelimiter{output: output, delimiter: []byte(delimiter)} -} - -// Write writes buf to the LineDelimiter ld. The only errors returned are ones -// encountered while writing to the underlying output stream. -func (ld *LineDelimiter) Write(buf []byte) (n int, err error) { - return ld.buf.Write(buf) -} - -// Flush all lines up until now. This will assume insert a linebreak at the current point of the stream. -func (ld *LineDelimiter) Flush() (err error) { - lines := strings.Split(ld.buf.String(), "\n") - for _, line := range lines { - if _, err = ld.output.Write(ld.delimiter); err != nil { - return - } - if _, err = ld.output.Write([]byte(line)); err != nil { - return - } - if _, err = ld.output.Write(ld.delimiter); err != nil { - return - } - if _, err = ld.output.Write([]byte("\n")); err != nil { - return - } - } - return -} diff --git a/pkg/util/strings/line_delimiter_test.go b/pkg/util/strings/line_delimiter_test.go deleted file mode 100644 index 15bee165b5..0000000000 --- a/pkg/util/strings/line_delimiter_test.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright 2015 The Kubernetes 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 strings - -import ( - "fmt" - "os" -) - -func Example_trailingNewline() { - ld := NewLineDelimiter(os.Stdout, "|") - defer ld.Flush() - fmt.Fprint(ld, " Hello \n World \n") - // Output: - // | Hello | - // | World | - // || -} -func Example_noTrailingNewline() { - ld := NewLineDelimiter(os.Stdout, "|") - defer ld.Flush() - fmt.Fprint(ld, " Hello \n World ") - // Output: - // | Hello | - // | World | -} diff --git a/pkg/util/strings/strings.go b/pkg/util/strings/strings.go deleted file mode 100644 index 29be3170a2..0000000000 --- a/pkg/util/strings/strings.go +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2014 The Kubernetes 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 strings - -import ( - "path" - "strings" - "unicode" -) - -// SplitQualifiedName splits a fully qualified name and returns its namespace and name. -// Assumes that the input 'str' has been validated. -func SplitQualifiedName(str string) (string, string) { - parts := strings.Split(str, "/") - if len(parts) < 2 { - return "", str - } - return parts[0], parts[1] -} - -// JoinQualifiedName joins 'namespace' and 'name' and returns a fully qualified name -// Assumes that the input is valid. -func JoinQualifiedName(namespace, name string) string { - return path.Join(namespace, name) -} - -// ShortenString returns the first N slice of a string. -func ShortenString(str string, n int) string { - if len(str) <= n { - return str - } - return str[:n] -} - -// isVowel returns true if the rune is a vowel (case insensitive). -func isVowel(c rune) bool { - vowels := []rune{'a', 'e', 'i', 'o', 'u'} - for _, value := range vowels { - if value == unicode.ToLower(c) { - return true - } - } - return false -} diff --git a/pkg/util/strings/strings_test.go b/pkg/util/strings/strings_test.go deleted file mode 100644 index 3c6e22e406..0000000000 --- a/pkg/util/strings/strings_test.go +++ /dev/null @@ -1,97 +0,0 @@ -/* -Copyright 2014 The Kubernetes 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 strings - -import ( - "testing" -) - -func TestSplitQualifiedName(t *testing.T) { - testCases := []struct { - input string - output []string - }{ - {"kubernetes.io/blah", []string{"kubernetes.io", "blah"}}, - {"blah", []string{"", "blah"}}, - {"kubernetes.io/blah/blah", []string{"kubernetes.io", "blah"}}, - } - for i, tc := range testCases { - namespace, name := SplitQualifiedName(tc.input) - if namespace != tc.output[0] || name != tc.output[1] { - t.Errorf("case[%d]: expected (%q, %q), got (%q, %q)", i, tc.output[0], tc.output[1], namespace, name) - } - } -} - -func TestJoinQualifiedName(t *testing.T) { - testCases := []struct { - input []string - output string - }{ - {[]string{"kubernetes.io", "blah"}, "kubernetes.io/blah"}, - {[]string{"blah", ""}, "blah"}, - {[]string{"kubernetes.io", "blah"}, "kubernetes.io/blah"}, - } - for i, tc := range testCases { - res := JoinQualifiedName(tc.input[0], tc.input[1]) - if res != tc.output { - t.Errorf("case[%d]: expected %q, got %q", i, tc.output, res) - } - } -} - -func TestShortenString(t *testing.T) { - testCases := []struct { - input string - outLen int - output string - }{ - {"kubernetes.io", 5, "kuber"}, - {"blah", 34, "blah"}, - {"kubernetes.io", 13, "kubernetes.io"}, - } - for i, tc := range testCases { - res := ShortenString(tc.input, tc.outLen) - if res != tc.output { - t.Errorf("case[%d]: expected %q, got %q", i, tc.output, res) - } - } -} - -func TestIsVowel(t *testing.T) { - tests := []struct { - name string - arg rune - want bool - }{ - { - name: "yes", - arg: 'E', - want: true, - }, - { - name: "no", - arg: 'n', - want: false, - }, - } - for _, tt := range tests { - if got := isVowel(tt.arg); got != tt.want { - t.Errorf("%q. IsVowel() = %v, want %v", tt.name, got, tt.want) - } - } -} diff --git a/test/test_owners.csv b/test/test_owners.csv index 26cdfa575d..ff69640baf 100644 --- a/test/test_owners.csv +++ b/test/test_owners.csv @@ -802,7 +802,6 @@ k8s.io/kubernetes/pkg/util/oom,vishh,0, k8s.io/kubernetes/pkg/util/parsers,derekwaynecarr,1, k8s.io/kubernetes/pkg/util/procfs,roberthbailey,1, k8s.io/kubernetes/pkg/util/slice,quinton-hoole,0, -k8s.io/kubernetes/pkg/util/strings,quinton-hoole,0, k8s.io/kubernetes/pkg/util/system,mwielgus,0, k8s.io/kubernetes/pkg/util/tail,zmerlynn,1, k8s.io/kubernetes/pkg/util/taints,rrati,0,