test: prove canonical directory package identity

This commit is contained in:
2026-08-13 02:48:17 +09:00
parent 0aff801def
commit cc6799c3b1
5 changed files with 530 additions and 149 deletions

View File

@@ -132,7 +132,7 @@ fn rejectstable(dir: str, label: str, target: str, needle: str) void = {
@test fn standalone_and_package_artifact() void = {
let td: str = testenv.fresh();
let app: str = strings.concat(td, "/app");
let app: str = strings.concat(td, "/main");
mkdir(app);
testenv.writefile(strings.concat(app, "/main.ww"), strings.concat(
"package main;\n",
@@ -459,11 +459,11 @@ fn writediamond(td: str, reverse: bool) str = {
@test fn toolchain_library_root_stage_parity() void = {
let td: str = testenv.fresh();
let source: str = strings.concat(td, "/source library");
let app: str = strings.concat(source, "/app");
let app: str = strings.concat(source, "/main");
let dep: str = strings.concat(source, "/dep");
let leaf: str = strings.concat(source, "/leaf");
let runtime: str = strings.concat(td, "/runtime library");
let decoy: str = strings.concat(runtime, "/app");
let decoy: str = strings.concat(runtime, "/main");
let tools: str = strings.concat(td, "/tool wrappers");
let cwd: str = strings.concat(td, "/isolated cwd");
let defaultapp: str = strings.concat(td, "/default app");
@@ -556,7 +556,7 @@ fn writediamond(td: str, reverse: bool) str = {
testenv.driver(assemblers[si]),
testenv.driver(linkers[si]));
let av: []str = [testenv.driver(stages[si]), "build", "-o", bin,
"app"];
"main"];
let out: testenv.commandout;
testenv.runcommandenv(cwd, td, strings.concat("library-root-", prefix),
av, env, tmo(), &out);
@@ -701,6 +701,7 @@ fn writediamond(td: str, reverse: bool) str = {
let emptyassemblerreference: str = "";
let emptylinkerreference: str = "";
let emptyout: str = strings.concat(td, "/empty published binary");
let emptyidentity: str = testenv.localpackageidentity(defaultapp, "main");
let si: i32 = 0;
for (si < stages.len) {
let outpath: str = emptyout;
@@ -727,7 +728,7 @@ fn writediamond(td: str, reverse: bool) str = {
testenv.runcommandenv(cwd, td, strings.concat("empty-library-",
tags[si]), av, emptyenv, tmo(), &out);
let rootunit: str = testenv.readfile(strings.concat(emptywork,
"main.unit.ww"));
emptyidentity, ".unit.ww"));
let ctrace: str = testenv.readfile(compilertrace);
let atrace: str = testenv.readfile(assemblertrace);
let ltrace: str = testenv.readfile(linkertrace);
@@ -738,7 +739,8 @@ fn writediamond(td: str, reverse: bool) str = {
runav) != 42) {
fail("library-roots", "empty override did not use default roots");
};
if (!testenv.has(rootunit, "//ww:module-reset main\npackage main;")
if (!testenv.has(rootunit, strings.concat("//ww:module-reset ",
emptyidentity, "\npackage main;"))
|| testenv.has(rootunit, "//ww:module ")
|| !testenv.exists(strings.concat(emptywork, "types.wwi"))
|| !testenv.exists(strings.concat(emptywork, "types.a"))
@@ -789,7 +791,7 @@ fn writediamond(td: str, reverse: bool) str = {
@test fn persistent_build_reuse_tracks_driver_identity() void = {
let td: str = testenv.fresh();
let source: str = strings.concat(td, "/source tree");
let app: str = strings.concat(source, "/app");
let app: str = strings.concat(source, "/main");
let dep: str = strings.concat(source, "/dep");
let leaf: str = strings.concat(source, "/leaf");
let tools: str = strings.concat(td, "/tool wrappers");
@@ -871,7 +873,7 @@ fn writediamond(td: str, reverse: bool) str = {
testenv.driver(assemblers[si]),
testenv.driver(linkers[si]));
let av: []str = [copied[si], "build", "-w", work,
"-o", bin, "app"];
"-o", bin, "main"];
let out: testenv.commandout;
testenv.runcommandenv(cwd, td, strings.concat("driver-cold-",
tags[si]), av, env, tmo(), &out);
@@ -905,7 +907,7 @@ fn writediamond(td: str, reverse: bool) str = {
"/.wwtool.w6a")), testenv.readfile(assembler))
|| !testenv.same(testenv.readfile(strings.concat(work,
"/.wwtool.stamp")),
"ww workdir fmt 7 mode build asm 0\n")) {
"ww workdir fmt 8 mode build asm 0\n")) {
fail("driver-identity", "persistent artifacts or identities are incomplete");
};
let coldwwi: str = testenv.readfile(strings.concat(work, "/dep.wwi"));
@@ -1049,7 +1051,7 @@ fn writediamond(td: str, reverse: bool) str = {
let missingwork: str = strings.concat(td, "/missing workdir");
let missingbin: str = strings.concat(td, "/missing binary");
let badav: []str = [copied[si], "build", "-w", missingwork,
"-o", missingbin, "app"];
"-o", missingbin, "main"];
testenv.runcommandenv(cwd, td, strings.concat("driver-missing-",
tags[si]), badav, env, tmo(), &out);
let wantdiag: str = strings.concat("ww: workdir ", missingwork,