summaryrefslogtreecommitdiffstats
path: root/llhttp/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to 'llhttp/.github/workflows')
-rw-r--r--llhttp/.github/workflows/aiohttp.yml61
-rw-r--r--llhttp/.github/workflows/ci.yaml117
2 files changed, 178 insertions, 0 deletions
diff --git a/llhttp/.github/workflows/aiohttp.yml b/llhttp/.github/workflows/aiohttp.yml
new file mode 100644
index 0000000..8ae8eb3
--- /dev/null
+++ b/llhttp/.github/workflows/aiohttp.yml
@@ -0,0 +1,61 @@
+name: Aiohttp
+# If you don't understand the reason for a test failure, ping @Dreamsorcerer or open an issue in aio-libs/aiohttp.
+
+on:
+ push:
+ branches:
+ - 'main'
+ pull_request:
+ branches:
+ - 'main'
+
+jobs:
+ test:
+ permissions:
+ contents: read # to fetch code (actions/checkout)
+
+ name: Aiohttp regression tests
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout aiohttp
+ uses: actions/checkout@v4
+ with:
+ repository: aio-libs/aiohttp
+ - name: Checkout llhttp
+ uses: actions/checkout@v4
+ with:
+ path: vendor/llhttp
+ - name: Restore node_modules cache
+ uses: actions/cache@v3
+ with:
+ path: vendor/llhttp/.npm
+ key: ubuntu-latest-node-${{ hashFiles('vendor/llhttp/**/package-lock.json') }}
+ restore-keys: ubuntu-latest-node-
+ - name: Install llhttp dependencies
+ run: npm install --ignore-scripts
+ working-directory: vendor/llhttp
+ - name: Build llhttp
+ run: make
+ working-directory: vendor/llhttp
+ - name: Setup Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: 3.x
+ cache: 'pip'
+ cache-dependency-path: 'requirements/*.txt'
+ - name: Provision the dev env
+ run: >-
+ PATH="${HOME}/.local/bin:${PATH}"
+ make .develop
+ - name: Run tests
+ env:
+ COLOR: yes
+ run: >-
+ PATH="${HOME}/.local/bin:${PATH}"
+ pytest tests/test_http_parser.py tests/test_web_functional.py
+ - name: Run dev_mode tests
+ env:
+ COLOR: yes
+ run: >-
+ PATH="${HOME}/.local/bin:${PATH}"
+ python -X dev -m pytest -m dev_mode tests/test_http_parser.py tests/test_web_functional.py
diff --git a/llhttp/.github/workflows/ci.yaml b/llhttp/.github/workflows/ci.yaml
new file mode 100644
index 0000000..d1b3a65
--- /dev/null
+++ b/llhttp/.github/workflows/ci.yaml
@@ -0,0 +1,117 @@
+name: CI
+
+on: [push, pull_request]
+
+env:
+ CI: true
+
+jobs:
+ build:
+ name: Build libllhttp.a
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os:
+ - macos-latest
+ - ubuntu-latest
+ - windows-latest
+ steps:
+ - name: Install clang for Windows
+ if: runner.os == 'Windows'
+ run: |
+ iwr -useb get.scoop.sh -outfile 'install.ps1'
+ .\install.ps1 -RunAsAdmin
+ scoop install llvm --global
+
+ # Scoop modifies the PATH so we make the modified PATH global.
+ echo $env:PATH >> $env:GITHUB_PATH
+
+ - name: Fetch code
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 1
+
+ # Skip macOS & Windows, cache there is slower
+ - name: Restore node_modules cache for Linux
+ uses: actions/cache@v3
+ if: runner.os == 'Linux'
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-
+
+ - name: Install dependencies
+ run: npm install --ignore-scripts
+
+ - name: Build libllhttp.a
+ shell: bash
+ run: |
+ make build/libllhttp.a
+
+ test:
+ name: Run tests
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os:
+ - macos-latest
+ - ubuntu-latest
+ - windows-latest
+ steps:
+ - name: Install clang for Windows
+ if: runner.os == 'Windows'
+ run: |
+ iwr -useb get.scoop.sh -outfile 'install.ps1'
+ .\install.ps1 -RunAsAdmin
+ scoop install llvm --global
+
+ # Scoop modifies the PATH so we make the modified PATH global.
+ echo $env:PATH >> $env:GITHUB_PATH
+
+ - name: Fetch code
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 1
+
+ # Skip macOS & Windows, cache there is slower
+ - name: Restore node_modules cache for Linux
+ uses: actions/cache@v3
+ if: runner.os == 'Linux'
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-
+
+ - name: Install dependencies
+ run: npm install --ignore-scripts
+
+ # Custom script, because progress looks not good in CI
+ - name: Run tests
+ env:
+ CFLAGS: -O0
+ run: npx mocha --timeout 30000 -r ts-node/register/type-check test/*-test.ts
+
+ lint:
+ name: Run TSLint
+ runs-on: ubuntu-latest
+ steps:
+ - name: Fetch code
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 1
+
+ - name: Restore node_modules cache
+ uses: actions/cache@v3
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-
+
+ - name: Install dependencies
+ run: npm install --ignore-scripts
+
+ - name: Run lint command
+ run: npm run lint