internal/runtime/cgroup: simplify escapePath in test

Don't work on rune, kernel does not use utf-8 here.
Can be verified like this:

  # mkdir "$(echo -e "\xff\x20")"
  # mount -t tmpfs tmpfs "$(echo -e "\xff\x20")"
  # tail -n 1 /proc/self/mountinfo | xxd
  00000000: 3133 3334 2031 3030 2030 3a31 3632 202f  1334 100 0:162 /
  00000010: 202f 726f 6f74 2fff 5c30 3430 2072 772c   /root/.\040 rw,
  00000020: 7265 6c61 7469 6d65 2073 6861 7265 643a  relatime shared:
  00000030: 3433 3520 2d20 746d 7066 7320 746d 7066  435 - tmpfs tmpf
  00000040: 7320 7277 0a                             s rw.

Change-Id: I7468b56eb26f14bc809f8f7580535e6562795c62
Reviewed-on: https://go-review.googlesource.com/c/go/+/723300
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
This commit is contained in:
胡玮文 2025-11-22 17:15:04 +08:00 committed by Gopher Robot
parent 481c6df7b9
commit 6be5de4bc4

View file

@ -8,7 +8,6 @@ import (
"fmt" "fmt"
"internal/runtime/cgroup" "internal/runtime/cgroup"
"io" "io"
"strconv"
"strings" "strings"
"testing" "testing"
) )
@ -380,21 +379,11 @@ func TestParseCPUMount(t *testing.T) {
// That is, '\', ' ', '\t', and '\n' are converted to octal escape sequences, // That is, '\', ' ', '\t', and '\n' are converted to octal escape sequences,
// like '\040' for space. // like '\040' for space.
func escapePath(s string) string { func escapePath(s string) string {
out := make([]rune, 0, len(s)) out := make([]byte, 0, len(s))
for _, c := range s { for _, c := range []byte(s) {
switch c { switch c {
case '\\', ' ', '\t', '\n': case '\\', ' ', '\t', '\n':
out = append(out, '\\') out = fmt.Appendf(out, "\\%03o", c)
cs := strconv.FormatInt(int64(c), 8)
if len(cs) <= 2 {
out = append(out, '0')
}
if len(cs) <= 1 {
out = append(out, '0')
}
for _, csc := range cs {
out = append(out, csc)
}
default: default:
out = append(out, c) out = append(out, c)
} }
@ -444,6 +433,11 @@ b/c`,
unescaped: `/a/\`, unescaped: `/a/\`,
escaped: `/a/\134`, escaped: `/a/\134`,
}, },
{
name: "non-utf8",
unescaped: "/a/b\xff\x20/c",
escaped: "/a/b\xff\\040/c",
},
} }
t.Run("escapePath", func(t *testing.T) { t.Run("escapePath", func(t *testing.T) {