From bb8970a982300e9c96e8357766dfe2209369f0cc Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Fri, 6 Mar 2026 10:44:16 -0600 Subject: [PATCH] Add a Termux integration test (#18332) After this, I want to figure out how to unify more of the smoke, system, and integration tests, but this seems like a sufficient start for Termux testing. --- .github/workflows/test-integration.yml | 25 +++++++++++++++++++++++++ test/integration/termux.sh | 18 ++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 test/integration/termux.sh diff --git a/.github/workflows/test-integration.yml b/.github/workflows/test-integration.yml index 7926760f7..0c65f719a 100644 --- a/.github/workflows/test-integration.yml +++ b/.github/workflows/test-integration.yml @@ -652,6 +652,31 @@ jobs: .\uv.exe pip install --extra-index-url=$env:PYODIDE_INDEX --no-build numpy python -c 'import numpy' + integration-test-termux: + name: "termux on android" + timeout-minutes: 15 + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: "Download binary" + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + name: uv-linux-musl-${{ inputs.sha }} + + - name: "Prepare binary" + run: chmod +x ./uv + + - name: "Run uv on Termux" + run: | + docker run --rm \ + -v "$PWD/uv:/uv" \ + -v "$PWD/test/integration/termux.sh:/test-termux.sh" \ + termux/termux-docker:x86_64 \ + /entrypoint.sh bash /test-termux.sh + integration-test-github-actions: name: "github actions" timeout-minutes: 10 diff --git a/test/integration/termux.sh b/test/integration/termux.sh new file mode 100755 index 000000000..41901b54d --- /dev/null +++ b/test/integration/termux.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +set -euxo pipefail + +# Install uv into the Termux prefix +cp /uv /data/data/com.termux/files/usr/bin/uv +chmod +x /data/data/com.termux/files/usr/bin/uv + +# Install Python +pkg install -y python + +# Test uv +uv --version + +# Termux uses Bionic libc (not glibc or musl), so uv cannot discover +# managed Python installations. Use only-system to skip that check. +export UV_PYTHON_PREFERENCE=only-system +uv python find +uv run -- python --version