feat: release Dever 0.1.5 with direct workers and long transactions

This commit is contained in:
Codex committed 2026-10-11 11:17:33 +00:00
1 parent 89629c2197
commit a900d7e8db
153 files changed
+3676 -3708

No files matched your search

+23 -13
View File
@@ -6,6 +6,7 @@ import hashlib
import importlib.util
import io
import json
import os
from pathlib import Path
import subprocess
import tarfile
@@ -17,6 +18,7 @@ from install_support import load_installer
ROOT = Path(__file__).resolve().parents[2]
ZSTD = Path(os.environ.get("DEVER_TEST_ZSTD", "/usr/bin/zstd"))
def load_module(name, path):
@@ -86,7 +88,7 @@ class InstallerTests(unittest.TestCase):
self.platform, "1.2.3")
def create_assets(self, output):
return assets.create(self.release, output, Path("/usr/bin/zstd"))
return assets.create(self.release, output, ZSTD)
def release_record(self, directory, version="1.2.3"):
return {
@@ -98,7 +100,7 @@ class InstallerTests(unittest.TestCase):
}
def archive_payloads(self, path):
contents = subprocess.run(["/usr/bin/zstd", "-q", "-d", "-c", str(path)],
contents = subprocess.run([str(ZSTD), "-q", "-d", "-c", str(path)],
env={}, capture_output=True, check=True, timeout=15).stdout
with tarfile.open(fileobj=io.BytesIO(contents)) as archive:
return {member.name: archive.extractfile(member).read() for member in archive}
@@ -135,24 +137,32 @@ class InstallerTests(unittest.TestCase):
self.create_assets(first)
def test_extension_assets_are_separate_and_cannot_overlap_base(self):
base_only = self.root / "base-only"
self.create_assets(base_only)
manifest_path = self.release / "manifest.json"
manifest = json.loads(manifest_path.read_text())
name = f"runtime/pip/{self.platform}/runtime.pack"
path = self.release / name
path.parent.mkdir(parents=True)
contents = b"optional Python bytes"
path.write_bytes(contents)
entry = {"path": name, "bytes": len(contents), "sha256": hashlib.sha256(contents).hexdigest()}
manifest["extensions"] = [{"kind": {"type": "runtime", "ecosystem": "pip"},
"target": self.platform, "artifacts": [entry]}]
expected = {}
for ecosystem in ("pip", "npm", "go"):
name = f"runtime/{ecosystem}/{self.platform}/runtime.pack"
path = self.release / name
path.parent.mkdir(parents=True)
contents = f"optional {ecosystem} bytes".encode()
path.write_bytes(contents)
entry = {"path": name, "bytes": len(contents), "sha256": hashlib.sha256(contents).hexdigest()}
manifest["extensions"].append({"kind": {"type": "runtime", "ecosystem": ecosystem},
"target": self.platform, "artifacts": [entry]})
expected[ecosystem] = {name: contents}
manifest_path.write_text(json.dumps(manifest))
self.sign_manifest()
self.authenticate()
output = self.root / "split"
self.create_assets(output)
self.assertEqual(self.archive_payloads(output / f"dever-{self.platform}.tar.zst"), self.payloads)
extension = output / f"dever-{self.platform}.ext-runtime-pip-{self.platform}.tar.zst"
self.assertEqual(self.archive_payloads(extension), {name: contents})
base_name = f"dever-{self.platform}.tar.zst"
self.assertEqual(self.archive_payloads(output / base_name), self.payloads)
self.assertEqual((output / base_name).read_bytes(), (base_only / base_name).read_bytes())
for ecosystem, payloads in expected.items():
extension = output / f"dever-{self.platform}.ext-runtime-{ecosystem}-{self.platform}.tar.zst"
self.assertEqual(self.archive_payloads(extension), payloads)
manifest["extensions"][0]["artifacts"].append(self.catalog["dever-core"])
manifest_path.write_text(json.dumps(manifest))
with self.assertRaisesRegex(ValueError, "resource namespace"):