mirror of
https://github.com/hanzoai/dev.git
synced 2026-10-25 03:32:32 +00:00
Our history is just-every's with author emails rewritten, so the graphs are
disjoint and git finds no merge base. Supplied one by hand: d1f1f51a41, the
just-every commit matching our Oct-2025 fork point (22 files apart). 9618
upstream commits, 7004 files, +1.81M/-159k, 37 conflicts.
Resolution:
- Upstream code where our side was the Oct-2025 prototype of a feature they
have since reimplemented 3-5x larger (agent_runs, browser_sessions,
history_cell/{agent,browser}, the vt100 harness and its snapshots).
- Upstream's config.rs module split (builder/defaults/sources/validation)
kept; zen5-coder and the provider-follows-model rule re-applied on top.
- Ours where the file IS the identity: README, package.json, postinstall,
release notes pipeline, integration-zed.
- Hybrid where upstream improved a file we had branded: updates.rs (their
release-repo migration, our hanzoai/dev), release.yml (their fail-fast npm
auth check, our package name), chatwidget.rs (their turn handling, our
HANZO_USER_KEY hint), exec human output (their 237 lines, our banner).
Superseded and dropped deliberately: our resume_command_name() coder-alias
hack — upstream's derive_resume_command_name() reads the invocation basename
generically, which yields "dev" for us.
LLM.md now records the real topology and the sync point; AGENTS.md and
CLAUDE.md are symlinks to it again. Single parent on purpose: adopting
jecode/main as a second parent would re-import 13,742 commits carrying the
upstream author emails a prior rewrite deliberately removed.
Version 0.2.188 -> 0.2.189.
Co-authored-by: Hanzo Dev <[email protected]>
122 lines
3.4 KiB
Python
122 lines
3.4 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
import unittest
|
|
|
|
import wrapper_common
|
|
|
|
|
|
class WrapperCommonTest(unittest.TestCase):
|
|
def test_defaults_to_workspace_and_all_targets(self) -> None:
|
|
parsed = wrapper_common.parse_wrapper_args([])
|
|
final_args = wrapper_common.build_final_args(parsed, Path("/repo/codex-rs/Cargo.toml"))
|
|
|
|
self.assertEqual(
|
|
final_args,
|
|
[
|
|
"--manifest-path",
|
|
"/repo/codex-rs/Cargo.toml",
|
|
"--workspace",
|
|
"--no-deps",
|
|
"--",
|
|
"--all-targets",
|
|
],
|
|
)
|
|
|
|
def test_forwarded_cargo_args_keep_single_separator(self) -> None:
|
|
parsed = wrapper_common.parse_wrapper_args(["-p", "codex-core", "--", "--tests"])
|
|
final_args = wrapper_common.build_final_args(parsed, Path("/repo/codex-rs/Cargo.toml"))
|
|
|
|
self.assertEqual(
|
|
final_args,
|
|
[
|
|
"--manifest-path",
|
|
"/repo/codex-rs/Cargo.toml",
|
|
"--no-deps",
|
|
"-p",
|
|
"codex-core",
|
|
"--",
|
|
"--tests",
|
|
],
|
|
)
|
|
|
|
def test_fix_does_not_add_all_targets(self) -> None:
|
|
parsed = wrapper_common.parse_wrapper_args(["--fix", "-p", "codex-core"])
|
|
final_args = wrapper_common.build_final_args(parsed, Path("/repo/codex-rs/Cargo.toml"))
|
|
|
|
self.assertEqual(
|
|
final_args,
|
|
[
|
|
"--manifest-path",
|
|
"/repo/codex-rs/Cargo.toml",
|
|
"--no-deps",
|
|
"--fix",
|
|
"-p",
|
|
"codex-core",
|
|
],
|
|
)
|
|
|
|
def test_explicit_manifest_and_workspace_are_preserved(self) -> None:
|
|
parsed = wrapper_common.parse_wrapper_args(
|
|
[
|
|
"--manifest-path",
|
|
"/tmp/custom/Cargo.toml",
|
|
"--workspace",
|
|
"--no-deps",
|
|
"--",
|
|
"--bins",
|
|
]
|
|
)
|
|
final_args = wrapper_common.build_final_args(parsed, Path("/repo/codex-rs/Cargo.toml"))
|
|
|
|
self.assertEqual(
|
|
final_args,
|
|
[
|
|
"--manifest-path",
|
|
"/tmp/custom/Cargo.toml",
|
|
"--workspace",
|
|
"--no-deps",
|
|
"--",
|
|
"--bins",
|
|
],
|
|
)
|
|
|
|
def test_explicit_package_manifest_does_not_force_workspace(self) -> None:
|
|
parsed = wrapper_common.parse_wrapper_args(
|
|
[
|
|
"--manifest-path",
|
|
"/tmp/custom/Cargo.toml",
|
|
]
|
|
)
|
|
final_args = wrapper_common.build_final_args(parsed, Path("/repo/codex-rs/Cargo.toml"))
|
|
|
|
self.assertEqual(
|
|
final_args,
|
|
[
|
|
"--no-deps",
|
|
"--manifest-path",
|
|
"/tmp/custom/Cargo.toml",
|
|
"--",
|
|
"--all-targets",
|
|
],
|
|
)
|
|
|
|
def test_default_lint_env_promotes_both_strict_lints(self) -> None:
|
|
env: dict[str, str] = {}
|
|
|
|
wrapper_common.set_default_lint_env(env)
|
|
|
|
self.assertEqual(
|
|
env["DYLINT_RUSTFLAGS"],
|
|
"-D argument-comment-mismatch "
|
|
"-D uncommented-anonymous-literal-argument "
|
|
"-A unknown_lints",
|
|
)
|
|
self.assertEqual(env["CARGO_INCREMENTAL"], "0")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|