2020-07-14 04:49:32 +08:00
|
|
|
package util
|
|
|
|
|
|
|
|
import (
|
2021-01-21 21:29:21 +08:00
|
|
|
"os"
|
2021-09-28 05:25:06 +08:00
|
|
|
"strconv"
|
2020-07-14 04:49:32 +08:00
|
|
|
"testing"
|
2021-01-21 21:29:21 +08:00
|
|
|
|
|
|
|
"github.com/containers/common/pkg/config"
|
2021-03-31 18:57:18 +08:00
|
|
|
specs "github.com/opencontainers/runtime-spec/specs-go"
|
2020-07-14 04:49:32 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestMergeEnv(t *testing.T) {
|
|
|
|
tests := [][3][]string{
|
|
|
|
{
|
|
|
|
[]string{"A=B", "B=C", "C=D"},
|
|
|
|
nil,
|
|
|
|
[]string{"A=B", "B=C", "C=D"},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
nil,
|
|
|
|
[]string{"A=B", "B=C", "C=D"},
|
|
|
|
[]string{"A=B", "B=C", "C=D"},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
[]string{"A=B", "B=C", "C=D", "E=F"},
|
|
|
|
[]string{"B=O", "F=G"},
|
|
|
|
[]string{"A=B", "B=O", "C=D", "E=F", "F=G"},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for i, test := range tests {
|
2021-09-28 05:25:06 +08:00
|
|
|
t.Run(strconv.Itoa(i), func(t *testing.T) {
|
2020-07-14 04:49:32 +08:00
|
|
|
result := MergeEnv(test[0], test[1])
|
|
|
|
if len(result) != len(test[2]) {
|
|
|
|
t.Fatalf("expected %v, got %v", test[2], result)
|
|
|
|
}
|
|
|
|
for i := range result {
|
|
|
|
if result[i] != test[2][i] {
|
|
|
|
t.Fatalf("expected %v, got %v", test[2], result)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
2021-03-31 18:57:18 +08:00
|
|
|
|
2021-01-21 21:29:21 +08:00
|
|
|
func TestRuntime(t *testing.T) {
|
|
|
|
os.Setenv("CONTAINERS_CONF", "/dev/null")
|
|
|
|
conf, _ := config.Default()
|
|
|
|
defaultRuntime := conf.Engine.OCIRuntime
|
|
|
|
runtime := Runtime()
|
|
|
|
if runtime != defaultRuntime {
|
|
|
|
t.Fatalf("expected %v, got %v", runtime, defaultRuntime)
|
|
|
|
}
|
|
|
|
defaultRuntime = "myoci"
|
|
|
|
os.Setenv("BUILDAH_RUNTIME", defaultRuntime)
|
|
|
|
runtime = Runtime()
|
|
|
|
if runtime != defaultRuntime {
|
|
|
|
t.Fatalf("expected %v, got %v", runtime, defaultRuntime)
|
|
|
|
}
|
|
|
|
}
|
2021-03-31 18:57:18 +08:00
|
|
|
|
|
|
|
func TestMountsSort(t *testing.T) {
|
|
|
|
mounts1a := []specs.Mount{
|
|
|
|
{
|
|
|
|
Source: "/a/bb/c",
|
|
|
|
Destination: "/a/bb/c",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a/b/c",
|
|
|
|
Destination: "/a/b/c",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a",
|
|
|
|
Destination: "/a",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a/b",
|
|
|
|
Destination: "/a/b",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/d/e",
|
|
|
|
Destination: "/a/c",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/b",
|
|
|
|
Destination: "/b",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/",
|
|
|
|
Destination: "/",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a/b/c",
|
|
|
|
Destination: "/aa/b/c",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
mounts1b := []specs.Mount{
|
|
|
|
{
|
|
|
|
Source: "/xyz",
|
|
|
|
Destination: "/",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a",
|
|
|
|
Destination: "/a",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/b",
|
|
|
|
Destination: "/b",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a/b",
|
|
|
|
Destination: "/a/b",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/d/e",
|
|
|
|
Destination: "/a/c",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a/b/c",
|
|
|
|
Destination: "/a/b/c",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a/bb/c",
|
|
|
|
Destination: "/a/bb/c",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Source: "/a/b/c",
|
|
|
|
Destination: "/aa/b/c",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
sorted := SortMounts(mounts1a)
|
|
|
|
for i := range sorted {
|
|
|
|
if sorted[i].Destination != mounts1b[i].Destination {
|
|
|
|
t.Fatalf("failed sort \n%+v\n%+v", mounts1b, sorted)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|