package hst_test import ( "testing" "hakurei.app/container" "hakurei.app/hst" ) func TestFSOverlay(t *testing.T) { checkFs(t, []fsTestCase{ {"nil", (*hst.FSOverlay)(nil), false, nil, nil, nil, ""}, {"nil lower", &hst.FSOverlay{Dst: m("/etc"), Lower: []*container.Absolute{nil}}, false, nil, nil, nil, ""}, {"zero lower", &hst.FSOverlay{Dst: m("/etc"), Upper: m("/"), Work: m("/")}, false, nil, nil, nil, ""}, {"zero lower ro", &hst.FSOverlay{Dst: m("/etc")}, false, nil, nil, nil, ""}, {"short lower", &hst.FSOverlay{Dst: m("/etc"), Lower: ms("/etc")}, false, nil, nil, nil, ""}, {"full", &hst.FSOverlay{ Dst: m("/nix/store"), Lower: ms("/mnt-root/nix/.ro-store"), Upper: m("/mnt-root/nix/.rw-store/upper"), Work: m("/mnt-root/nix/.rw-store/work"), }, true, container.Ops{&container.MountOverlayOp{ Target: m("/nix/store"), Lower: ms("/mnt-root/nix/.ro-store"), Upper: m("/mnt-root/nix/.rw-store/upper"), Work: m("/mnt-root/nix/.rw-store/work"), }}, m("/nix/store"), ms("/mnt-root/nix/.rw-store/upper", "/mnt-root/nix/.rw-store/work", "/mnt-root/nix/.ro-store"), "w*/nix/store:/mnt-root/nix/.rw-store/upper:/mnt-root/nix/.rw-store/work:/mnt-root/nix/.ro-store"}, {"ro", &hst.FSOverlay{ Dst: m("/mnt/src"), Lower: ms("/tmp/.src0", "/tmp/.src1"), }, true, container.Ops{&container.MountOverlayOp{ Target: m("/mnt/src"), Lower: ms("/tmp/.src0", "/tmp/.src1"), }}, m("/mnt/src"), ms("/tmp/.src0", "/tmp/.src1"), "*/mnt/src:/tmp/.src0:/tmp/.src1"}, {"ro work", &hst.FSOverlay{ Dst: m("/mnt/src"), Lower: ms("/tmp/.src0", "/tmp/.src1"), Work: m("/tmp"), }, true, container.Ops{&container.MountOverlayOp{ Target: m("/mnt/src"), Lower: ms("/tmp/.src0", "/tmp/.src1"), }}, m("/mnt/src"), ms("/tmp/.src0", "/tmp/.src1"), "*/mnt/src:/tmp/.src0:/tmp/.src1"}, }) }