swc/.github/workflows/CI.yml

945 lines
28 KiB
YAML
Raw Normal View History

name: CI
on:
pull_request:
types: ["opened", "reopened", "synchronize"]
push:
branches:
- main
env:
CI: 1
CARGO_INCREMENTAL: 0
CARGO_TERM_COLOR: "always"
DIFF: 0
# For faster CI
RUST_LOG: "off"
# https://github.com/swc-project/swc/pull/3742
RUST_MIN_STACK: 4194304
# https://github.com/actions/setup-node/issues/899#issuecomment-1819151595
SKIP_YARN_COREPACK_CHECK: 1
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "${{ github.event_name == 'pull_request' }}"
jobs:
cargo-fmt:
name: Cargo fmt
runs-on: ubuntu-latest
env:
RUST_LOG: "0"
steps:
- uses: actions/checkout@v4
# We explicitly do this to cache properly.
- uses: actions-rs/toolchain@v1
with:
profile: minimal
components: rustfmt
- run: cargo fmt --all -- --check
cargo-clippy:
name: Cargo clippy
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions-rs/toolchain@v1
with:
profile: minimal
components: clippy
- run: cargo clippy --all --all-targets -- -D warnings
cargo-crev:
name: Cargo crev
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
- name: Remove unrelated
run: |
rm -rf packages
rm -rf tests
ls -al
2023-04-15 01:53:43 +03:00
- name: Configure git
run: |
git config --global user.name 'SWC bot'
git config --global user.email 'bot@swc.rs'
# - name: Install cargo-crev
# uses: baptiste0928/cargo-install@v2
# with:
# crate: cargo-crev
# version: "=0.24.3"
# # locked: true
# - name: Configure cargo-crev
# run: |
# cargo crev trust --level high https://github.com/kdy1/crev-proofs
# cargo crev repo fetch all
# - name: Check dependencies
# run: |
# ./scripts/crev/verify.sh
cargo-deny:
name: Check license of dependencies
runs-on: ubuntu-latest
2022-05-08 11:55:51 +03:00
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
- name: Install cargo-deny
uses: baptiste0928/cargo-install@v2
with:
crate: cargo-deny
version: "0.14.15"
- name: Check licenses
run: |
cargo deny check
cargo-check:
name: Check
runs-on: ${{ matrix.os }}
2022-05-08 11:55:51 +03:00
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
2022-07-25 07:48:01 +03:00
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v4
2021-12-27 11:32:47 +03:00
with:
submodules: true
2021-11-10 12:08:45 +03:00
2021-03-25 19:22:09 +03:00
# We explicitly do this to cache properly.
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
2022-09-14 13:33:49 +03:00
# MSRV is current stable for ES crates and nightly for other languages
# toolchain: stable
# override: true
2021-03-25 19:22:09 +03:00
- run: corepack enable
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "yarn"
- name: Install node dependencies
shell: bash
run: |
corepack enable
yarn
# Ensure that all components are compilable.
- name: Run cargo check for all targets
run: cargo check --all --all-targets
test-wasm:
name: Test wasm
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- shell: bash
run: corepack enable
# We explicitly do this to cache properly.
- uses: actions-rs/toolchain@v1
with:
profile: minimal
2022-11-15 08:48:57 +03:00
- name: Patch
shell: bash
2022-11-15 08:48:57 +03:00
run: |
echo '[patch.crates-io]' >> bindings/Cargo.toml
./scripts/cargo/patch-section.sh >> bindings/Cargo.toml
2022-12-01 07:21:19 +03:00
cd bindings && cargo update -p swc_core
2022-11-15 08:48:57 +03:00
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "yarn"
- name: Install node dependencies
shell: bash
run: |
corepack enable
yarn
- name: Build
run: |
(cd bindings/binding_core_wasm && ./scripts/build.sh --features plugin)
- name: Test
run: |
(cd bindings/binding_core_wasm && ./scripts/test.sh)
cargo-test:
name: Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }}
2022-09-06 19:47:06 +03:00
runs-on: ${{ matrix.settings.runner }}
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
strategy:
fail-fast: false
matrix:
settings:
# Use scripts/github/create-matrix.sh to create this.
- crate: ast_node
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: better_scoped_tls
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: binding_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: dbg-swc
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: from_variant
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: jsdoc
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: preset_env_base
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: string_enum
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_atoms
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_bundler
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_cached
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_cli_impl
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_common
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_common
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_compiler_base
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_config
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_config_macro
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_core
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_ast
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_codegen
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_codegen
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_css_codegen_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_compat
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_css_lints
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_minifier
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_modules
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_css_parser
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_parser
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_css_prefixer
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_utils
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_css_visit
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_ast
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_codegen
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_codegen
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_ecma_codegen_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_compat_bugfixes
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_common
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es2015
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es2016
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es2017
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es2018
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es2019
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es2020
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es2021
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es2022
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_compat_es3
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_ext_transforms
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_lints
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_loader
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_loader
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_ecma_minifier
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_parser
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_parser
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_ecma_preset_env
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_preset_env
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_ecma_quote
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_quote_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_testing
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_base
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_classes
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_compat
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_module
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_module
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_ecma_transforms_optimization
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_proposal
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_react
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_testing
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_transforms_testing
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_ecma_transforms_typescript
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_usage_analyzer
os: ubuntu-latest
runner: ubuntu-latest
- crate: swc_ecma_utils
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecma_visit
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_ecmascript
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_eq_ignore_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_error_reporters
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_estree_ast
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_estree_compat
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_fast_graph
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_graph_analyzer
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
2022-04-04 07:12:45 +03:00
- crate: swc_html
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
2022-04-04 07:12:45 +03:00
- crate: swc_html_ast
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
2022-04-04 07:12:45 +03:00
- crate: swc_html_codegen
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
2022-04-04 07:12:45 +03:00
- crate: swc_html_codegen
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
2022-04-04 07:12:45 +03:00
- crate: swc_html_codegen_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_html_minifier
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
2022-04-04 07:12:45 +03:00
- crate: swc_html_parser
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
2022-04-04 07:12:45 +03:00
- crate: swc_html_parser
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_html_utils
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
2022-04-04 07:12:45 +03:00
- crate: swc_html_visit
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_macros_common
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_malloc
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_node_bundler
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_node_bundler
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_node_comments
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_nodejs_common
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_plugin
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_plugin
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_plugin_macro
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_plugin_proxy
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_plugin_runner
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_plugin_runner
os: macos-latest
2022-09-06 19:47:06 +03:00
runner: macos-latest
- crate: swc_plugin_runner
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_plugin_testing
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_plugin_testing
os: windows-latest
2022-09-06 19:47:06 +03:00
runner: windows-latest
- crate: swc_timer
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_trace_macro
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_visit
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_visit_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_xml
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_xml_ast
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_xml_codegen
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_xml_codegen_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_xml_parser
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: swc_xml_visit
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: testing
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: testing_macros
os: ubuntu-latest
2022-09-06 19:47:06 +03:00
runner: ubuntu-latest
- crate: xtask
os: ubuntu-latest
runner: ubuntu-latest
steps:
- name: Handle line endings
shell: bash
if: runner.os == 'Windows'
run: |
git config --system core.autocrlf false
git config --system core.eol lf
- uses: actions/checkout@v4
2021-12-27 11:32:47 +03:00
with:
submodules: true
- run: corepack enable
# Source map format
- uses: actions/setup-node@v4
with:
node-version: "18"
2021-12-12 10:16:20 +03:00
cache: "yarn"
2021-03-25 19:22:09 +03:00
# We explicitly do this to cache properly.
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
target: wasm32-wasi
2022-09-14 13:33:49 +03:00
# MSRV is current stable for ES crates and nightly for other languages
# toolchain: stable
# override: true
2021-03-25 19:22:09 +03:00
- uses: denoland/setup-deno@v1
if: matrix.settings.crate == 'swc_bundler'
with:
deno-version: v1.x
- name: Install node dependencies
shell: bash
run: |
corepack enable
yarn
# I don't want to think deeply about this
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || true
- name: Configure path (windows)
shell: bash
if: runner.os == 'Windows'
run: |
echo $(yarn global bin) >> $GITHUB_PATH
- name: Verify dependencies
shell: bash
run: |
yarn jest --version && yarn mocha --version
- name: Configure execution cache
shell: bash
run: |
mkdir -p .swc-exec-cache
echo "SWC_ECMA_TESTING_CACHE_DIR=$(pwd)/.swc-exec-cache" >> $GITHUB_ENV
- name: Cache execution results
uses: actions/cache@v3
with:
path: |
.swc-exec-cache
key: swc-exec-cache-${{ runner.os }}-${{ matrix.settings.crate }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
swc-exec-cache-${{ matrix.settings.crate }}-${{ runner.os }}
- name: Run cargo test
if: matrix.settings.crate != 'swc_plugin_runner' && matrix.settings.crate != 'swc_ecma_minifier' && matrix.settings.crate != 'swc_core' && matrix.settings.crate != 'swc_ecma_quote' && matrix.settings.crate != 'swc_cli' && matrix.settings.crate != 'binding_core_wasm'
run: |
cargo test -p ${{ matrix.settings.crate }}
- name: Run cargo test (core)
if: matrix.settings.crate == 'swc_core'
run: |
rustup target add wasm32-unknown-unknown
cargo test -p swc_core --features ecma_quote --features common --features ecma_utils
- name: Run cargo test (binding_core_wasm)
if: matrix.settings.crate == 'binding_core_wasm'
run: |
cargo test --manifest-path ./bindings/binding_core_wasm/Cargo.toml
- name: Run cargo test (cli)
if: matrix.settings.crate == 'swc_cli'
run: |
cargo test --manifest-path ./bindings/swc_cli/Cargo.toml --features plugin
- name: Run cargo test (plugin)
if: matrix.settings.crate == 'swc_plugin_runner'
run: |
# export CARGO_TARGET_DIR=$(pwd)/target
cargo test -p swc_plugin_runner --release --features plugin_transform_schema_v1 --features rkyv-impl --features ecma --features css
- name: Run cargo test (swc_ecma_minifier)
if: matrix.settings.crate == 'swc_ecma_minifier'
run: |
cargo test -p swc_ecma_minifier --features concurrent
2022-04-10 12:33:18 +03:00
- name: Run cargo test (all features)
if: matrix.settings.crate == 'swc_ecma_parser' || matrix.settings.crate == 'swc_ecma_loader'
run: |
cargo test -p ${{ matrix.settings.crate }} --all-features
- name: Run cargo test (transforms with stacker)
if: matrix.settings.crate == 'swc_ecma_transforms'
run: |
cargo test -p ${{ matrix.settings.crate }} --all-features --features swc_ecma_utils/stacker
2022-06-13 14:15:18 +03:00
- name: Run cargo test (concurrent)
2022-08-11 05:04:58 +03:00
if: runner.os == 'Linux' && matrix.settings.crate != 'swc_ecma_minifier'
2022-06-13 14:15:18 +03:00
shell: bash
run: |
./scripts/github/test-concurrent.sh ${{ matrix.settings.crate }}
2022-06-13 14:15:18 +03:00
2022-02-24 09:06:03 +03:00
- name: Install cargo-hack
uses: baptiste0928/cargo-install@v2
if: matrix.settings.os == 'ubuntu-latest'
2022-02-24 09:06:03 +03:00
with:
crate: cargo-hack
version: "0.5.29"
locked: true
2022-02-24 09:06:03 +03:00
- name: Check compilation
run: |
./scripts/github/run-cargo-hack.sh ${{ matrix.settings.crate }}
node-test:
name: Test node bindings - ${{ matrix.os }}
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
2024-05-18 04:44:19 +03:00
# - ubuntu-latest
- windows-latest
- macos-latest
steps:
- uses: actions/checkout@v4
- shell: bash
run: corepack enable
# We explicitly do this to cache properly.
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-node@v4
with:
node-version: 18
cache: "yarn"
- name: Patch
shell: bash
run: |
echo '[patch.crates-io]' >> bindings/Cargo.toml
./scripts/cargo/patch-section.sh
./scripts/cargo/patch-section.sh >> bindings/Cargo.toml
2022-12-01 07:21:19 +03:00
cd bindings && cargo update -p swc_core
- name: Set platform name
run: |
export NODE_PLATFORM_NAME=$(node -e "console.log(require('os').platform())")
echo "PLATFORM_NAME=$NODE_PLATFORM_NAME" >> $GITHUB_ENV
shell: bash
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Prepare
run: |
rustup target add wasm32-wasi
corepack enable
yarn
- name: Build
working-directory: packages/core
run: |
yarn build:dev
- name: Test
working-directory: packages/core
run: |
yarn test
integration-test:
name: "Test with @swc/cli"
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- shell: bash
run: corepack enable
- uses: actions/setup-node@v4
with:
node-version: 20
cache: "yarn"
- name: Set platform name
run: |
export NODE_PLATFORM_NAME=$(node -e "console.log(require('os').platform())")
echo "PLATFORM_NAME=$NODE_PLATFORM_NAME" >> $GITHUB_ENV
shell: bash
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Patch
shell: bash
run: |
echo '[patch.crates-io]' >> bindings/Cargo.toml
./scripts/cargo/patch-section.sh >> bindings/Cargo.toml
2022-12-01 07:21:19 +03:00
cd bindings && cargo update -p swc_core
- name: Prepare
run: |
rustup target add wasm32-wasi
corepack enable
yarn
yarn build:dev
# Avoid no space left on device, copyfile
cargo clean
(cd ./bindings && cargo clean)
npm install -g @swc/cli@0.1.56
npm link
npm install -g file:$PWD
- name: Print info
run: |
npm list -g
- name: (swc) three.js
run: |
# mkdir -p tests/integration/three-js
# yarn global add qunit failonlyreporter
# Download three.js
# git clone --depth 1 https://github.com/mrdoob/three.js.git -b r117 tests/integration/three-js/repo
# TODO
# swc -C isModule=unknown -C test=\".*.js$\" -C module.type=commonjs --sync tests/integration/three-js/repo/ -d tests/integration/three-js/build/
# TODO
# (cd tests/integration/three-js/build/test && qunit -r failonlyreporter unit/three.source.unit.js)
# terser: contains with statement in test
# Rome.js: I forgot the cause, but it didn't work.
# jQuery: browser only (window.document is required)
- name: (swc) redux
run: |
# mkdir -p tests/integration/redux
# yarn global add qunit failonlyreporter
# Download
# git clone --depth 1 https://github.com/reduxjs/redux.git -b v4.1.0 tests/integration/redux/repo
# TODO
# swc --sync tests/integration/redux/repo/src/ -d tests/integration/redux/repo/lib/
# echo "module.exports=require('./index')" > tests/integration/redux/repo/lib/redux.js
# TODO
# swc --sync tests/integration/redux/repo/src/ -d tests/integration/redux/repo/test/
# TODO
# swc --sync tests/integration/redux/repo/test/ -d tests/integration/redux/repo/test/
# TODO
# (cd tests/integration/redux/repo && yarn)
# TODO
# (cd tests/integration/redux/repo && npx jest '.*.js' --modulePathIgnorePatterns 'typescript')
- name: (swcpack) example react app
run: |
export NODE_OPTIONS="--unhandled-rejections=warn"
(cd crates/swc_node_bundler/tests/integration/react && npm install && npx spack)
miri:
name: Miri
runs-on: ubuntu-latest
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
strategy:
fail-fast: false
matrix:
crate:
- better_scoped_tls
- string_enum
- swc
- swc_bundler
- swc_ecma_codegen
- swc_ecma_minifier
steps:
- uses: actions/checkout@v4
with:
submodules: true
- shell: bash
run: corepack enable
- uses: actions/setup-node@v4
with:
node-version: "18"
cache: "yarn"
- name: Install node dependencies
shell: bash
run: |
corepack enable
yarn
- name: Print rustup toolchain version
shell: bash
id: rustup-version
run: |
export RUST_TOOLCHAIN="$(cat rust-toolchain | tr -d '\n')"
echo "Rust toolchain: $RUST_TOOLCHAIN"
echo "RUST_TOOLCHAIN=$RUST_TOOLCHAIN" >> "$GITHUB_OUTPUT"
- name: Install
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "${{ steps.rustup-version.outputs.RUST_TOOLCHAIN }}"
components: miri
- run: cargo miri test -p ${{ matrix.crate }} --no-fail-fast
continue-on-error: true
env:
MIRIFLAGS: "-Zmiri-disable-isolation"
done:
needs:
- cargo-fmt
- cargo-clippy
- cargo-deny
- cargo-check
- test-wasm
- cargo-test
- node-test
- integration-test
2023-11-11 20:25:36 +03:00
if: >-
${{ always() && !contains(github.event.head_commit.message, 'chore: ') }}
runs-on: ubuntu-latest
name: Done
steps:
- run: exit 1
if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'skipped') || contains(needs.*.result, 'cancelled')) }}