ce7cb702218693d08ea6d83464d2457c9250027c
This commit is contained in:
commit
34c5f8963c
1 changed files with 145336 additions and 0 deletions
58
services/minecraft/test_publish.py
Normal file
58
services/minecraft/test_publish.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import hashlib
|
||||
import io
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import publish
|
||||
|
||||
|
||||
class MemoryStore:
|
||||
def __init__(self) -> None:
|
||||
self.objects: dict[str, bytes] = {}
|
||||
|
||||
def put_object(self, *, Bucket: str, Key: str, Body: Any) -> None:
|
||||
assert Bucket == "artifacts"
|
||||
self.objects[Key] = Body if isinstance(Body, bytes) else Body.read()
|
||||
|
||||
def get_object(self, *, Bucket: str, Key: str) -> dict[str, io.BytesIO]:
|
||||
assert Bucket == "artifacts"
|
||||
return {"Body": io.BytesIO(self.objects[Key])}
|
||||
|
||||
|
||||
class PublishTest(unittest.TestCase):
|
||||
def test_publish(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
root = Path(temporary)
|
||||
source, tools = root / "pack", root / "tools"
|
||||
for group in ("config", "defaultconfigs", "kubejs", "libraries", "libraries-integratedscripting", "mods"):
|
||||
(source / group).mkdir(parents=True)
|
||||
(source / group / "file").write_text(group)
|
||||
(source / "mods/test.jar").write_bytes(b"mod")
|
||||
(source / "user_jvm_args.txt").write_text("-Xmx1G")
|
||||
ranks = source / "world/serverconfig/ftbranks/ranks.snbt"
|
||||
ranks.parent.mkdir(parents=True)
|
||||
ranks.write_text("ranks")
|
||||
(ranks.parent / "players.snbt").write_text("test player")
|
||||
(source / "server.properties").write_text("test credential")
|
||||
(tools / "amd64").mkdir(parents=True)
|
||||
(tools / "amd64/mc-monitor").write_bytes(b"monitor")
|
||||
exporter = root / "exporter.jar"
|
||||
exporter.write_bytes(b"exporter")
|
||||
files = publish.files_for(source, tools, exporter)
|
||||
client = MemoryStore()
|
||||
publish.publish(client, files)
|
||||
self.assertEqual(set(files["mods"]), {"test.jar", "exporter.jar"})
|
||||
self.assertNotIn("minecraft/server.properties", client.objects)
|
||||
self.assertNotIn("minecraft/world/serverconfig/ftbranks/players.snbt", client.objects)
|
||||
self.assertIn("minecraft/world/serverconfig/ftbranks/ranks.snbt", client.objects)
|
||||
self.assertEqual(client.objects["minecraft/world-datapacks.sha256"], b"")
|
||||
expected = hashlib.sha256(b"mod").hexdigest()
|
||||
self.assertIn(f"{expected} test.jar\n".encode(), client.objects["minecraft/mods.sha256"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Reference in a new issue