Add Minecraft 26.x support and version Java artifacts
This commit is contained in:
@@ -46,6 +46,21 @@ test("dataset requires five unique in-bounds viewpoints and safe paths", () => {
|
||||
assets: [{ path: "terrain.json.gz", sha256: "a".repeat(64), bytes: 100 }],
|
||||
};
|
||||
assert.equal(datasetSchema.safeParse(base).success, true);
|
||||
for (const minecraftVersion of ["26.1", "26.1.1", "26.1.2", "26.2"])
|
||||
assert.equal(
|
||||
datasetSchema.safeParse({ ...base, minecraftVersion }).success,
|
||||
true,
|
||||
);
|
||||
for (const minecraftVersion of [
|
||||
"26.3",
|
||||
"1.21.10",
|
||||
"26.2-snapshot",
|
||||
"../secrets",
|
||||
])
|
||||
assert.equal(
|
||||
datasetSchema.safeParse({ ...base, minecraftVersion }).success,
|
||||
false,
|
||||
);
|
||||
assert.equal(datasetSchema.safeParse({ ...base, assets: [] }).success, false);
|
||||
assert.equal(
|
||||
datasetSchema.safeParse({ ...base, source: "fabric" }).success,
|
||||
|
||||
@@ -37,7 +37,11 @@ const jar = zipSync(
|
||||
);
|
||||
const checksum = createHash("sha1").update(jar).digest("hex");
|
||||
|
||||
async function isolatedCache(t: TestContext, corruptDownload = false) {
|
||||
async function isolatedCache(
|
||||
t: TestContext,
|
||||
corruptDownload = false,
|
||||
minecraftVersion = "1.21.11",
|
||||
) {
|
||||
const previous = process.cwd();
|
||||
const cacheParent = resolve(".cache");
|
||||
await mkdir(cacheParent, { recursive: true });
|
||||
@@ -54,7 +58,9 @@ async function isolatedCache(t: TestContext, corruptDownload = false) {
|
||||
requests.push(url);
|
||||
if (url.includes("version_manifest_v2"))
|
||||
return Response.json({
|
||||
versions: [{ id: "1.21.11", url: "https://fixture.invalid/version" }],
|
||||
versions: [
|
||||
{ id: minecraftVersion, url: "https://fixture.invalid/version" },
|
||||
],
|
||||
});
|
||||
if (url.endsWith("/version"))
|
||||
return Response.json({
|
||||
@@ -91,6 +97,27 @@ test("missing vanilla cache is prepared completely and subsequent runs work offl
|
||||
assert.deepEqual(requests, []);
|
||||
});
|
||||
|
||||
test("26.x assets use distinct verified caches and reject unsupported versions", async (t) => {
|
||||
await isolatedCache(t, false, "26.2");
|
||||
const directory = await prepareAssets("26.2");
|
||||
assert.equal(directory, ".cache/minecraft/26.2");
|
||||
const marker = JSON.parse(
|
||||
await readFile(`${directory}/.minegeo-assets.json`, "utf8"),
|
||||
);
|
||||
assert.equal(marker.minecraftVersion, "26.2");
|
||||
await assert.rejects(readFile(`${assetsRoot}/.minegeo-assets.json`), {
|
||||
code: "ENOENT",
|
||||
});
|
||||
await assert.rejects(
|
||||
prepareAssets("../secrets"),
|
||||
/Unsupported Minecraft asset version/,
|
||||
);
|
||||
await assert.rejects(
|
||||
prepareAssets("26.3"),
|
||||
/Unsupported Minecraft asset version/,
|
||||
);
|
||||
});
|
||||
|
||||
test("an interrupted extraction with only a blockstate cannot masquerade as complete", async (t) => {
|
||||
await isolatedCache(t);
|
||||
await mkdir(`${assetsRoot}/assets/minecraft/blockstates`, {
|
||||
|
||||
Reference in New Issue
Block a user