Skip to content

chore(deps): bump the actions group with 3 updates (#132) #369

chore(deps): bump the actions group with 3 updates (#132)

chore(deps): bump the actions group with 3 updates (#132) #369

Workflow file for this run

name: Test code base
on:
pull_request:
branches:
- trunk
push:
branches:
- trunk
- release-*
tags:
- v*
workflow_dispatch:
permissions:
contents: read
jobs:
test_pip_install:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
name: Test pip install (Python ${{ matrix.python-version }})
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Run pip install
run: |
pip install .
pytest-unit:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
name: Unit tests on ${{ matrix.os }} (Python ${{ matrix.python-version }})
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install requirements
run: |
pip install ".[test]"
- name: Run unit tests
run: |
pytest -s -m "unit or not (integration or cloud or slow)" --ignore=tests/test_main.py tests/
pytest-integration:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
name: Integration tests on ${{ matrix.os }} (Python ${{ matrix.python-version }})
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install requirements
run: |
pip install ".[test]"
- name: Install Spice (https://install.spiceai.org) (Linux)
if: matrix.os == 'ubuntu-latest'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl https://install.spiceai.org | /bin/bash
echo "$HOME/.spice/bin" >> $GITHUB_PATH
$HOME/.spice/bin/spice install
- name: Install Spice (https://install.spiceai.org) (MacOS)
if: matrix.os == 'macos-latest'
run: |
brew install spiceai/spiceai/spice
brew install spiceai/spiceai/spiced
- name: install Spice (Windows)
if: matrix.os == 'windows-latest'
run: |
curl -L "https://install.spiceai.org/Install.ps1" -o Install.ps1 && PowerShell -ExecutionPolicy Bypass -File ./Install.ps1
- name: add Spice bin to PATH (Windows)
if: matrix.os == 'windows-latest'
run: |
Add-Content $env:GITHUB_PATH (Join-Path $HOME ".spice\bin")
shell: pwsh
- name: Init and start spice app
if: matrix.os != 'windows-latest'
run: |
spice init spice_qs
cd spice_qs
spice add spiceai/quickstart
spiced &> spice.log &
# Wait for runtime to be ready (poll /v1/ready endpoint)
for i in {1..60}; do
if curl -s http://localhost:8090/v1/ready > /dev/null 2>&1; then
echo "Spice runtime is ready"
break
fi
echo "Waiting for Spice runtime to be ready... ($i/60)"
sleep 1
done
- name: Init and start spice app (Windows)
if: matrix.os == 'windows-latest'
run: |
spice init spice_qs
cd spice_qs
spice add spiceai/quickstart
Start-Process -FilePath spice run
# Wait for runtime to be ready (poll /v1/ready endpoint)
$timeout = 60
$elapsed = 0
while ($elapsed -lt $timeout) {
try {
$response = Invoke-WebRequest -Uri "http://localhost:8090/v1/ready" -UseBasicParsing -TimeoutSec 2 -ErrorAction Stop
if ($response.StatusCode -eq 200) {
Write-Host "Spice runtime is ready"
break
}
} catch {
Write-Host "Waiting for Spice runtime to be ready... ($elapsed/$timeout)"
}
Start-Sleep -Seconds 1
$elapsed++
}
shell: pwsh
- name: Running tests
env:
API_KEY: ${{ secrets.API_KEY }}
# run spice.ai cloud tests only on linux with single python version, to avoid concurrent requests
TEST_SPICE_CLOUD: 'false'
run: |
pytest -s tests/test_main.py -k "not cloud"
- name: Stop spice and check logs
working-directory: spice_qs
if: matrix.os != 'windows-latest' && always()
run: |
killall spice || true
cat spice.log
pytest-cloud:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.12']
name: Cloud tests (Python ${{ matrix.python-version }})
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install requirements
run: |
pip install ".[test,params]"
- name: Run cloud tests
env:
SPICE_API_KEY: ${{ secrets.SCP_SPICEAI_TPCH_API_KEY }}
TEST_SPICE_CLOUD: 'true'
run: |
pytest -s tests/test_main.py -k "cloud"
coverage:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
name: Test coverage (Python ${{ matrix.python-version }})
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install requirements
run: |
pip install ".[test]"
- name: Run coverage
run: |
pytest --cov=spicepy --cov-report=xml --cov-report=term-missing --ignore=tests/test_main.py tests/
- name: Upload coverage to Codecov
if: matrix.python-version == '3.12'
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v4.5.0
with:
files: ./coverage.xml
fail_ci_if_error: false
verbose: true