mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-07 15:35:16 +00:00
![zoraaver](/assets/img/avatar_default.png)
Most of the WASI filesystem tests require at least creating/deleting a file to test filesystem functionality so some additional filesystem APIs have been implemented on Windows so we can test what has been implemented so far. For those WASI functions which haven't been implemented, we skip the tests. These will be implemented in a future PR after which we can remove the relevant filters. Additionally, in order to run the WASI socket and thread tests, we need to install the wasi-sdk in CI and build the test source code prior to running the tests.
137 lines
4.0 KiB
YAML
137 lines
4.0 KiB
YAML
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
name: compilation on windows-latest
|
|
|
|
on:
|
|
# will be triggered on PR events
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- synchronize
|
|
paths:
|
|
- ".github/workflows/compilation_on_windows.yml"
|
|
- "build-scripts/**"
|
|
- "core/**"
|
|
- "!core/deps/**"
|
|
- "product-mini/**"
|
|
- "samples/**"
|
|
- "!samples/workload/**"
|
|
- "tests/wamr-test-suites/**"
|
|
- "wamr-compiler/**"
|
|
- "wamr-sdk/**"
|
|
# will be triggered on push events
|
|
push:
|
|
branches:
|
|
- main
|
|
- "dev/**"
|
|
paths:
|
|
- ".github/workflows/compilation_on_windows.yml"
|
|
- "build-scripts/**"
|
|
- "core/**"
|
|
- "!core/deps/**"
|
|
- "product-mini/**"
|
|
- "samples/**"
|
|
- "!samples/workload/**"
|
|
- "tests/wamr-test-suites/**"
|
|
- "wamr-compiler/**"
|
|
- "wamr-sdk/**"
|
|
# allow to be triggered manually
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
# For Spec Test
|
|
DEFAULT_TEST_OPTIONS: "-s spec -b"
|
|
MULTI_MODULES_TEST_OPTIONS: "-s spec -b -M"
|
|
THREADS_TEST_OPTIONS: "-s spec -b -p"
|
|
WASI_TEST_OPTIONS: "-s wasi_certification -w"
|
|
WASI_TEST_FILTER: ${{ github.workspace }}/product-mini/platforms/windows/wasi_filtered_tests.json
|
|
# Used when building the WASI socket and thread tests
|
|
CC: ${{ github.workspace }}/wasi-sdk/bin/clang
|
|
|
|
# Cancel any in-flight jobs for the same PR/branch so there's only one active
|
|
# at a time
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: windows-latest
|
|
strategy:
|
|
matrix:
|
|
build_options: [
|
|
"-DWAMR_BUILD_AOT=1 -DWAMR_BUILD_INTERP=0",
|
|
"-DWAMR_BUILD_AOT=0",
|
|
"-DWAMR_BUILD_TAIL_CALL=1",
|
|
"-DWAMR_BUILD_CUSTOM_NAME_SECTION=1",
|
|
"-DWAMR_DISABLE_HW_BOUND_CHECK=1",
|
|
"-DWAMR_BUILD_REF_TYPES=1",
|
|
"-DWAMR_BUILD_SIMD=1",
|
|
"-DWAMR_BUILD_DEBUG_INTERP=1",
|
|
"-DWAMR_BUILD_LIB_PTHREAD=1",
|
|
"-DWAMR_BUILD_LIB_WASI_THREADS=1",
|
|
"-DWAMR_BUILD_LIBC_UVWASI=0 -DWAMR_BUILD_LIBC_WASI=1"
|
|
]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: clone uvwasi library
|
|
if: ${{ !contains(matrix.build_options, '-DWAMR_BUILD_LIBC_UVWASI=0') }}
|
|
run: |
|
|
cd core/deps
|
|
git clone https://github.com/nodejs/uvwasi.git
|
|
- name: Build iwasm
|
|
run: |
|
|
cd product-mini/platforms/windows
|
|
mkdir build && cd build
|
|
cmake .. ${{ matrix.build_options }}
|
|
cmake --build . --config Release --parallel 4
|
|
|
|
test:
|
|
runs-on: windows-latest
|
|
needs: [build]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
running_mode:
|
|
[
|
|
"classic-interp",
|
|
"fast-interp",
|
|
]
|
|
test_option:
|
|
[
|
|
$DEFAULT_TEST_OPTIONS,
|
|
$MULTI_MODULES_TEST_OPTIONS,
|
|
$THREADS_TEST_OPTIONS,
|
|
$WASI_TEST_OPTIONS,
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: download and install wasi-sdk
|
|
if: matrix.test_option == '$WASI_TEST_OPTIONS'
|
|
run: |
|
|
curl "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0.m-mingw.tar.gz" -o wasi-sdk.tar.gz -L
|
|
mkdir wasi-sdk
|
|
tar -xzf wasi-sdk.tar.gz -C wasi-sdk --strip-components 1
|
|
|
|
- name: build socket api tests
|
|
shell: bash
|
|
if: matrix.test_option == '$WASI_TEST_OPTIONS'
|
|
run: ./build.sh
|
|
working-directory: ./core/iwasm/libraries/lib-socket/test/
|
|
|
|
- name: Build WASI thread tests
|
|
shell: bash
|
|
if: matrix.test_option == '$WASI_TEST_OPTIONS'
|
|
run: ./build.sh
|
|
working-directory: ./core/iwasm/libraries/lib-wasi-threads/test/
|
|
|
|
- name: run tests
|
|
shell: bash
|
|
timeout-minutes: 20
|
|
run: ./test_wamr.sh ${{ matrix.test_option }} -t ${{ matrix.running_mode }}
|
|
working-directory: ./tests/wamr-test-suites
|