mirror of
https://github.com/opencontainers/runc.git
synced 2026-02-05 18:45:28 +01:00
These helpers will be needed for the compatibility code added in future patches in this series, but because "internal/pathrs" is imported by "libcontainer/utils" we need to move them so that we can avoid circular dependencies. Because the old functions were in a non-internal package it is possible some downstreams use them, so add some wrappers but mark them as deprecated. Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
package utils
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
|
|
"golang.org/x/sys/unix"
|
|
)
|
|
|
|
var labelTest = []struct {
|
|
labels []string
|
|
query string
|
|
expVal string
|
|
expOk bool
|
|
}{
|
|
{[]string{"bundle=/path/to/bundle"}, "bundle", "/path/to/bundle", true},
|
|
{[]string{"test=a", "test=b"}, "bundle", "", false},
|
|
{[]string{"bundle=a", "test=b", "bundle=c"}, "bundle", "a", true},
|
|
{[]string{"", "test=a", "bundle=b"}, "bundle", "b", true},
|
|
{[]string{"test", "bundle=a"}, "bundle", "a", true},
|
|
{[]string{"test=a", "bundle="}, "bundle", "", true},
|
|
}
|
|
|
|
func TestSearchLabels(t *testing.T) {
|
|
for _, tt := range labelTest {
|
|
v, ok := SearchLabels(tt.labels, tt.query)
|
|
if ok != tt.expOk {
|
|
t.Errorf("expected ok: %v, got %v", tt.expOk, ok)
|
|
continue
|
|
}
|
|
if v != tt.expVal {
|
|
t.Errorf("expected value '%s' for query '%s'; got '%s'", tt.expVal, tt.query, v)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestExitStatus(t *testing.T) {
|
|
status := unix.WaitStatus(0)
|
|
ex := ExitStatus(status)
|
|
if ex != 0 {
|
|
t.Errorf("expected exit status to equal 0 and received %d", ex)
|
|
}
|
|
}
|
|
|
|
func TestExitStatusSignaled(t *testing.T) {
|
|
status := unix.WaitStatus(2)
|
|
ex := ExitStatus(status)
|
|
if ex != 130 {
|
|
t.Errorf("expected exit status to equal 130 and received %d", ex)
|
|
}
|
|
}
|
|
|
|
func TestWriteJSON(t *testing.T) {
|
|
person := struct {
|
|
Name string
|
|
Age int
|
|
}{
|
|
Name: "Alice",
|
|
Age: 30,
|
|
}
|
|
|
|
var b bytes.Buffer
|
|
err := WriteJSON(&b, person)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
expected := `{"Name":"Alice","Age":30}`
|
|
if b.String() != expected {
|
|
t.Errorf("expected to write %s but was %s", expected, b.String())
|
|
}
|
|
}
|