volume-manager: the id-path deriver + volumes.csv override (S2)
NEW volume-map.zig: idString(identity) renders a volume's content identity into its stable mount id-string — gpt-<32hex>, fat-<8hex>, mbr-<sig>-<index> — the token whose default mount path is /volumes/<id>, so the path IS the id and never a port or a label; two volumes that share a label get distinct ids automatically. parse() reads volumes.csv (id, mount_prefix) into OPTIONAL overrides; overrideFor returns a pinned prefix or null (the volume takes its default /volumes/<id>). id_maximum is a declared bound; the fixture sizes are named. Three host tests (each rung's id token; override hit/miss; malformed rows counted), wired into the VM package test step with csv. Not yet consumed by the binary — that lands when the VM loads the tables and composes paths (step 4).
This commit is contained in:
@@ -40,4 +40,15 @@ pub fn build(b: *std.Build) void {
|
||||
}),
|
||||
});
|
||||
test_step.dependOn(&b.addRunArtifact(filesystem_map_tests).step);
|
||||
|
||||
// volume-map imports csv (and, by path, partition.zig) for the id-path
|
||||
// deriver and the volumes.csv override parser.
|
||||
const volume_map_tests = b.addTest(.{
|
||||
.root_module = b.createModule(.{
|
||||
.root_source_file = b.path("volume-map.zig"),
|
||||
.target = b.resolveTargetQuery(.{}),
|
||||
.imports = &.{.{ .name = "csv", .module = csv.module("csv") }},
|
||||
}),
|
||||
});
|
||||
test_step.dependOn(&b.addRunArtifact(volume_map_tests).step);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user