Python wrapper, API #1167
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
env: | |
CARGO_TERM_COLOR: always | |
WASM_PACK_VERSION: "v0.10.3" | |
jobs: | |
test: | |
name: Test | |
runs-on: ${{matrix.os}} | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- build: linux | |
os: ubuntu-latest | |
rust: beta | |
target: x86_64-unknown-linux-musl | |
cross: false | |
- build: macos | |
os: macos-latest | |
rust: beta | |
target: x86_64-apple-darwin | |
cross: false | |
- build: windows | |
os: windows-latest | |
rust: beta | |
target: x86_64-pc-windows-msvc | |
cross: false | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
~/.rustup | |
target | |
key: ${{ runner.os }}-${{ matrix.rust }}-min165 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
override: true | |
default: true | |
components: rustfmt, clippy | |
- name: Set up python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
# NOTE: ^this strategy leaves older python versions intentionally | |
# without test coverage to keep CI fast. | |
- name: Check versions | |
run: | | |
cargo --version | |
rustc --version | |
- name: Install wasm-pack | |
uses: jetli/[email protected] | |
with: | |
version: ${{env.WASM_PACK_VERSION}} | |
- name: Build Coupled JS | |
working-directory: ./pagefind_web_js | |
run: npm i && npm run build-coupled | |
- name: Build WASM | |
working-directory: ./pagefind_web | |
run: ./local_build.sh | |
- name: Build UI | |
working-directory: ./pagefind_ui/default | |
run: npm i && npm run build | |
- name: Build Modular UI | |
working-directory: ./pagefind_ui/modular | |
run: npm i && npm run build | |
- name: Test Web | |
working-directory: ./pagefind_web | |
run: cargo test --release | |
- name: Build Testing Binary | |
working-directory: ./pagefind | |
run: cargo build --release --features extended | |
- name: Upload Testing Binary | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pagefind-${{ matrix.target }} | |
path: target/release/pagefind${{ matrix.build == 'windows' && '.exe' || '' }} | |
- name: Test Lib | |
working-directory: ./pagefind | |
run: cargo test --release --lib --features extended | |
- name: Test CLI | |
run: ./test_ci.sh "release" | |
- name: Set up poetry | |
run: ./wrappers/python/scripts/ci/github/setup_poetry.sh | |
- name: cache venv | |
uses: actions/cache@v4 | |
with: | |
path: wrappers/python/.venv | |
key: ${{ runner.os }}-poetry-3.12-${{ hashFiles('**/poetry.lock') }} | |
- name: Install dev dependencies | |
run: ./wrappers/python/scripts/ci/github/install_dev_dependencies.sh | |
- name: activate venv | |
run: ./wrappers/python/scripts/ci/github/activate_venv.sh | |
- name: debug python paths | |
run: ./wrappers/python/scripts/ci/github/debug_python_paths.sh | |
- name: Lint python | |
# avoid duplicating linting work on different OSes | |
if: runner.os == 'Linux' | |
working-directory: ./wrappers/python | |
run: ./scripts/ci/python_lints.sh | |
- name: ensure cog up-to-date | |
# avoid duplicating linting work on different OSes | |
if: runner.os == 'Linux' | |
working-directory: ./wrappers/python | |
run: ./scripts/ci/cog/check.sh | |
- name: set PYTHONPATH | |
shell: bash | |
working-directory: ./wrappers/python | |
run: python ./scripts/ci/github/add_src_to_pythonpath.py | |
- name: add target/release to windows PATH | |
shell: bash | |
run: echo $PWD/target/release >> "$GITHUB_PATH" | |
- name: Test python API | |
timeout-minutes: 1 | |
# ^ guard against the tests getting deadlock if the subprocess pipe | |
# gets clogged | |
run: ./wrappers/python/scripts/ci/github/integration_tests.sh |