| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- name: Tests
- on:
- push:
- paths-ignore:
- - "*.md"
- branches-ignore:
- - master
- workflow_call:
- # Ensure that multiple runs on the same branch do not overlap.
- concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
- defaults:
- run:
- shell: bash
- jobs:
- build-test:
- name: Build and test
- runs-on: ubuntu-24.04
- strategy:
- matrix:
- nim: ["2.0.x", "2.2.x", "devel"]
- steps:
- - name: Checkout Code
- uses: actions/checkout@v6
- - name: Cache Nimble Dependencies
- id: cache-nimble
- uses: actions/cache@v5
- with:
- path: ~/.nimble
- key: ${{ matrix.nim }}-nimble-v2-${{ hashFiles('*.nimble') }}
- restore-keys: |
- ${{ matrix.nim }}-nimble-v2-
- - name: Setup Nim
- uses: jiro4989/setup-nim-action@v2
- with:
- nim-version: ${{ matrix.nim }}
- use-nightlies: true
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- - name: Build Project
- run: nimble build -Y
- - name: Upload 2.2.x build artifact
- if: matrix.nim == '2.2.x'
- uses: actions/upload-artifact@v6
- with:
- name: nitter-linux-nim-2.2.x-${{ github.sha }}
- path: |
- ./nitter
- if-no-files-found: error
- integration-test:
- needs: [build-test]
- name: Integration test
- runs-on: ubuntu-24.04
- services:
- redis:
- image: redis:7
- ports:
- - 6379:6379
- steps:
- - name: Install runtime deps
- run: |
- sudo apt-get install -y --no-install-recommends libsass-dev libpcre3
- - name: Checkout code
- uses: actions/checkout@v6
- - name: Cache pipx (poetry)
- uses: actions/cache@v5
- with:
- path: |
- ~/.local/pipx
- ~/.local/bin
- key: pipx-poetry-${{ runner.os }}
- - name: Install poetry
- env:
- PIPX_HOME: ~/.local/pipx
- PIPX_BIN_DIR: ~/.local/bin
- run: command -v poetry >/dev/null 2>&1 || pipx install poetry
- - name: Setup Python (3.14) with Poetry cache
- uses: actions/setup-python@v6
- with:
- python-version: "3.14"
- cache: poetry
- cache-dependency-path: tests/poetry.lock
- - name: Install Python deps
- working-directory: tests
- run: poetry sync
- - name: Cache Nimble Dependencies
- uses: actions/cache@v5
- with:
- path: ~/.nimble
- key: 2.2.x-nimble-v2-${{ hashFiles('*.nimble') }}
- restore-keys: |
- 2.2.x-nimble-v2-
- - name: Setup Nim
- uses: jiro4989/setup-nim-action@v2
- with:
- nim-version: 2.2.x
- use-nightlies: true
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- - name: Download 2.2.x build artifact
- uses: actions/download-artifact@v4
- with:
- name: nitter-linux-nim-2.2.x-${{ github.sha }}
- path: .
- - name: Make nitter binary executable
- run: chmod +x ./nitter
- - name: Prepare Nitter Environment
- run: |
- cp nitter.example.conf nitter.conf
- sed -i 's/enableDebug = false/enableDebug = true/g' nitter.conf
- # Run both Nimble tasks concurrently
- nim r tools/rendermd.nim &
- nim r tools/gencss.nim &
- wait
- echo '${{ secrets.SESSIONS }}' | head -n1
- echo '${{ secrets.SESSIONS }}' > ./sessions.jsonl
- - name: Run Tests
- run: |
- ./nitter &
- cd tests
- poetry run pytest -n3 --reruns=3 --rs .
|