test: add pytest-timeout in cli test #8385
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: cli test | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
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: | |
- '**' | |
- '!docs/**' | |
- '!examples/**' | |
- '!README.md' | |
build_wheel: | |
needs: changes | |
if: ${{ needs.changes.outputs.cli == 'true' }} | |
name: Build marimo wheel | |
runs-on: ubuntu-latest | |
timeout-minutes: 3 # 2024-01-18 avg: 0.8m max: 1.0m | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: 🛑 Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.12.1 | |
- 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@v2 | |
with: | |
version: 9 | |
- name: ⎔ Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: 'pnpm' | |
cache-dependency-path: '**/pnpm-lock.yaml' | |
- name: 📦 Build frontend | |
run: make fe | |
env: | |
NODE_OPTIONS: '--max_old_space_size=8192' | |
- 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: 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'] | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
steps: | |
- name: 🛑 Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.12.1 | |
- uses: actions/checkout@v4 | |
- name: 🐍 Setup uv | |
uses: astral-sh/setup-uv@v5 | |
with: | |
enable-cache: true | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python deps | |
run: | | |
uv pip install 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/cancel-workflow-action@0.12.1 | |
- uses: actions/checkout@v4 | |
- name: 🐍 Setup uv | |
uses: astral-sh/setup-uv@v5 | |
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 pip install pytest pytest-asyncio | |
uv pip install marimo*whl | |
- name: Test examples | |
shell: bash | |
run: uv run pytest -v -s tests/_smoke_tests/run_all.py | |
# TODO(msconick) remove continue-on-error when all tests pass | |
continue-on-error: true |