Files
wehub-resource-sync bcbd1bdb22
Test (Python) / test-python-gate (push) Blocked by required conditions
Test (TypeScript) / test-typescript-gate (push) Blocked by required conditions
CLI exit codes / cli-gate (push) Blocked by required conditions
Test (Install) / test-install-gate (push) Blocked by required conditions
Integ / integ-gate (push) Blocked by required conditions
CLI exit codes / Python CLI (push) Waiting to run
Integ / changes (push) Has been skipped
Test (Install) / python-minimal (3.11) (push) Waiting to run
Test (Install) / python-minimal (3.12) (push) Waiting to run
Test (Install) / python-extra (chroma, mirage.resource.chroma) (push) Waiting to run
Integ / integ-ts (push) Waiting to run
Integ / integ (push) Waiting to run
Test (Install) / python-extra (deepagents, mirage.agents.langchain) (push) Waiting to run
Integ / integ-database (push) Waiting to run
Test (Install) / python-extra (email, mirage.resource.email) (push) Waiting to run
Test (Install) / python-extra (hdf5, mirage.core.filetype.hdf5) (push) Waiting to run
Integ / integ-ssh (push) Waiting to run
Pre-commit / pre-commit (push) Failing after 1s
CLI exit codes / changes (push) Has been skipped
Test (Install) / changes (push) Has been skipped
CLI exit codes / TypeScript CLI (push) Waiting to run
CLI exit codes / Cross-language snapshot interop (push) Waiting to run
Test (Install) / python-extra (agno, mirage.agents.agno) (push) Waiting to run
Test (Install) / python-extra (databricks, mirage.resource.databricks_volume) (push) Waiting to run
Test (Python) / changes (push) Has been skipped
Integ / integ-database-ts (push) Waiting to run
Test (Install) / python-extra (fuse, mirage.fuse.mount) (push) Waiting to run
Integ / integ-data (push) Waiting to run
Test (Install) / python-extra (lancedb, mirage.resource.lancedb) (push) Waiting to run
Test (Python) / test (push) Waiting to run
Integ / integ-fuse (push) Waiting to run
Test (Install) / python-extra (langfuse, mirage.resource.langfuse) (push) Waiting to run
Test (Python) / import-isolation (deepagents, openai, mirage.agents.openai_agents) (push) Waiting to run
Test (Python) / audit (push) Waiting to run
Test (Install) / python-extra (hf, mirage.resource.hf_buckets) (push) Waiting to run
Integ / integ-ssh-ts (push) Waiting to run
Test (Install) / python-extra (mongodb, mirage.resource.mongodb) (push) Waiting to run
Test (Python) / import-isolation (deepagents, pydantic-ai, mirage.agents.pydantic_ai) (push) Waiting to run
Test (TypeScript) / changes (push) Has been skipped
Test (Install) / python-extra (nextcloud, mirage.resource.nextcloud) (push) Waiting to run
Test (Install) / python-extra (openai, mirage.agents.openai_agents) (push) Waiting to run
Test (Install) / python-extra (openhands, mirage.agents.openhands, 3.12) (push) Waiting to run
Test (Install) / python-extra (parquet, mirage.core.filetype.parquet) (push) Waiting to run
Test (TypeScript) / test (push) Waiting to run
Test (Install) / python-extra (pdf, mirage.core.filetype.pdf) (push) Waiting to run
Test (TypeScript) / python-fs-shim (push) Waiting to run
Test (Install) / python-extra (postgres, mirage.resource.postgres) (push) Waiting to run
Test (Install) / python-extra (pydantic-ai, mirage.agents.pydantic_ai) (push) Waiting to run
Test (Install) / python-extra (qdrant, mirage.resource.qdrant) (push) Waiting to run
Test (Install) / python-extra (redis, mirage.resource.redis) (push) Waiting to run
Test (Install) / python-extra (s3, mirage.resource.s3) (push) Waiting to run
Test (Install) / python-extra (ssh, mirage.resource.ssh) (push) Waiting to run
Test (Install) / ts-minimal (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:30:44 +08:00

90 lines
3.0 KiB
Python

import asyncio
from types import SimpleNamespace
from mirage.resource.ram import RAMResource
from mirage.types import MountMode
from mirage.workspace import Workspace
from mirage.workspace.executor.fanout import (_adjust_depth_texts,
_synthesize_find_mount_entries)
def _mounts(*prefixes):
return [SimpleNamespace(prefix=p) for p in prefixes]
def test_synthesize_no_expression_emits_all():
desc = _mounts("/ram/", "/disk/")
assert _synthesize_find_mount_entries("/", desc, []) == "/ram\n/disk"
def test_synthesize_positive_name():
desc = _mounts("/ram/", "/disk/")
assert _synthesize_find_mount_entries("/", desc,
["-name", "ram"]) == "/ram"
def test_synthesize_honors_not():
desc = _mounts("/ram/", "/disk/", "/notes/")
out = _synthesize_find_mount_entries("/", desc, ["-not", "-name", "ram"])
assert out == "/disk\n/notes"
def test_synthesize_honors_or():
desc = _mounts("/ram/", "/disk/", "/notes/")
out = _synthesize_find_mount_entries(
"/", desc, ["-name", "ram", "-o", "-name", "disk"])
assert out == "/ram\n/disk"
def test_synthesize_type_file_excludes_mount_dirs():
desc = _mounts("/ram/", "/disk/")
assert _synthesize_find_mount_entries("/", desc, ["-type", "f"]) == ""
def test_synthesize_type_dir_includes_mount_dirs():
desc = _mounts("/ram/", "/disk/")
assert _synthesize_find_mount_entries("/", desc,
["-type", "d"]) == "/ram\n/disk"
def test_synthesize_maxdepth_window():
desc = _mounts("/ram/", "/a/b/")
assert _synthesize_find_mount_entries("/", desc,
["-maxdepth", "1"]) == "/ram"
def test_adjust_depth_texts_reduces_maxdepth_by_delta():
out = _adjust_depth_texts(["-maxdepth", "3", "-name", "x"], "/",
"/data/sub")
assert out == ["-maxdepth", "1", "-name", "x"]
def test_adjust_depth_texts_clamps_mindepth_at_zero():
out = _adjust_depth_texts(["-mindepth", "1"], "/", "/data")
assert out == ["-mindepth", "0"]
def test_adjust_depth_texts_no_depth_tokens_unchanged():
out = _adjust_depth_texts(["-name", "x", "-o", "-name", "y"], "/", "/data")
assert out == ["-name", "x", "-o", "-name", "y"]
def test_adjust_depth_texts_same_mount_unchanged():
assert _adjust_depth_texts(["-maxdepth", "3"], "/data",
"/data") == ["-maxdepth", "3"]
def test_maxdepth_applies_to_child_mount_depth_end_to_end():
parent = RAMResource()
child = RAMResource()
child._store.dirs.add("/a")
child._store.files["/a/b.txt"] = b"deep\n"
ws = Workspace(resources={
"/": (parent, MountMode.EXEC),
"/data/": (child, MountMode.EXEC),
}, )
io = asyncio.run(ws.execute("find / -maxdepth 2"))
out = (io.stdout if isinstance(io.stdout, bytes) else b"").decode()
assert "/data/a" in out
assert "/data/a/b.txt" not in out