| name: CI |
| |
| on: [push] |
| |
| jobs: |
| build: |
| runs-on: ${{ matrix.os }} |
| strategy: |
| matrix: |
| os: |
| - ubuntu-latest |
| - macos-latest |
| - windows-latest |
| python: |
| - '3.8' |
| - '3.11' |
| |
| steps: |
| - uses: actions/checkout@v4 |
| with: |
| submodules: true |
| |
| - name: Cache pip |
| uses: actions/cache@v4 |
| with: |
| key: cache--${{ matrix.os }}--${{ matrix.python }}--${{ hashFiles('./requirements*.txt', './Makefile') }} |
| restore-keys: cache--${{ matrix.os }}--${{ matrix.python }}-- |
| path: ~/.cache/pip |
| |
| - name: Setup python |
| uses: actions/setup-python@v5 |
| with: |
| python-version: ${{ matrix.python }} |
| |
| - name: Display Python version |
| run: python -c 'import sys; print(sys.version)' |
| |
| - name: Update pip |
| run: python -m pip install -U pip wheel setuptools |
| |
| - name: Install requirements |
| run: python -m pip install -Ur requirements-dev.txt |
| |
| - name: Compile project |
| run: make install |
| |
| - name: Run JSON5 tests suite |
| run: python scripts/run-tests.py |
| |
| - name: Run "JSON is a Minefield" suite |
| run: python scripts/run-minefield-test.py |
| |
| lint: |
| runs-on: ubuntu-latest |
| |
| steps: |
| - uses: actions/checkout@v4 |
| with: |
| submodules: true |
| |
| - name: Cache pip |
| uses: actions/cache@v4 |
| with: |
| key: lint--${{ hashFiles('./requirements*.txt', './Makefile') }} |
| restore-keys: lint-- |
| path: ~/.cache/pip |
| |
| - name: Setup python |
| uses: actions/setup-python@v5 |
| with: |
| python-version: '3.11' |
| |
| - name: Display Python version |
| run: python -c 'import sys; print(sys.version)' |
| |
| - name: Update pip |
| run: python -m pip install -U pip wheel setuptools |
| |
| - name: Install requirements |
| run: python -m pip install -Ur requirements-dev.txt |
| |
| - name: Compile project |
| run: make install |
| |
| - name: Run black |
| run: python -m black --check ./*.py ./src/ |