name: Cargo on: [push, pull_request] #on: # push: # # Ignore commits created by bors # branches-ignore: # - 'staging' # - 'trying' # pull_request: # branches-ignore: # - 'staging' # - 'trying' env: CARGO_INCREMENTAL: 0 RUST_LOG: "debug" DIFF: 0 # https://github.com/swc-project/swc/pull/3742 RUST_MIN_STACK: 4194304 CI: 1 jobs: check-license: name: Check license runs-on: ubuntu-latest if: >- ${{ !contains(github.event.head_commit.message, 'chore: ') }} steps: - uses: actions/checkout@v3 - name: Install Rust uses: actions-rs/toolchain@v1 with: profile: minimal - name: Install cargo-deny uses: baptiste0928/cargo-install@v1.1.0 with: crate: cargo-deny version: "0.11.3" - name: Check licenses run: | cargo deny check check: name: Check runs-on: ${{ matrix.os }} if: >- ${{ !contains(github.event.head_commit.message, 'chore: ') }} strategy: fail-fast: false matrix: os: - ubuntu-latest - macos-latest - windows-latest steps: - uses: actions/checkout@v3 with: submodules: true # We explicitly do this to cache properly. - name: Install Rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: 1.60 - uses: actions/setup-node@v3 with: node-version: "16" cache: "yarn" - name: Install node dependencies shell: bash run: | yarn # Ensure that all components are compilable. - name: Run cargo check for all targets run: cargo check --color always --all --all-targets test: name: Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} runs-on: ${{ matrix.settings.os }} 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 - crate: better_scoped_tls os: ubuntu-latest - crate: binding_core_node os: ubuntu-latest - crate: binding_core_wasm os: ubuntu-latest - crate: dbg-swc os: ubuntu-latest - crate: enum_kind os: ubuntu-latest - crate: from_variant os: ubuntu-latest - crate: jsdoc os: ubuntu-latest - crate: node_macro_deps os: ubuntu-latest - crate: preset_env_base os: ubuntu-latest - crate: string_enum os: ubuntu-latest - crate: swc os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps --exclude-features debug --exclude-features plugin --exclude-features plugin_transform_schema_v1 --exclude-features plugin_transform_schema_vtest - crate: swc os: windows-latest - crate: swc_atoms os: ubuntu-latest - crate: swc_bundler os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_cached os: ubuntu-latest - crate: swc_cli os: ubuntu-latest check: | cargo check cargo check --features plugin - crate: swc_cli os: windows-latest - crate: swc_common os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps --exclude-features plugin_transform_schema_vtest - crate: swc_common os: windows-latest - crate: swc_config os: ubuntu-latest - crate: swc_config_macro os: ubuntu-latest - crate: swc_css os: ubuntu-latest - crate: swc_css_ast os: ubuntu-latest - crate: swc_css_codegen os: ubuntu-latest - crate: swc_css_codegen os: windows-latest - crate: swc_css_codegen_macros os: ubuntu-latest - crate: swc_css_lints os: ubuntu-latest - crate: swc_css_minifier os: ubuntu-latest - crate: swc_css_parser os: ubuntu-latest - crate: swc_css_parser os: windows-latest - crate: swc_css_prefixer os: ubuntu-latest - crate: swc_css_utils os: ubuntu-latest - crate: swc_css_visit os: ubuntu-latest - crate: swc_ecma_ast os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_ecma_codegen os: ubuntu-latest - crate: swc_ecma_codegen os: windows-latest - crate: swc_ecma_codegen_macros os: ubuntu-latest - crate: swc_ecma_dep_graph os: ubuntu-latest - crate: swc_ecma_ext_transforms os: ubuntu-latest - crate: swc_ecma_lints os: ubuntu-latest - crate: swc_ecma_loader os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_ecma_loader os: windows-latest - crate: swc_ecma_minifier os: ubuntu-latest - crate: swc_ecma_parser os: ubuntu-latest - crate: swc_ecma_parser os: windows-latest - crate: swc_ecma_preset_env os: ubuntu-latest - crate: swc_ecma_preset_env os: windows-latest - crate: swc_ecma_quote os: ubuntu-latest - crate: swc_ecma_quote_macros os: ubuntu-latest - crate: swc_ecma_testing os: ubuntu-latest - crate: swc_ecma_transforms os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_ecma_transforms_base os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_ecma_transforms_classes os: ubuntu-latest - crate: swc_ecma_transforms_compat os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_ecma_transforms_macros os: ubuntu-latest - crate: swc_ecma_transforms_module os: ubuntu-latest - crate: swc_ecma_transforms_module os: windows-latest - crate: swc_ecma_transforms_optimization os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_ecma_transforms_proposal os: ubuntu-latest - crate: swc_ecma_transforms_react os: ubuntu-latest - crate: swc_ecma_transforms_testing os: ubuntu-latest - crate: swc_ecma_transforms_testing os: windows-latest - crate: swc_ecma_transforms_typescript os: ubuntu-latest - crate: swc_ecma_utils os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_ecma_visit os: ubuntu-latest check: | cargo hack check --feature-powerset --no-dev-deps - crate: swc_ecmascript os: ubuntu-latest - crate: swc_eq_ignore_macros os: ubuntu-latest - crate: swc_error_reporters os: ubuntu-latest - crate: swc_estree_ast os: ubuntu-latest - crate: swc_estree_compat os: ubuntu-latest - crate: swc_fast_graph os: ubuntu-latest - crate: swc_graph_analyzer os: ubuntu-latest - crate: swc_html os: ubuntu-latest - crate: swc_html_ast os: ubuntu-latest - crate: swc_html_codegen os: ubuntu-latest - crate: swc_html_codegen os: windows-latest - crate: swc_html_codegen_macros os: ubuntu-latest - crate: swc_html_minifier os: ubuntu-latest - crate: swc_html_parser os: ubuntu-latest - crate: swc_html_parser os: windows-latest - crate: swc_html_utils os: ubuntu-latest - crate: swc_html_visit os: ubuntu-latest - crate: swc_xml os: ubuntu-latest - crate: swc_xml_ast os: ubuntu-latest - crate: swc_xml_codegen os: ubuntu-latest - crate: swc_xml_codegen os: windows-latest - crate: swc_xml_codegen_macros os: ubuntu-latest - crate: swc_xml_parser os: ubuntu-latest - crate: swc_xml_parser os: windows-latest - crate: swc_xml_visit os: ubuntu-latest - crate: swc_macros_common os: ubuntu-latest - crate: swc_node_base os: ubuntu-latest - crate: swc_node_bundler os: ubuntu-latest check: | cargo check cargo check --no-default-features --features swc_v2 - crate: swc_node_bundler os: windows-latest - crate: swc_node_comments os: ubuntu-latest - crate: swc_nodejs_common os: ubuntu-latest - crate: swc_plugin os: ubuntu-latest - crate: swc_plugin os: windows-latest - crate: swc_plugin_macro os: ubuntu-latest - crate: swc_plugin_proxy os: ubuntu-latest - crate: swc_plugin_runner os: ubuntu-latest - crate: swc_plugin_runner os: macos-latest - crate: swc_plugin_runner os: windows-latest - crate: swc_plugin_testing os: ubuntu-latest - crate: swc_plugin_testing os: windows-latest - crate: swc_timer os: ubuntu-latest - crate: swc_trace_macro os: ubuntu-latest - crate: swc_visit os: ubuntu-latest - crate: swc_visit_macros os: ubuntu-latest - crate: testing os: ubuntu-latest - crate: testing_macros os: 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@v3 with: submodules: true # Source map format - uses: actions/setup-node@v3 with: node-version: "16" cache: "yarn" # We explicitly do this to cache properly. - name: Install Rust uses: actions-rs/toolchain@v1 with: profile: minimal target: wasm32-wasi - uses: denoland/setup-deno@v1 if: matrix.settings.crate == 'swc_bundler' with: deno-version: v1.x - name: Install node dependencies shell: bash run: | 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: | jest --version && 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' run: | cargo test --color always -p ${{ matrix.settings.crate }} - name: Run cargo test (core) if: matrix.settings.crate == 'swc_core' run: | cargo test --color always -p swc_core --features quote --features common --features utils - name: Run cargo test (plugin) if: matrix.settings.crate == 'swc_plugin_runner' run: | cargo test --color always -p swc_plugin_runner --features plugin_transform_schema_v1 - name: Run cargo test (swc_ecma_minifier) if: matrix.settings.crate == 'swc_ecma_minifier' run: | cargo test --color always -p swc_ecma_minifier --features concurrent - name: Run cargo test (all features) if: matrix.settings.crate == 'swc_ecma_parser' || matrix.settings.crate == 'swc_ecma_loader' || matrix.settings.crate == 'swc_ecma_transforms' run: | cargo test --color always -p ${{ matrix.settings.crate }} --all-features - name: Run cargo test (concurrent) if: runner.os == 'Linux' && matrix.settings.crate != 'swc_ecma_minifier' shell: bash run: | ./scripts/ci/test-concurrent.sh ${{ matrix.settings.crate }} - name: Run cargo test (swc, concurrent) shell: bash if: matrix.settings.crate == 'swc' && runner.os == 'Linux' run: | cargo test --color always -p swc --features concurrent - name: Install cargo-hack uses: baptiste0928/cargo-install@v1.1.0 if: matrix.settings.os == 'ubuntu-latest' && matrix.settings.check with: crate: cargo-hack version: "0.5.7" - name: Check compilation if: matrix.settings.check working-directory: "crates/${{ matrix.settings.crate }}" run: "${{ matrix.settings.check }}"