mirror of
https://github.com/lexmount/moli.git
synced 2026-09-23 08:01:28 +00:00
88 lines
2.6 KiB
Bash
Executable File
88 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
repo_root="$(cd "$script_dir/.." && pwd)"
|
|
wpt_root="${WPT_ROOT:-$repo_root/../wpt}"
|
|
venv="${WPT_MOLI_VENV:-$wpt_root/.venv-moli}"
|
|
moli_bin="${MOLI_BIN:-$repo_root/target/debug/moli}"
|
|
|
|
usage() {
|
|
cat <<'USAGE'
|
|
Usage:
|
|
scripts/moli-wpt-run.sh [--wpt-root PATH] [--venv PATH] [--moli-bin PATH] [--] [WPT_TEST_OR_RUN_ARG...]
|
|
|
|
Runs upstream WPT wdspec tests through the Moli wptrunner product.
|
|
The Python environment is created, installed, and executed via uv.
|
|
USAGE
|
|
}
|
|
|
|
args=()
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--wpt-root)
|
|
shift
|
|
wpt_root="${1:?missing --wpt-root value}"
|
|
venv="${WPT_MOLI_VENV:-$wpt_root/.venv-moli}"
|
|
;;
|
|
--venv)
|
|
shift
|
|
venv="${1:?missing --venv value}"
|
|
;;
|
|
--moli-bin)
|
|
shift
|
|
moli_bin="${1:?missing --moli-bin value}"
|
|
;;
|
|
--help|-h)
|
|
usage
|
|
exit 0
|
|
;;
|
|
--)
|
|
shift
|
|
args+=("$@")
|
|
break
|
|
;;
|
|
*)
|
|
args+=("$1")
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [[ ! -x "$moli_bin" ]]; then
|
|
echo "moli binary is not executable: $moli_bin" >&2
|
|
exit 2
|
|
fi
|
|
|
|
if [[ ! -x "$venv/bin/python" ]]; then
|
|
uv venv "$venv" --seed
|
|
fi
|
|
uv pip install --python "$venv/bin/python" \
|
|
-r "$wpt_root/tools/manifest/requirements.txt" \
|
|
-r "$wpt_root/tools/wpt/requirements.txt" \
|
|
-r "$wpt_root/tools/wptrunner/requirements.txt" \
|
|
-e "$repo_root/tools/wptrunner-moli"
|
|
|
|
# Some upstream wdspec files in local checkouts can miss an explicit
|
|
# pytest.mark.asyncio marker even though their async tests are intended to run.
|
|
# WPT's PytestExecutor treats pytest's implicit async skip as a harness error,
|
|
# so default to auto mode while allowing callers to override it.
|
|
case " ${PYTEST_ADDOPTS:-} " in
|
|
*"--asyncio-mode"*|*"asyncio_mode"*) ;;
|
|
*) export PYTEST_ADDOPTS="${PYTEST_ADDOPTS:+$PYTEST_ADDOPTS }--asyncio-mode=auto" ;;
|
|
esac
|
|
|
|
exec env WPT_ROOT="$wpt_root" uv run --no-project --python "$venv/bin/python" \
|
|
python -m moli_wptrunner.run \
|
|
--metadata "$wpt_root" \
|
|
--tests "$wpt_root" \
|
|
--manifest "$wpt_root/MANIFEST.json" \
|
|
--ssl-type pregenerated \
|
|
--ca-cert-path "$wpt_root/tools/certs/cacert.pem" \
|
|
--host-key-path "$wpt_root/tools/certs/web-platform.test.key" \
|
|
--host-cert-path "$wpt_root/tools/certs/web-platform.test.pem" \
|
|
--manifest-update --processes 1 --test-types wdspec \
|
|
--binary "$moli_bin" \
|
|
--product moli \
|
|
"${args[@]}"
|