hst/fslink: improve string representation
All checks were successful
Test / Create distribution (push) Successful in 35s
Test / Sandbox (push) Successful in 2m7s
Test / Hakurei (push) Successful in 3m14s
Test / Hpkg (push) Successful in 4m1s
Test / Sandbox (race detector) (push) Successful in 4m29s
Test / Hakurei (race detector) (push) Successful in 5m9s
Test / Flake checks (push) Successful in 1m25s

This shortens the representation of most common use cases and generally improves readability.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
Ophestra 2025-08-25 22:52:48 +09:00
parent 9585b35d5b
commit c328b584c0
Signed by: cat
SSH Key Fingerprint: SHA256:gQ67O0enBZ7UdZypgtspB2FDM1g3GVw8nX0XSdcFw8Q
3 changed files with 26 additions and 10 deletions

View File

@ -51,8 +51,8 @@ Filesystem
w+ephemeral(-rwxr-xr-x):/tmp/ w+ephemeral(-rwxr-xr-x):/tmp/
w*/nix/store:/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
*/nix/store */nix/store
&/run/current-system:*/run/current-system /run/current-system@
&/run/opengl-driver:*/run/opengl-driver /run/opengl-driver@
w*/var/lib/hakurei/u0/org.chromium.Chromium:/data/data/org.chromium.Chromium w*/var/lib/hakurei/u0/org.chromium.Chromium:/data/data/org.chromium.Chromium
d+/dev/dri d+/dev/dri
@ -128,8 +128,8 @@ Filesystem
w+ephemeral(-rwxr-xr-x):/tmp/ w+ephemeral(-rwxr-xr-x):/tmp/
w*/nix/store:/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
*/nix/store */nix/store
&/run/current-system:*/run/current-system /run/current-system@
&/run/opengl-driver:*/run/opengl-driver /run/opengl-driver@
w*/var/lib/hakurei/u0/org.chromium.Chromium:/data/data/org.chromium.Chromium w*/var/lib/hakurei/u0/org.chromium.Chromium:/data/data/org.chromium.Chromium
d+/dev/dri d+/dev/dri

View File

@ -50,9 +50,12 @@ func (l *FSLink) String() string {
return "<invalid>" return "<invalid>"
} }
dereference := "" var dereference string
if l.Dereference { if l.Dereference {
if l.Target.String() == l.Linkname {
return l.Target.String() + "@"
}
dereference = "*" dereference = "*"
} }
return "&" + l.Target.String() + ":" + dereference + l.Linkname return l.Target.String() + " -> " + dereference + l.Linkname
} }

View File

@ -12,7 +12,20 @@ func TestFSLink(t *testing.T) {
{"nil", (*hst.FSLink)(nil), false, nil, nil, nil, "<invalid>"}, {"nil", (*hst.FSLink)(nil), false, nil, nil, nil, "<invalid>"},
{"zero", new(hst.FSLink), false, nil, nil, nil, "<invalid>"}, {"zero", new(hst.FSLink), false, nil, nil, nil, "<invalid>"},
{"deref rel", &hst.FSLink{Target: m("/"), Linkname: ":3", Dereference: true}, false, nil, nil, nil, "<invalid>"}, {"deref rel", &hst.FSLink{Target: m("/"), Linkname: ":3", Dereference: true},
false, nil, nil, nil, "<invalid>"},
{"deref differs", &hst.FSLink{
Target: m("/.hakurei/etc"),
Linkname: "/etc/static",
Dereference: true,
}, true, container.Ops{
&container.SymlinkOp{
Target: m("/.hakurei/etc"),
LinkName: "/etc/static",
Dereference: true,
},
}, m("/.hakurei/etc"), nil,
"/.hakurei/etc -> */etc/static"},
{"deref", &hst.FSLink{ {"deref", &hst.FSLink{
Target: m("/run/current-system"), Target: m("/run/current-system"),
Linkname: "/run/current-system", Linkname: "/run/current-system",
@ -24,7 +37,7 @@ func TestFSLink(t *testing.T) {
Dereference: true, Dereference: true,
}, },
}, m("/run/current-system"), nil, }, m("/run/current-system"), nil,
"&/run/current-system:*/run/current-system"}, "/run/current-system@"},
{"direct", &hst.FSLink{ {"direct", &hst.FSLink{
Target: m("/etc/mtab"), Target: m("/etc/mtab"),
@ -34,7 +47,7 @@ func TestFSLink(t *testing.T) {
Target: m("/etc/mtab"), Target: m("/etc/mtab"),
LinkName: "/proc/mounts", LinkName: "/proc/mounts",
}, },
}, m("/etc/mtab"), nil, "&/etc/mtab:/proc/mounts"}, }, m("/etc/mtab"), nil, "/etc/mtab -> /proc/mounts"},
{"direct rel", &hst.FSLink{ {"direct rel", &hst.FSLink{
Target: m("/etc/mtab"), Target: m("/etc/mtab"),
@ -44,6 +57,6 @@ func TestFSLink(t *testing.T) {
Target: m("/etc/mtab"), Target: m("/etc/mtab"),
LinkName: "../proc/mounts", LinkName: "../proc/mounts",
}, },
}, m("/etc/mtab"), nil, "&/etc/mtab:../proc/mounts"}, }, m("/etc/mtab"), nil, "/etc/mtab -> ../proc/mounts"},
}) })
} }