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/checkout@v2 - uses: actions/cache@v2 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/checkout@v2 - uses: actions/cache@v2 with: key: ScriptX-UnitTests-Depedencies-${{ hashFiles('test/cmake/**') }} path: | build/ScriptXTestLibs build/googletest-src - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v1.0.2 - 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 runs-on: ubuntu-latest strategy: fail-fast: false matrix: backends: [ V8, JavaScriptCore, QuickJs, Lua, Empty ] build_type: - Debug - Release steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 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 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/checkout@v2 - uses: actions/cache@v2 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 ] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 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 steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 with: key: ScriptX-UnitTests-Depedencies-${{ hashFiles('test/cmake/**') }} path: | build/ScriptXTestLibs build/googletest-src - name: Setup Emscripten uses: mymindstorm/setup-emsdk@v11 with: version: '3.0.0' actions-cache-folder: 'emsdk-cache-3.0.0' - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: '>= 14' - 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 node 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:ShowCaseTest.SetTimeout'