feat: release Dever 0.1.5 with direct workers and long transactions
This commit is contained in:
1 parent
89629c2197
commit
a900d7e8db
153 files changed
+3676
-3708
No files matched your search
@@ -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"):
|
||||
|
||||
Reference in new issue
Block a user