Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license

This commit is contained in:
2026-09-05 13:26:46 +03:00
commit 03634b1ca3
11340 changed files with 3442369 additions and 0 deletions
@@ -0,0 +1,94 @@
"""A CLI install must never resolve the desktop workspace.
``apps/desktop`` declares ``node-pty``, which ships no Linux prebuild and so
falls back to ``node-gyp rebuild``. A bare ``npm install`` at the repo root
resolves the root ``apps/*`` workspace glob and drags it in, so a host with no
make/gcc cannot finish an install for a machine that will never launch Electron
or a PTY addon (#38311, #38772). Since #85297 a failed npm install aborts the
whole install, so this is the difference between a working CLI install and none.
These exercise the real ``node_deps_workspace_args`` from ``scripts/install.sh``.
``--manifest`` makes the installer print its stage manifest and stop before
``main``, so sourcing it defines every function without running an install.
"""
import shutil
import subprocess
from pathlib import Path
import pytest
REPO_ROOT = Path(__file__).resolve().parent.parent
INSTALL_SH = REPO_ROOT / "scripts" / "install.sh"
pytestmark = pytest.mark.skipif(shutil.which("bash") is None, reason="needs bash")
def workspace_args(install_dir: Path) -> list[str]:
"""Return the npm arguments install.sh would use for ``install_dir``."""
script = (
f'source "{INSTALL_SH}" --manifest >/dev/null\n'
f'node_deps_workspace_args "{install_dir}"\n'
'printf "%s\\n" "${NODE_DEPS_WORKSPACE_ARGS[@]}"\n'
)
result = subprocess.run(
["bash", "-c", script],
capture_output=True,
text=True,
check=True,
)
return result.stdout.split()
def make_checkout(root: Path, workspaces: tuple[str, ...]) -> Path:
"""Lay out a checkout with a root package and the given workspace dirs."""
(root / "package.json").write_text('{"workspaces": ["apps/*", "ui-tui", "web"]}')
for workspace in ("apps/desktop", *workspaces):
directory = root / workspace
directory.mkdir(parents=True)
(directory / "package.json").write_text("{}")
return root
def selected_workspaces(args: list[str]) -> list[str]:
return [value for flag, value in zip(args, args[1:]) if flag == "--workspace"]
@pytest.mark.parametrize(
"workspaces",
[("ui-tui", "web"), ("ui-tui",), ("web",), ()],
ids=["full", "tui-only", "web-only", "bare"],
)
def test_desktop_workspace_is_never_selected(tmp_path, workspaces):
"""No checkout shape may let apps/desktop (and its node-pty) resolve."""
args = workspace_args(make_checkout(tmp_path, workspaces))
assert "desktop" not in " ".join(args)
# Constraining npm is the whole point: an empty argument list would leave
# npm resolving every workspace, including apps/*.
assert args, "npm must be constrained, otherwise apps/* resolves"
assert "--workspaces=false" in args or selected_workspaces(args)
def test_present_workspaces_are_installed_alongside_the_root(tmp_path):
"""ui-tui and web are what a CLI install needs; the root owns shared
devDependencies that a scoped install would otherwise prune."""
args = workspace_args(make_checkout(tmp_path, ("ui-tui", "web")))
assert selected_workspaces(args) == ["ui-tui", "web"]
assert "--include-workspace-root" in args
def test_absent_workspace_is_not_named(tmp_path):
"""npm fails hard on a workspace it cannot find, so a partial checkout
must only name the workspaces that exist."""
args = workspace_args(make_checkout(tmp_path, ("ui-tui",)))
assert selected_workspaces(args) == ["ui-tui"]
def test_bare_checkout_installs_the_root_only(tmp_path):
"""With no installable workspace, npm still must not walk apps/*."""
args = workspace_args(make_checkout(tmp_path, ()))
assert args == ["--workspaces=false"]