chore: add more tests (#3359)

master
Kevin Wan 1 year ago committed by GitHub
parent 92f6c48349
commit b176d5d434
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -219,6 +219,7 @@ func parseUints(val string) ([]uint64, error) {
return nil, nil return nil, nil
} }
var sets []uint64
ints := make(map[uint64]lang.PlaceholderType) ints := make(map[uint64]lang.PlaceholderType)
cols := strings.Split(val, ",") cols := strings.Split(val, ",")
for _, r := range cols { for _, r := range cols {
@ -239,7 +240,10 @@ func parseUints(val string) ([]uint64, error) {
} }
for i := min; i <= max; i++ { for i := min; i <= max; i++ {
ints[i] = lang.Placeholder if _, ok := ints[i]; !ok {
ints[i] = lang.Placeholder
sets = append(sets, i)
}
} }
} else { } else {
v, err := parseUint(r) v, err := parseUint(r)
@ -247,19 +251,17 @@ func parseUints(val string) ([]uint64, error) {
return nil, err return nil, err
} }
ints[v] = lang.Placeholder if _, ok := ints[v]; !ok {
ints[v] = lang.Placeholder
sets = append(sets, v)
}
} }
} }
var sets []uint64
for k := range ints {
sets = append(sets, k)
}
return sets, nil return sets, nil
} }
// runningInUserNS detects whether we are currently running in an user namespace. // runningInUserNS detects whether we are currently running in a user namespace.
func runningInUserNS() bool { func runningInUserNS() bool {
nsOnce.Do(func() { nsOnce.Do(func() {
file, err := os.Open("/proc/self/uid_map") file, err := os.Open("/proc/self/uid_map")

@ -1,6 +1,7 @@
package internal package internal
import ( import (
"fmt"
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -25,3 +26,46 @@ func TestCgroupV1(t *testing.T) {
assert.Error(t, err) assert.Error(t, err)
} }
} }
func TestParseUint(t *testing.T) {
tests := []struct {
input string
want uint64
err error
}{
{"0", 0, nil},
{"123", 123, nil},
{"-1", 0, nil},
{"-18446744073709551616", 0, nil},
{"foo", 0, fmt.Errorf("cgroup: bad int format: foo")},
}
for _, tt := range tests {
got, err := parseUint(tt.input)
assert.Equal(t, tt.err, err)
assert.Equal(t, tt.want, got)
}
}
func TestParseUints(t *testing.T) {
tests := []struct {
input string
want []uint64
err error
}{
{"", nil, nil},
{"1,2,3", []uint64{1, 2, 3}, nil},
{"1-3", []uint64{1, 2, 3}, nil},
{"1-3,5,7-9", []uint64{1, 2, 3, 5, 7, 8, 9}, nil},
{"foo", nil, fmt.Errorf("cgroup: bad int format: foo")},
{"1-bar", nil, fmt.Errorf("cgroup: bad int list format: 1-bar")},
{"bar-3", nil, fmt.Errorf("cgroup: bad int list format: bar-3")},
{"3-1", nil, fmt.Errorf("cgroup: bad int list format: 3-1")},
}
for _, tt := range tests {
got, err := parseUints(tt.input)
assert.Equal(t, tt.err, err)
assert.Equal(t, tt.want, got)
}
}

Loading…
Cancel
Save