Skip to content

更新泛型使用相关的文档 #190

更新泛型使用相关的文档

更新泛型使用相关的文档 #190

name: unity unittest
on:
workflow_dispatch:
push:
paths:
- unity/upms/**
- unity/test/**
- unity/native/**
- unity/cli/**
- unreal/Puerts/Source/JsEnv/Private/V8InspectorImpl.cpp
- unreal/Puerts/Source/JsEnv/Private/V8InspectorImpl.h
- unreal/Puerts/Source/JsEnv/Private/WebSocketImpl.cpp
- unreal/Puerts/Source/JsEnv/Private/PromiseRejectCallback.hpp
- .github/workflows/unity_unittest.yml
- .github/workflows/run_android_test.sh
- .github/workflows/composites/**
pull_request:
paths:
- unity/upms/**
- unity/test/**
- unity/native/**
- unity/cli/**
- unreal/Puerts/Source/JsEnv/Private/V8InspectorImpl.cpp
- unreal/Puerts/Source/JsEnv/Private/V8InspectorImpl.h
- unreal/Puerts/Source/JsEnv/Private/WebSocketImpl.cpp
- unreal/Puerts/Source/JsEnv/Private/PromiseRejectCallback.hpp
- .github/workflows/unity_unittest.yml
- .github/workflows/run_android_test.sh
- .github/workflows/composites/**
# branches-ignore:
# - 'unity-3.0.0'
concurrency:
group: unity-ci-global
cancel-in-progress: false
jobs:
# unittest-win-unity:
# runs-on: windows-2022
#
# steps:
# - uses: actions/checkout@v3
# - name: Setup Unity
# uses: ./.github/workflows/composites/unity-setup/
# with:
# os: 'win'
# version: '2022.3.59f1'
# cachekey: 'unity2022x64'
# install_path: C:/UNITY
# unity_modules: windows-il2cpp
# UNITY_USERNAME: ${{ secrets.UNITY_USERNAME }}
# UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
# UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
# - name: UnitTest
# run: |
# cd unity
# npm i
# cd test/unity
# node ../../cli unity-test --unity C:/UNITY/2022.3.59f1/Editor/Unity.exe
# - name: TestResult
## if: always()
# shell: bash
# run: |
# cd unity/test/unity
# echo "testresult in v2(reflection)"
# cat log2.txt | grep "Failed\|Passed"
# echo "testresult in v2"
# cat log3.txt | grep "Failed\|Passed"
# unittest-osx-unity:
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v3
# - uses: RageAgainstThePixel/unity-setup@v1
# with:
# unity-version: 2022.3.59f1
# build-targets: StandaloneOSX
# modules: mac-il2cpp
# #version-file: 'unity/test/unity/ProjectSettings/ProjectVersion.txt'
# - uses: RageAgainstThePixel/activate-unity-license@v1
# with:
# license: 'Personal'
# username: ${{ secrets.UNITY_USERNAME }}
# password: ${{ secrets.UNITY_PASSWORD }}
# #serial: ${{ secrets.UNITY_SERIAL }}
# - name: UnitTest
# run: |
# cd unity
# npm i
# cd test/unity
# node ../../cli unity-test --unity ${{ env.UNITY_EDITOR_PATH }}
# - name: TestResult
## if: always()
# shell: bash
# run: |
# cd unity/test/unity
# log_files=(
# "log_reflection.txt"
# "log_qjs_reflection.txt"
# "log_nodejs_reflection.txt"
# "log_minimum_reflection.txt"
# "log_qjs_minimum_reflection.txt"
# "log_nodejs_minimum_reflection.txt"
# "log_full_wrapper.txt"
# "log_qjs_full_wrapper.txt"
# "log_nodejs_full_wrapper.txt"
# )
# for log_file in "${log_files[@]}"; do
# echo "Processing $log_file"
# grep "ENV_BACKEND" "$log_file" || true
# passed_count=$(grep -c "Passed" "$log_file" || true)
# echo "Passed: $passed_count"
# failed_count=$(grep -c "Failed" "$log_file" || true)
# echo "Failed: $failed_count"
# grep "Failed" "$log_file" || true
# echo
# done
unittest-run-testcase-and-build-android:
runs-on: macos-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Build Android Plugin # 得先构建Android插件,如果先运行UT会导致meta被Editor删除
shell: bash
run: |
cd unity
npm i
cd native/puerts
node ../../cli make --platform android --arch x64 --config Debug
cd ../papi-v8
node ../../cli make --platform android --arch x64 --config Debug
cd ../papi-quickjs
node ../../cli make --platform android --arch x64 --config Debug
cd ../papi-lua
node ../../cli make --platform android --arch x64 --config Debug
cd ../wsppaddon
node ../../cli make --platform android --arch x64 --websocket 2 --config Debug
cd ../papi-python
wget -O python-3.14.0-x86_64-linux-android.tar.gz -q https://www.python.org/ftp/python/3.14.0/python-3.14.0-x86_64-linux-android.tar.gz
mkdir -p python-3.14.0-x86_64-linux-android
tar -xzf python-3.14.0-x86_64-linux-android.tar.gz -C python-3.14.0-x86_64-linux-android
node ../../cli make --platform android --arch x64 --config Debug
cp python-3.14.0-x86_64-linux-android/prefix/lib/lib*.so ../../upms/python/Plugins/Android/libs/x86_64
mkdir -p python/lib
cp -r python-3.14.0-x86_64-linux-android/prefix/lib/python3.14 python/lib/
zip -r -q python.zip python/
mkdir -p ../../test/unity/Assets/StreamingAssets/
cp python.zip ../../test/unity/Assets/StreamingAssets/
- name: Setup Unity
uses: RageAgainstThePixel/unity-setup@v1
with:
unity-version: 2022.3.59f1
build-targets: StandaloneOSX, Android
modules: android-il2cpp, mac-il2cpp
#version-file: 'unity/test/unity/ProjectSettings/ProjectVersion.txt'
- uses: RageAgainstThePixel/activate-unity-license@v1
with:
license: 'Personal'
username: ${{ secrets.UNITY_USERNAME }}
password: ${{ secrets.UNITY_PASSWORD }}
#serial: ${{ secrets.UNITY_SERIAL }}
- name: UnitTest
run: |
cd unity
npm i
cd test/unity
node ../../cli unity-test --unity ${{ env.UNITY_EDITOR_PATH }}
- name: TestResult
# if: always()
shell: bash
run: |
cd unity/test/unity
log_files=(
"log_reflection.txt"
"log_qjs_reflection.txt"
"log_nodejs_reflection.txt"
"log_minimum_reflection.txt"
"log_qjs_minimum_reflection.txt"
"log_nodejs_minimum_reflection.txt"
"log_full_wrapper.txt"
"log_qjs_full_wrapper.txt"
"log_nodejs_full_wrapper.txt"
)
for log_file in "${log_files[@]}"; do
echo "Processing $log_file"
grep "ENV_BACKEND" "$log_file" || true
passed_count=$(grep -c "Passed" "$log_file" || true)
echo "Passed: $passed_count"
failed_count=$(grep -c "Failed" "$log_file" || true)
echo "Failed: $failed_count"
grep "Failed" "$log_file" || true
echo
done
- name: Build Android APK
shell: bash
run: |
cd unity/test/unity
echo "-define:FORCE_TEST_PYTHON" > Assets/csc.rsp
${{ env.UNITY_EDITOR_PATH }} -batchmode -nographics -quit -projectPath . -logFile log1.txt -executeMethod TestBuilder.GenMinimumWrappersAndBridge
${{ env.UNITY_EDITOR_PATH }} -batchmode -nographics -quit -projectPath . -logFile log2.txt -executeMethod TestBuilder.BuildAndroid
- name: Upload apk
uses: actions/upload-artifact@v4
with:
name: puerts_test
path: unity/test/unity/build/puerts_test.apk
unittest-run-android-in-linux:
runs-on: ubuntu-latest
needs: [unittest-run-testcase-and-build-android]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v4
with:
name: puerts_test
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'adopt'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Start emulator and run commands
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 24
target: default
arch: x86_64
profile: Nexus 6
emulator-options: -no-window -no-boot-anim -no-audio -no-snapshot-load
disable-linux-hw-accel: true
script: bash .github/workflows/run_android_test.sh
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: logcat
path: logcat.txt
# unittest-linux-unity:
# runs-on: ubuntu-latest
# steps:
# - name: Install libc++-dev
# shell: bash
# run: |
# sudo apt-get install clang
# sudo apt-get install libc++-dev
# sudo apt-get install libc++abi-dev
# - uses: actions/checkout@v3
# - name: Setup Unity
# uses: RageAgainstThePixel/unity-setup@v1
# with:
# unity-version: 2022.3.59f1
# build-targets: StandaloneLinux64, Android
# modules: android-il2cpp, linux-il2cpp
# #version-file: 'unity/test/unity/ProjectSettings/ProjectVersion.txt'
# - uses: RageAgainstThePixel/activate-unity-license@v1
# with:
# license: 'Personal'
# username: ${{ secrets.UNITY_USERNAME }}
# password: ${{ secrets.UNITY_PASSWORD }}
# #serial: ${{ secrets.UNITY_SERIAL }}
# - name: Build Android Plugin # 得先构建Android插件,如果先运行UT会导致meta被Editor删除
# shell: bash
# run: |
# cd unity
# npm i
# cd native
# cd puerts
# node ../../cli make --platform android --arch x64 --config Debug
# cd ../papi-v8
# node ../../cli make --platform android --arch x64 --config Debug
# cd ../papi-quickjs
# node ../../cli make --platform android --arch x64 --config Debug
# cd ../papi-lua
# node ../../cli make --platform android --arch x64 --config Debug
# cd ../wsppaddon
# node ../../cli make --platform android --arch x64 --websocket 2 --config Debug
# - name: UnitTest
# run: |
# cd unity
# npm i
# cd test/unity
# node ../../cli unity-test --unity ${{ env.UNITY_EDITOR_PATH }}
# - name: TestResult
## if: always()
# shell: bash
# run: |
# cd unity/test/unity
# log_files=(
# "log_reflection.txt"
# "log_qjs_reflection.txt"
# "log_nodejs_reflection.txt"
# "log_minimum_reflection.txt"
# "log_qjs_minimum_reflection.txt"
# "log_nodejs_minimum_reflection.txt"
# "log_full_wrapper.txt"
# "log_qjs_full_wrapper.txt"
# "log_nodejs_full_wrapper.txt"
# )
# for log_file in "${log_files[@]}"; do
# echo "Processing $log_file"
# grep "ENV_BACKEND" "$log_file" || true
# passed_count=$(grep -c "Passed" "$log_file" || true)
# echo "Passed: $passed_count"
# failed_count=$(grep -c "Failed" "$log_file" || true)
# echo "Failed: $failed_count"
# grep "Failed" "$log_file" || true
# echo
# done
# - name: Build Android APK
# shell: bash
# run: |
# cd unity/test/unity
# ${{ env.UNITY_EDITOR_PATH }} -batchmode -nographics -quit -projectPath . -logFile log1.txt -executeMethod TestBuilder.GenMinimumWrappersAndBridge
# ${{ env.UNITY_EDITOR_PATH }} -batchmode -nographics -quit -projectPath . -logFile log2.txt -executeMethod TestBuilder.BuildAndroid
# - name: Enable KVM group perms
# run: |
# echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
# sudo udevadm control --reload-rules
# sudo udevadm trigger --name-match=kvm
# - name: Set up JDK 17
# uses: actions/setup-java@v4
# with:
# java-version: 17
# distribution: 'adopt'
# - name: Setup Android SDK
# uses: android-actions/setup-android@v3
# - name: Start emulator and run commands
# uses: reactivecircus/android-emulator-runner@v2
# with:
# api-level: 22
# target: default
# arch: x86_64
# profile: Galaxy Nexus
# emulator-options: -no-window -no-boot-anim -no-audio -no-snapshot-load
# disable-linux-hw-accel: true
# script: bash .github/workflows/run_android_test.sh
# - name: Upload logs
# if: always()
# uses: actions/upload-artifact@v4
# with:
# name: logcat
# path: logcat.txt
unittest-win-dotnet:
runs-on: windows-2022
steps:
- uses: actions/setup-dotnet@v3
with:
dotnet-version: '6.x.x'
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- uses: actions/checkout@v3
- name: UnitTest-v8
run: |
cd unity
npm i
cd test/dotnet
node ../../cli dotnet-test v8_9.4
- name: UnitTest-nodejs
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -sn
- name: UnitTest-quickjs
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -sq
- name: UnitTest-v8-ts
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -ts
unittest-osx-dotnet:
runs-on: macos-latest
steps:
- uses: actions/setup-dotnet@v3
with:
dotnet-version: '6.x.x'
- uses: actions/checkout@v3
- name: UnitTest-v8
run: |
cd unity
npm i
cd test/dotnet
node ../../cli dotnet-test
- name: UnitTest-nodejs
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -sn
- name: UnitTest-quickjs
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -sq
- name: UnitTest-v8-ts
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -ts
unittest-linux-dotnet:
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-dotnet@v3
with:
dotnet-version: '6.x.x'
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- uses: actions/checkout@v3
- name: Install LibC++
run: |
sudo apt-get update
sudo apt-get install clang
sudo apt-get install build-essential
sudo apt-get install libc++-dev
sudo apt-get install libc++abi-dev
- name: UnitTest-v8
run: |
cd unity
npm i
cd test/dotnet
node ../../cli dotnet-test
- name: UnitTest-nodejs
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -sn
- name: UnitTest-quickjs
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -sq
- name: UnitTest-v8-ts
run: |
cd unity/test/dotnet
node ../../cli dotnet-test -ts