test: prove declared package import semantics
This commit is contained in:
@@ -368,7 +368,7 @@ fn writediamond(td: str, reverse: bool) str = {
|
||||
testenv.writefile(strings.concat(shared, "/a.ww"), asrc);
|
||||
};
|
||||
testenv.writefile(strings.concat(left, "/left.ww"), strings.concat(
|
||||
"package left;\nimport shared;\nimport shared;\n",
|
||||
"package left;\nimport shared;\n",
|
||||
"export fn make() shared.token = { return shared.token{value=shared.base() + 1}; };\n"));
|
||||
testenv.writefile(strings.concat(right, "/right.ww"), strings.concat(
|
||||
"package right;\nimport shared;\n",
|
||||
@@ -424,7 +424,7 @@ fn writediamond(td: str, reverse: bool) str = {
|
||||
let rightiface: str = testenv.readfile(strings.concat(scratch,
|
||||
"right.wwi"));
|
||||
if (testenv.occurrences(leftiface, "import shared;") != 1) {
|
||||
fail("diamond", "duplicate import escaped into export data");
|
||||
fail("diamond", "direct import is missing or duplicated in export data");
|
||||
};
|
||||
if (testenv.occurrences(leftiface, "export type token") != 1
|
||||
|| testenv.occurrences(rightiface, "export type token") != 1
|
||||
@@ -907,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 13 mode build asm 0\n")) {
|
||||
"ww workdir fmt 14 mode build asm 0\n")) {
|
||||
fail("driver-identity", "persistent artifacts or identities are incomplete");
|
||||
};
|
||||
let coldwwi: str = testenv.readfile(strings.concat(work, "/dep.wwi"));
|
||||
@@ -1293,7 +1293,7 @@ fn writediamond(td: str, reverse: bool) str = {
|
||||
"// ROOT_A\n",
|
||||
"export fn value() i32 = { return dep.value() + 2; };\n"));
|
||||
testenv.writefile(strings.concat(bar, "/z.ww"), strings.concat(
|
||||
"package bar;\nimport foo.dep;\n",
|
||||
"package bar;\n",
|
||||
"// ROOT_Z\n",
|
||||
"export fn other() i32 = { return 9; };\n"));
|
||||
testenv.writefile(strings.concat(commanddir, "/main.ww"), strings.concat(
|
||||
@@ -1819,16 +1819,21 @@ fn writediamond(td: str, reverse: bool) str = {
|
||||
@test fn generated_test_hook_is_not_a_user_exemption() void = {
|
||||
let td: str = testenv.fresh();
|
||||
let src: str = strings.concat(td, "/case.ww");
|
||||
let iface: str = strings.concat(td, "/test.wwi");
|
||||
testenv.writefile(src, strings.concat(
|
||||
"package probe;\nimport test;\n",
|
||||
"fn bad() void = { test.run(); };\n",
|
||||
"@test fn one() void = {};\n"));
|
||||
testenv.writefile(iface, strings.concat(
|
||||
"//ww:module test\n",
|
||||
"package test;\n",
|
||||
"export fn placeholder() void;\n"));
|
||||
let compilers: []str = ["w6c", "w6c_ww"];
|
||||
let i: i32 = 0;
|
||||
for (i < compilers.len) {
|
||||
let asm: str = strings.concat(td, "/case-", compilers[i], ".s");
|
||||
let av: []str = [testenv.driver(compilers[i]), "-T", "-c", "-o",
|
||||
asm, src];
|
||||
let av: []str = [testenv.driver(compilers[i]), "-T", "-c",
|
||||
"--import", "test", iface, "-o", asm, src];
|
||||
let co: testenv.commandout;
|
||||
command(td, strings.concat("test_hook_", compilers[i]), av, &co);
|
||||
if (co.termination != exec.termination.EXIT || co.code == 0
|
||||
|
||||
Reference in New Issue
Block a user