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]>
170 lines
4.6 KiB
Smarty
170 lines
4.6 KiB
Smarty
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
resolve_runfile() {
|
|
local logical_path="$1"
|
|
local workspace_logical_path="${logical_path}"
|
|
if [[ -n "${TEST_WORKSPACE:-}" ]]; then
|
|
workspace_logical_path="${TEST_WORKSPACE}/${logical_path}"
|
|
fi
|
|
|
|
for runfiles_root in "${RUNFILES_DIR:-}" "${TEST_SRCDIR:-}"; do
|
|
if [[ -n "${runfiles_root}" && -e "${runfiles_root}/${logical_path}" ]]; then
|
|
printf '%s\n' "${runfiles_root}/${logical_path}"
|
|
return 0
|
|
fi
|
|
if [[ -n "${runfiles_root}" && -e "${runfiles_root}/${workspace_logical_path}" ]]; then
|
|
printf '%s\n' "${runfiles_root}/${workspace_logical_path}"
|
|
return 0
|
|
fi
|
|
done
|
|
|
|
local manifest="${RUNFILES_MANIFEST_FILE:-}"
|
|
if [[ -z "${manifest}" ]]; then
|
|
if [[ -f "$0.runfiles_manifest" ]]; then
|
|
manifest="$0.runfiles_manifest"
|
|
elif [[ -f "$0.exe.runfiles_manifest" ]]; then
|
|
manifest="$0.exe.runfiles_manifest"
|
|
fi
|
|
fi
|
|
|
|
if [[ -n "${manifest}" && -f "${manifest}" ]]; then
|
|
local resolved=""
|
|
resolved="$(awk -v key="${logical_path}" '$1 == key { $1 = ""; sub(/^ /, ""); print; exit }' "${manifest}")"
|
|
if [[ -z "${resolved}" ]]; then
|
|
resolved="$(awk -v key="${workspace_logical_path}" '$1 == key { $1 = ""; sub(/^ /, ""); print; exit }' "${manifest}")"
|
|
fi
|
|
if [[ -n "${resolved}" ]]; then
|
|
printf '%s\n' "${resolved}"
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
echo "failed to resolve runfile: $logical_path" >&2
|
|
return 1
|
|
}
|
|
|
|
workspace_root_marker="$(resolve_runfile "__WORKSPACE_ROOT_MARKER__")"
|
|
workspace_root="$(dirname "$(dirname "$(dirname "${workspace_root_marker}")")")"
|
|
test_bin="$(resolve_runfile "__TEST_BIN__")"
|
|
RUNFILE_ENV_ARGS=()
|
|
|
|
__RUNFILE_ENV_EXPORTS__
|
|
|
|
run_test_bin() {
|
|
if (( ${#RUNFILE_ENV_ARGS[@]} > 0 )); then
|
|
env "${RUNFILE_ENV_ARGS[@]}" "${test_bin}" "$@"
|
|
else
|
|
"${test_bin}" "$@"
|
|
fi
|
|
}
|
|
|
|
exec_test_bin() {
|
|
if (( ${#RUNFILE_ENV_ARGS[@]} > 0 )); then
|
|
exec env "${RUNFILE_ENV_ARGS[@]}" "${test_bin}" "$@"
|
|
else
|
|
exec "${test_bin}" "$@"
|
|
fi
|
|
}
|
|
|
|
libtest_args=("$@")
|
|
if [[ ${#libtest_args[@]} -eq 0 && -n "${TESTBRIDGE_TEST_ONLY:-}" ]]; then
|
|
libtest_args+=("${TESTBRIDGE_TEST_ONLY}")
|
|
fi
|
|
|
|
test_shard_index() {
|
|
local test_name="$1"
|
|
# FNV-1a 32-bit hash. Keep this stable so adding one test does not reshuffle
|
|
# unrelated tests between shards.
|
|
local hash=2166136261
|
|
local byte
|
|
local char
|
|
local i
|
|
local LC_ALL=C
|
|
|
|
for ((i = 0; i < ${#test_name}; i++)); do
|
|
char="${test_name:i:1}"
|
|
printf -v byte "%d" "'$char"
|
|
hash=$(( ((hash ^ byte) * 16777619) & 0xffffffff ))
|
|
done
|
|
|
|
echo $(( hash % TOTAL_SHARDS ))
|
|
}
|
|
|
|
run_selected_libtest() {
|
|
if [[ -n "${TEST_SHARD_STATUS_FILE:-}" && "${TEST_TOTAL_SHARDS:-0}" != "0" ]]; then
|
|
touch "${TEST_SHARD_STATUS_FILE}"
|
|
fi
|
|
|
|
# Extra libtest args are usually ad-hoc local filters. Preserve those exactly
|
|
# rather than combining them with generated exact filters.
|
|
if [[ ${#libtest_args[@]} -gt 0 ]]; then
|
|
exec_test_bin "${libtest_args[@]}"
|
|
fi
|
|
|
|
local has_shards=0
|
|
if [[ -n "${TOTAL_SHARDS}" && "${TOTAL_SHARDS}" != "0" ]]; then
|
|
has_shards=1
|
|
fi
|
|
|
|
if [[ "${has_shards}" == "1" && -z "${SHARD_INDEX}" ]]; then
|
|
echo "TEST_SHARD_INDEX or RULES_RUST_TEST_SHARD_INDEX must be set when sharding is enabled" >&2
|
|
exit 1
|
|
fi
|
|
|
|
local list_output
|
|
local test_list
|
|
list_output="$(run_test_bin --list --format terse)"
|
|
test_list="$(printf '%s\n' "${list_output}" | grep ': test$' | sed 's/: test$//' | LC_ALL=C sort || true)"
|
|
|
|
if [[ -z "${test_list}" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
local skip_filters="${CODEX_BAZEL_TEST_SKIP_FILTERS:-}"
|
|
|
|
local shard_tests=()
|
|
local test_name
|
|
while IFS= read -r test_name; do
|
|
local skip=0
|
|
if [[ -n "${skip_filters}" ]]; then
|
|
local filter
|
|
local old_ifs="${IFS}"
|
|
IFS=','
|
|
for filter in ${skip_filters}; do
|
|
if [[ -n "${filter}" && "${test_name}" == *"${filter}"* ]]; then
|
|
skip=1
|
|
break
|
|
fi
|
|
done
|
|
IFS="${old_ifs}"
|
|
fi
|
|
if [[ "${skip}" == "1" ]]; then
|
|
continue
|
|
fi
|
|
if [[ "${has_shards}" == "0" || $(test_shard_index "${test_name}") == "${SHARD_INDEX}" ]]; then
|
|
shard_tests+=("${test_name}")
|
|
fi
|
|
done <<< "${test_list}"
|
|
|
|
if [[ ${#shard_tests[@]} -eq 0 ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
exec_test_bin "${shard_tests[@]}" --exact
|
|
}
|
|
|
|
__WORKSPACE_ROOT_SETUP__
|
|
|
|
TOTAL_SHARDS="${RULES_RUST_TEST_TOTAL_SHARDS:-${TEST_TOTAL_SHARDS:-}}"
|
|
SHARD_INDEX="${RULES_RUST_TEST_SHARD_INDEX:-${TEST_SHARD_INDEX:-}}"
|
|
if [[ -n "${CODEX_BAZEL_TEST_SKIP_FILTERS:-}" || ( -n "${TOTAL_SHARDS}" && "${TOTAL_SHARDS}" != "0" ) ]]; then
|
|
run_selected_libtest
|
|
fi
|
|
|
|
if [[ ${#libtest_args[@]} -gt 0 ]]; then
|
|
exec_test_bin "${libtest_args[@]}"
|
|
else
|
|
exec_test_bin
|
|
fi
|