Skip to content

Add JS promise test, optimize V8/QuickJs event loop handling (#110) #240

Add JS promise test, optimize V8/QuickJs event loop handling (#110)

Add JS promise test, optimize V8/QuickJs event loop handling (#110) #240

Workflow file for this run

name: UnitTests
on:
pull_request:
paths-ignore:
- 'docs/**'
push:
branches:
- main
paths-ignore:
- 'docs/**'
workflow_dispatch:
jobs:
mac-clang-run:
timeout-minutes: 30
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
backends: [ V8, JavaScriptCore, QuickJs, Lua, Empty ]
build_type:
- Debug
# mac runner seems to be slow and rear
# - Release
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
key: ScriptX-UnitTests-Depedencies-${{ hashFiles('test/cmake/**') }}
path: |
build/ScriptXTestLibs
build/googletest-src
- name: Configure cmake
env:
SCRIPTX_TEST_FORCE_UPDATE_DEPS: ON
run: |
mkdir -p build && cd build
cmake ../test \
-DSCRIPTX_BACKEND=${{ matrix.backends }} \
-DTEST_FLAG_ENABLE_ASAN=ON \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
- name: Compile UnitTests
run: |
cd build
cmake --build . -j $(sysctl -n hw.ncpu) --target UnitTests
- name: Run UnitTests
if: matrix.backends != 'Empty'
run: |
cd build
./UnitTests
windows-msvc-run:
timeout-minutes: 30
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
backends: [ V8, JavaScriptCore, Lua, Empty ]
build_type:
- Debug
- Release
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
key: ScriptX-UnitTests-Depedencies-${{ hashFiles('test/cmake/**') }}
path: |
build/ScriptXTestLibs
build/googletest-src
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure cmake X64
if: matrix.backends != 'JavaScriptCore'
shell: powershell
env:
SCRIPTX_TEST_FORCE_UPDATE_DEPS: ON
run: |
mkdir -Force build
cd build
cmake ../test -A X64 -DSCRIPTX_BACKEND=${{ matrix.backends }}
- name: Configure cmake X86
if: matrix.backends == 'JavaScriptCore'
shell: powershell
env:
SCRIPTX_TEST_FORCE_UPDATE_DEPS: ON
run: |
mkdir -Force build
cd build
cmake ../test -A Win32 -DSCRIPTX_BACKEND=${{ matrix.backends }}
- name: Compile UnitTests
shell: powershell
run: |
cd build
cmake --build . --target UnitTests --config ${{ matrix.build_type }}
- name: Run UnitTests
if: matrix.backends != 'Empty'
shell: powershell
run: |
cd build
${{ matrix.build_type }}/UnitTests
ubuntu-gcc-run:
timeout-minutes: 30
# JavaScriptCore requires libicu66 which is only avaliable on ubuntu-20.04
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
backends: [ V8, JavaScriptCore, QuickJs, Lua, Empty ]
build_type:
- Debug
- Release
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
key: ScriptX-UnitTests-Depedencies-${{ hashFiles('test/cmake/**') }}
path: |
build/ScriptXTestLibs
build/googletest-src
- name: Configure cmake
env:
SCRIPTX_TEST_FORCE_UPDATE_DEPS: ON
run: |
mkdir -p build && cd build
cmake ../test \
-DSCRIPTX_BACKEND=${{ matrix.backends }} \
-DTEST_FLAG_ENABLE_ASAN=ON \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
- name: Compile UnitTests
run: |
cd build
cmake --build . -j $(nproc) --target UnitTests
- name: Run UnitTests
if: matrix.backends != 'Empty'
run: |
cd build
./UnitTests
ubuntu-v8-versions-build:
timeout-minutes: 60
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
# format index{0 .. index-1}/concurrency
job_split: [ 0/8, 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8 ]
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
key: ScriptX-UnitTests-Depedencies-${{ hashFiles('test/cmake/**') }}
path: |
build/ScriptXTestLibs
- name: Test build v8 on supported versions
env:
SCRIPTX_TEST_FORCE_UPDATE_DEPS: ON
SCRIPTX_TEST_V8_JOB_SPLIT_CONFIG: ${{ matrix.job_split }}
run: |
mkdir -p build && cd build
../test/cmake/test_v8_compiles.sh continue
android-clang-build:
# disable for now
# 1. we don't have android libraries
# 2. -undefined dynamic_lookup not work with NDK
if: ${{ false }}
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
backends: [ V8, JavaScriptCore, QuickJs, Lua, Empty ]
build_type:
- Debug
- Release
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
key: ScriptX-UnitTests-Depedencies-${{ hashFiles('test/cmake/**') }}
path: |
build/ScriptXTestLibs
build/googletest-src
- name: Configure cmake
env:
SCRIPTX_TEST_FORCE_UPDATE_DEPS: ON
SCRIPTX_TEST_BUILD_ONLY: ON
run: |
mkdir -p build && cd build
cmake ../test \
-DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=android-21 \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \
-DSCRIPTX_BACKEND=${{ matrix.backends }} \
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
- name: Compile UnitTests
run: |
cd build
cmake --build . -j $(nproc) --target UnitTests
node-gcc-run:
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [ 14.x, 15.x, 16.x, 18.x ] # 19.x
steps:
- uses: actions/[email protected]
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/[email protected]
with:
node-version: ${{ matrix.node-version }}
- name: Prepare npm
run: npm i -g cmake-js
- name: Compile node-addon
run: |
cd test/node_addon
npm run install
- name: Run node-addon
run: |
cd test/node_addon
npm run test
webassembly-emscripten-run:
timeout-minutes: 30
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
emscripten-version: [ '3.0.0', '3.1.33' ]
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
key: ScriptX-UnitTests-Depedencies-${{ hashFiles('test/cmake/**') }}
path: |
build/ScriptXTestLibs
build/googletest-src
- name: Setup Emscripten
uses: mymindstorm/setup-emsdk@v14
with:
version: ${{ matrix.emscripten-version }}
actions-cache-folder: emsdk-cache-${{ matrix.emscripten-version }}
- name: Setup Node.js
uses: actions/[email protected]
with:
node-version: '19.3.0' # insteadof '>= 14', use fixed version
- name: Configure Webassembly backend
env:
SCRIPTX_TEST_FORCE_UPDATE_DEPS: ON
run: |
mkdir -p build && cd build
cmake ../test -G "Unix Makefiles" \
-DCMAKE_TOOLCHAIN_FILE="${{ env.EMSDK }}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" \
-DSCRIPTX_BACKEND=WebAssembly
- name: Build UnitTests
run: |
cd build
make -j $(nproc) UnitTests
- name: Run UnitTests
run: |
cd build
# exclude failed tests
# --no-experimental-fetch config from https://github.com/emscripten-core/emscripten/issues/16915
node --no-experimental-fetch UnitTests.js '--gtest_filter=-ThreadPool.*:EngineScopeTest.ExitEngine:EngineScopeTest.TwoThreads:EngineScopeTest.ThreadLocal:MessageQueue.Interrupt:MessageQueue.Shutdown:MessageQueue.ShutdownNow:MessageQueue.FullAndPostInsideLoopQueue:ReferenceTest.WeakGc:ReferenceTest.WeakGc:ReferenceTest.GlobalNotClear:ReferenceTest.GlobalOnEngineDestroy:ReferenceTest.WeakOnEngineDestroy:ReferenceTest.WeakNotClrear:ManagedObjectTest.EngineDispose:ManagedObjectTest.FunctionCallback:PressureTest.All:EngineTest.JsPromiseTest:EngineTest.JsPromiseTest2:ShowCaseTest.SetTimeout'