fix broken multiline test #427
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: CI | |
on: [push, pull_request] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
DEFAULT_NODE_VERSION: 22.x | |
jobs: | |
misc: | |
name: Tooling checks | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-latest | |
- ubuntu-latest | |
- windows-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ env.DEFAULT_NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.DEFAULT_NODE_VERSION }} | |
- name: Load dependency cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
**/node_modules | |
key: ${{ runner.os }}-modules-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Install dependencies | |
run: yarn install --frozen-lockfile | |
- name: Build TypeScript with esModuleInterop flag | |
run: yarn run build:ts --esModuleInterop true | |
- name: Run linter | |
run: yarn run lint | |
- name: Run depcheck | |
run: yarn run depcheck | |
- name: Test clean script | |
run: yarn run clean | |
test: | |
name: Jest tests | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-latest | |
- ubuntu-latest | |
- windows-latest | |
node-version: | |
- 18.x | |
- 20.x | |
- 22.x | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Load dependency cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
**/node_modules | |
key: ${{ runner.os }}-modules-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Install dependencies and build | |
run: yarn install --frozen-lockfile | |
- name: Run tests | |
run: yarn run test:ci | |
- name: Submit coverage results | |
uses: coverallsapp/github-action@v2 | |
with: | |
github-token: ${{ secrets.github_token }} | |
flag-name: run-${{ matrix.node-version }} | |
parallel: true | |
spectest: | |
name: Specification tests | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-latest | |
- ubuntu-latest | |
- windows-latest | |
node-version: | |
- 18.x | |
- 20.x | |
- 22.x | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Load dependency cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
**/node_modules | |
key: ${{ runner.os }}-modules-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Install dependencies and build | |
run: yarn install --frozen-lockfile | |
- name: Load RDF test suite cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
.rdf-test-suite-cache | |
.rdf-test-suite-ldf-cache | |
key: ${{ runner.os }}-rdftestsuite-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Run specification tests | |
run: yarn run test:spec | |
- name: Run integration tests | |
run: yarn run test:integration | |
browsertest: | |
name: Browser tests | |
strategy: | |
fail-fast: false | |
matrix: | |
browser: | |
- Chrome | |
- Firefox | |
- Webkit | |
runs-on: ubuntu-latest | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Load dependency cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
**/node_modules | |
key: ${{ runner.os }}-modules-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Install dependencies and build | |
run: yarn install --frozen-lockfile | |
- name: Install ${{ matrix.browser }} via Playwright | |
if: startsWith(matrix.browser, 'Webkit') | |
# The @L will convert 'Webkit' into lowercase 'webkit' which is the name Playwright expects. | |
run: yarn playwright install --with-deps ${BROWSER_NAME@L} | |
env: | |
BROWSER_NAME: ${{ matrix.browser }} | |
- name: Run browser tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 2 | |
max_attempts: 3 | |
# The tests will run on 'WebkitHeadless', 'FirefoxHeadless' and 'ChromeHeadless' | |
command: yarn run test:browser --browsers ${{ matrix.browser }}Headless | |
coveralls: | |
name: Coverage check | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Consolidate test coverage from different jobs | |
uses: coverallsapp/github-action@v2 | |
with: | |
github-token: ${{ secrets.github_token }} | |
parallel-finished: true | |
browserbuilds: | |
name: Browser builds | |
needs: | |
- misc | |
- test | |
- spectest | |
- browsertest | |
runs-on: ubuntu-latest | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ env.DEFAULT_NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.DEFAULT_NODE_VERSION }} | |
- name: Load dependency cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
**/node_modules | |
key: ${{ runner.os }}-modules-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Install dependencies and build | |
run: yarn install --frozen-lockfile | |
- name: Build browser bundles | |
run: yarn run build:browser | |
- name: Deploy browser builds | |
if: startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/tags/') | |
run: ./.github/deploy_browser.sh | |
env: | |
GH_TOKEN: ${{ secrets.PAT }} | |
dockerimages: | |
name: Docker images | |
needs: | |
- misc | |
- test | |
- spectest | |
- browsertest | |
env: | |
# TODO: remove this override once lerna-docker works with Node 18+ | |
DEFAULT_NODE_VERSION: 18.x | |
runs-on: ubuntu-latest | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ env.DEFAULT_NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.DEFAULT_NODE_VERSION }} | |
- name: Load dependency cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
**/node_modules | |
key: ${{ runner.os }}-modules-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Install dependencies and build monorepo | |
run: yarn install --frozen-lockfile | |
- name: Install Lerna Docker | |
run: sh -c "`curl -fsSl https://raw.githubusercontent.com/rubensworks/lerna-docker/master/install.sh`" | |
- name: Build Docker images | |
run: ~/.lerna-docker/bin/lerna-docker comunica build | |
- name: Deploy Docker images | |
if: startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/tags/') | |
run: ~/.lerna-docker/bin/lerna-docker comunica push | |
env: | |
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Deploy Docker images (next/major) | |
if: startsWith(github.ref, 'refs/heads/next') | |
run: ~/.lerna-docker/bin/lerna-docker comunica push next | |
env: | |
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | |
performance: | |
name: Performance benchmarks | |
if: startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/feature') || startsWith(github.ref, 'refs/heads/next') | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
benchmark: | |
- watdiv-file | |
- watdiv-tpf | |
- bsbm-file | |
- bsbm-tpf | |
- web | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ env.DEFAULT_NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.DEFAULT_NODE_VERSION }} | |
- name: Load dependency cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
**/node_modules | |
key: ${{ runner.os }}-modules-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Install dependencies and build monorepo | |
run: yarn install --frozen-lockfile | |
- name: Run benchmarks | |
run: cd performance/benchmark-${{ matrix.benchmark }}/ && yarn run performance:ci | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: performance-benchmark-${{ matrix.benchmark }} | |
path: performance/benchmark-${{ matrix.benchmark }}/combinations/combination_0/output/ | |
- name: Print raw output | |
run: cat performance/benchmark-${{ matrix.benchmark }}/combinations/combination_0/output/query-times.csv | |
performance-consolidate: | |
name: Performance analysis | |
needs: | |
- misc | |
- test | |
- spectest | |
- browsertest | |
- performance | |
runs-on: ubuntu-latest | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ env.DEFAULT_NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.DEFAULT_NODE_VERSION }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: performance-benchmark-watdiv-file | |
path: performance/benchmark-watdiv-file/combinations/combination_0/output/ | |
- uses: actions/download-artifact@v4 | |
with: | |
name: performance-benchmark-watdiv-tpf | |
path: performance/benchmark-watdiv-tpf/combinations/combination_0/output/ | |
- uses: actions/download-artifact@v4 | |
with: | |
name: performance-benchmark-bsbm-file | |
path: performance/benchmark-bsbm-file/combinations/combination_0/output/ | |
- uses: actions/download-artifact@v4 | |
with: | |
name: performance-benchmark-bsbm-tpf | |
path: performance/benchmark-bsbm-tpf/combinations/combination_0/output/ | |
- uses: actions/download-artifact@v4 | |
with: | |
name: performance-benchmark-web | |
path: performance/benchmark-web/combinations/combination_0/output/ | |
- name: Process benchmark detailed results | |
run: npx -p @rubensworks/process-sparql-benchmark-results psbr csv ghbench performance/benchmark-watdiv-file/combinations/combination_0/output/ performance/benchmark-watdiv-tpf/combinations/combination_0/output/ performance/benchmark-bsbm-file/combinations/combination_0/output/ performance/benchmark-bsbm-tpf/combinations/combination_0/output/ performance/benchmark-web/combinations/combination_0/output/ --overrideCombinationLabels WatDiv-File,WatDiv-TPF,BSBM-File,BSBM-TPF,Web --total false --detailed true --name ghbench-detail.json | |
- name: Process benchmark total results | |
run: npx -p @rubensworks/process-sparql-benchmark-results psbr csv ghbench performance/benchmark-watdiv-file/combinations/combination_0/output/ performance/benchmark-watdiv-tpf/combinations/combination_0/output/ performance/benchmark-bsbm-file/combinations/combination_0/output/ performance/benchmark-bsbm-tpf/combinations/combination_0/output/ performance/benchmark-web/combinations/combination_0/output/ --overrideCombinationLabels WatDiv-File,WatDiv-TPF,BSBM-File,BSBM-TPF,Web --total true --detailed false --name ghbench-total.json | |
- name: Determine benchmark detailed results target directory name | |
run: echo "BENCHMARK_DATA_DIR_PATH_DETAIL=comunica/${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}/benchmarks-detail" >> $GITHUB_ENV | |
- name: Determine benchmarks total results target directory name | |
run: echo "BENCHMARK_DATA_DIR_PATH_TOTAL=comunica/${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}/benchmarks-total" >> $GITHUB_ENV | |
- name: Finalize benchmarks detailed results | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
name: Benchmarks detailed results | |
tool: customSmallerIsBetter | |
output-file-path: ghbench-detail.json | |
github-token: ${{ secrets.PAT }} | |
auto-push: true | |
alert-comment-cc-users: '@rubensworks' | |
gh-repository: github.com/comunica/comunica-performance-results | |
gh-pages-branch: master | |
benchmark-data-dir-path: ${{ env.BENCHMARK_DATA_DIR_PATH_DETAIL }} | |
- name: Cleanup benchmark-action data | |
run: rm -rf ./benchmark-data-repository | |
- name: Finalize benchmarks total results | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
name: Benchmarks total results | |
tool: customSmallerIsBetter | |
output-file-path: ghbench-total.json | |
github-token: ${{ secrets.PAT }} | |
auto-push: true | |
alert-threshold: '150%' | |
comment-always: true | |
comment-on-alert: true | |
alert-comment-cc-users: '@rubensworks' | |
summary-always: true | |
gh-repository: github.com/comunica/comunica-performance-results | |
gh-pages-branch: master | |
benchmark-data-dir-path: ${{ env.BENCHMARK_DATA_DIR_PATH_TOTAL }} | |
- name: Prepare comment on commit with link to performance results | |
run: echo -e "Performance benchmarks succeeded! 🚀\n\n\[[Summarized results](https://comunica.github.io/comunica-performance-results/comunica/${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}/benchmarks-total/)\] \[[Detailed results](https://comunica.github.io/comunica-performance-results/comunica/${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}/benchmarks-detail/)\]" > ./commit-comment-body.txt | |
- name: Comment on commit with link to performance results | |
uses: peter-evans/commit-comment@v3 | |
with: | |
body-path: ./commit-comment-body.txt | |
documentation: | |
name: Prepare documentation | |
runs-on: ubuntu-latest | |
steps: | |
- name: Ensure line endings are consistent | |
run: git config --global core.autocrlf input | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Use Node.js ${{ env.DEFAULT_NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.DEFAULT_NODE_VERSION }} | |
- name: Load dependency cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
**/node_modules | |
key: ${{ runner.os }}-modules-${{ secrets.CACHE_VERSION }}-${{ hashFiles('yarn.lock') }} | |
- name: Install dependencies | |
run: yarn install --ignore-scripts --frozen-lockfile | |
- name: Build documentation | |
run: yarn run doc | |
- name: Prepare artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: documentation | |
name: documentation | |
documentation-publish: | |
name: Publish documentation | |
needs: | |
- misc | |
- test | |
- spectest | |
- browsertest | |
- documentation | |
runs-on: ubuntu-latest | |
# The documentation is only published for master branch | |
if: startsWith(github.ref, 'refs/heads/master') | |
permissions: | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 | |
with: | |
artifact_name: documentation |