Skip to content

test notebook status #16930

test notebook status

test notebook status #16930

Workflow file for this run

name: cli test
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: marimo
MARIMO_SKIP_UPDATE_CHECK: 1
jobs:
changes:
runs-on: ubuntu-latest
outputs:
cli: ${{ steps.filter.outputs.cli }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
cli:
- 'marimo/**'
- '.github/workflows/test_cli.yaml'
build_wheel:
needs: changes
if: ${{ needs.changes.outputs.cli == 'true' }}
name: Build marimo wheel
runs-on: ubuntu-latest
timeout-minutes: 8 # 2024-01-18
defaults:
run:
shell: bash
steps:
- name: 🛑 Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0 # so we can run --since on the main branch and turbo can do faster cache hashing
- uses: pnpm/action-setup@v4
- name: ⎔ Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: "pnpm"
cache-dependency-path: "**/pnpm-lock.yaml"
- name: 📦 Build frontend
run: make fe
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: 🥚 Install Hatch
uses: pypa/hatch@install
- name: 📦 Build marimo wheel
run: hatch build -t wheel
- name: Check for _static/_lsp directory in wheel
run: |
wheel_file=$(ls dist/*.whl)
files_or_dirs_to_check=(
"marimo/_static/"
"marimo/_lsp/"
"marimo/_tutorials/"
"third_party.txt"
"third_party_licenses.txt"
)
for file_or_dir in "${files_or_dirs_to_check[@]}"; do
if ! unzip -l "$wheel_file" | grep -q "$file_or_dir"; then
echo "Error: $file_or_dir not found in the wheel"
exit 1
else
echo "Found $file_or_dir in the wheel"
fi
done
- name: Run LSP binary
run: ./scripts/test-lsp.sh
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: testwheel
path: dist/*.whl
retention-days: 1
test_cli:
needs: [changes, build_wheel]
if: ${{ needs.changes.outputs.cli == 'true' }}
name: Tests CLI on ${{ matrix.os }} ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
timeout-minutes: 10 # 2024-01-18 avg: 2.5m max: 4.5m
strategy:
matrix:
python-version: ["3.12"]
# TODO: update to latest once networking issues on macos-15 are resolved
os: [ubuntu-latest, macos-14, windows-latest]
steps:
- name: 🛑 Cancel Previous Runs
uses: styfle/[email protected]
- uses: actions/checkout@v4
- name: 🐍 Setup uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
python-version: ${{ matrix.python-version }}
# TODO(https://github.com/astral-sh/setup-uv/issues/226): Remove this.
prune-cache: ${{ matrix.os != 'windows-latest' }}
- name: Install Python deps
run: |
uv add pytest pytest-asyncio pytest-timeout nbformat
- name: Download wheel
uses: actions/download-artifact@v4
with:
name: testwheel
- name: Install marimo
shell: bash
run: uv pip install marimo*whl
- name: Test CLI
shell: bash
run: |
uv run --no-project pytest -v tests/_cli/test_cli* --maxfail=2
test_examples:
needs: [changes, build_wheel]
if: ${{ needs.changes.outputs.cli == 'true' }}
name: Tests examples and smoke_tests
runs-on: ubuntu-latest
timeout-minutes: 3 # 2024-01-18 avg: 0.3m max: 0.5m
steps:
- name: 🛑 Cancel Previous Runs
uses: styfle/[email protected]
- uses: actions/checkout@v4
- name: 🐍 Setup uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
python-version: 3.12
- name: Download wheel
uses: actions/download-artifact@v4
with:
name: testwheel
- name: Install Python deps
run: |
uv add pytest pytest-asyncio
uv pip install marimo*whl
- name: Check example quality with marimo check
shell: bash
run: |
echo "Checking examples directory..."
uv run marimo check --ignore-scripts --strict examples/**.py
- name: Check tutorial quality with marimo check
shell: bash
run: |
echo "Checking tutorials..."
uv run marimo check --ignore-scripts --fix \
marimo/_tutorials/**.py >> /dev/null \
|| echo "Errors expected"
# Fail if there's a git diff
if [[ -n "$(git status --porcelain marimo/_tutorials)" ]]; then
echo "marimo check found issues in tutorials."
git --no-pager diff marimo/_tutorials
exit 1
fi