rework lint and test #854
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: Lint Code / Run Tests | |
on: | |
workflow_call: | |
workflow_dispatch: | |
push: | |
branches: | |
- "*" | |
pull_request: | |
branches: ["master"] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} | |
cancel-in-progress: true | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
tests: | |
name: Run Unit Tests | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.rust == 'nightly' }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
rust: [stable, beta, nightly] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- run: rustup toolchain install ${{ matrix.rust }} --profile minimal | |
- uses: Swatinem/rust-cache@v2 | |
- uses: actions/setup-python@v3 | |
- name: Set up Ruby on Windows | |
if: runner.os == 'Windows' | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.1' | |
msys2: true | |
- name: Install Ruby on Ubuntu | |
if: runner.os == 'Linux' | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.2.6' | |
- name: Setup Ruby on Ubuntu | |
if: runner.os == 'Linux' | |
run: sudo ln -s "$(which ruby)" /usr/bin/ruby3.2 | |
# Install Strawberry Perl | |
- name: Install Strawberry Perl | |
if: runner.os == 'Windows' | |
run: choco install strawberryperl --version=5.32.1.1 | |
# Set Perl environment to Strawberry Perl | |
- name: Set Perl environment to Strawberry Perl | |
if: runner.os == 'Windows' | |
run: echo "PERL=C:/Strawberry/perl/bin/perl.exe" | Out-File -FilePath $env:GITHUB_ENV -Append | |
# Install MSYS2 and MinGW on Windows | |
- name: Install MSYS2 and MinGW on Windows | |
if: runner.os == 'Windows' | |
uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
install: > | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-gcc | |
mingw-w64-x86_64-openssl | |
base-devel | |
path-type: inherit | |
- name: Set MinGW environment for OpenSSL build | |
if: runner.os == 'Windows' | |
run: | | |
echo "C:/msys64/mingw64/bin" | Out-File -FilePath $env:GITHUB_PATH -Append | |
echo "CC=/mingw64/bin/gcc" | Out-File -FilePath $env:GITHUB_ENV -Append | |
echo "CXX=/mingw64/bin/g++" | Out-File -FilePath $env:GITHUB_ENV -Append | |
- name: Install OpenSSL via vcpkg | |
if: runner.os == 'Windows' | |
run: vcpkg install openssl:x64-windows-static-md | |
- name: Install pre-commit dependencies | |
run: python -m pip install pre-commit | |
- uses: pre-commit/[email protected] | |
name: Run pre-commit hooks | |
- name: Run Rust tests | |
run: cargo test | |
typescript: | |
name: TypeScript | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
if: needs.changes.outputs.typescript == 'true' | |
- name: Install Nodejs | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
if: needs.changes.outputs.typescript == 'true' | |
- run: npm ci | |
working-directory: ./editors/code | |
if: needs.changes.outputs.typescript == 'true' | |
# If this steps fails, your code's type integrity might be wrong at some places at TypeScript level. | |
- run: npm run typecheck | |
working-directory: ./editors/code | |
if: needs.changes.outputs.typescript == 'true' | |
# You may fix the code automatically by running `npm run lint:fix` if this steps fails. | |
- run: npm run lint:check | |
working-directory: ./editors/code | |
if: needs.changes.outputs.typescript == 'true' | |
# To fix this steps, please run `npm run format`. | |
- run: npm run format:check | |
working-directory: ./editors/code | |
if: needs.changes.outputs.typescript == 'true' | |
- run: npm run package --scripts-prepend-node-path | |
working-directory: ./editors/code | |
if: needs.changes.outputs.typescript == 'true' |