swc/.github/workflows/integration.yml

150 lines
4.4 KiB
YAML

name: Integration tests
on: [push, pull_request]
env:
CARGO_INCREMENTAL: 0
CARGO_TERM_COLOR: "always"
jobs:
publish-test:
name: node-api - ${{ matrix.os }}
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
steps:
- uses: actions/checkout@v3
# We explicitly do this to cache properly.
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
- uses: actions/setup-node@v3
with:
node-version: 16
cache: "yarn"
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cargo/
**/target/
key: ${{ runner.os }}-node-api-test
- 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
yarn
yarn build:dev
yarn test
integration-test:
name: swc-cli
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14
cache: "yarn"
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cargo/
**/target/
key: ${{ runner.os }}-cargo-integration
- 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
yarn
yarn build:dev
# Avoid no space left on device, copyfile
cargo clean
cargo clean --manifest-path ./bindings/binding_core_node/Cargo.toml
cargo clean --manifest-path ./bindings/binding_core_wasm/Cargo.toml
cargo clean --manifest-path ./bindings/swc_cli/Cargo.toml
yarn global add @swc/cli@0.1.56
yarn link
yarn global add file:$PWD
- name: Print info
run: |
yarn global list
- 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: |
(cd crates/swc_node_bundler/tests/integration/react && yarn && npx spack)