Run Tests 🧪 #342
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run Tests 🧪 | |
env: | |
ACTIONS_RUNNER_DEBUG: true | |
ACTIONS_STEP_DEBUG: true | |
on: | |
push: | |
branches: | |
- main | |
- development/v3 | |
- "feature/**" | |
paths: | |
- "Editor/**" | |
- "Runtime/**" | |
- "Samples~/**" | |
- "Tests/**" | |
workflow_dispatch: | |
jobs: | |
buildAndTestForSomePlatforms: | |
concurrency: | |
group: ${{ github.workflow }}-${{ matrix.unityVersion }}-${{ matrix.unityLocalisation }}-${{ matrix.uniTask }} | |
cancel-in-progress: true # Cancel other jobs if another one arrives | |
name: ${{ matrix.unityVersion }} (${{ matrix.targetPlatform }}, ${{ matrix.unityLocalisation && 'with unity loc' || 'no unity loc' }}, ${{ matrix.uniTask && 'with unitask' || 'no unitask' }}) | |
runs-on: [self-hosted, linux] | |
strategy: | |
fail-fast: false | |
# max-parallel: 1 # Only run one at a time, to prevent license contention | |
matrix: | |
projectPath: | |
- YarnSpinner | |
unityVersion: | |
- 2022.3.45f1 | |
- 2023.2.12f1 | |
- 6000.0.24f1 | |
unityLocalisation: | |
- true | |
- false | |
uniTask: | |
- true | |
- false | |
targetPlatform: | |
# - StandaloneOSX # Build a macOS standalone (Intel 64-bit). | |
# - StandaloneWindows64 # Build a Windows 64-bit standalone. | |
- StandaloneLinux64 # Build a Linux 64-bit standalone. | |
# - iOS # Build an iOS player. | |
# - Android # Build an Android player. | |
# - WebGL # WebGL. | |
steps: | |
- name: Create empty Unity project | |
run: | | |
mkdir -p ${{ matrix.projectPath }}/Assets | |
mkdir -p ${{ matrix.projectPath }}/ProjectSettings | |
mkdir -p ${{ matrix.projectPath }}/Packages | |
mkdir -p output | |
# Add the Unity Input System package, and configure the new project to use | |
# both the Input System and the legacy Input Manager. | |
- name: Add Input System package | |
run: | | |
cat <<EOF > ${{ matrix.projectPath }}/ProjectSettings/ProjectSettings.asset | |
%YAML 1.1 | |
%TAG !u! tag:unity3d.com,2011: | |
--- !u!129 &1 | |
PlayerSettings: | |
activeInputHandler: 2 | |
EOF | |
cat <<EOF > ${{ matrix.projectPath }}/Packages/manifest.json | |
{ | |
"dependencies": { | |
"com.unity.inputsystem": "1.11.2" | |
} | |
} | |
EOF | |
# Select correct TMP Essentials package | |
if [[ ${{matrix.unityVersion}} == "2022"* ]]; then | |
TMP_VERSION="ugui-1.0.0" | |
else | |
TMP_VERSION="ugui-2.0.0" | |
fi | |
echo "Installing TMP Essentials for $TMP_VERSION" | |
# Add the correct version of the TMP Essentials package to package manifest | |
MANIFEST_PATH=${{ matrix.projectPath }}/Packages/manifest.json | |
jq ".dependencies += {\"dev.yarnspinner.tmp-essentials\": \"https://github.com/desplesda/dev.yarnspinner.tmp-essentials.git#$TMP_VERSION\"}" "$MANIFEST_PATH" > manifest.json | |
mv manifest.json "$MANIFEST_PATH" | |
- name: Add Unity Localisation | |
if: ${{ matrix.unityLocalisation }} | |
run: | | |
# Add Unity Localisation package to package manifest | |
MANIFEST_PATH=${{ matrix.projectPath }}/Packages/manifest.json | |
jq '.dependencies += {"com.unity.localization": "1.3.2"}' "$MANIFEST_PATH" > manifest.json | |
mv manifest.json "$MANIFEST_PATH" | |
- name: Add UniTask Package | |
if: ${{ matrix.uniTask }} | |
run: | | |
# Add UniTask package to package manifest | |
MANIFEST_PATH=${{ matrix.projectPath }}/Packages/manifest.json | |
jq '.dependencies += {"com.cysharp.unitask": "https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask"}' "$MANIFEST_PATH" > manifest.json | |
mv manifest.json "$MANIFEST_PATH" | |
- name: Check out to Packages/YarnSpinner | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
path: ${{ matrix.projectPath }}/Packages/dev.yarnspinner.unity | |
- name: Run edit mode tests | |
run: | | |
docker run \ | |
--rm \ | |
-v ./${{ matrix.projectPath }}:/project \ | |
-v ./output:/output \ | |
-e TEST_MODE=EditMode \ | |
--hostname YS-Linux-Build \ | |
yarnspinner/unity-${{ matrix.unityVersion }} | |
- name: Run play mode tests | |
if: always() | |
run: | | |
docker run \ | |
--rm \ | |
-v ./${{ matrix.projectPath }}:/project \ | |
-v ./output:/output \ | |
-e TEST_MODE=PlayMode \ | |
--hostname YS-Linux-Build \ | |
yarnspinner/unity-${{ matrix.unityVersion }} | |
- name: Generate HTML test report (Play Mode) | |
uses: rjtngit/nunit-html-action@v1 | |
if: always() | |
with: | |
inputXmlPath: output/TestResults-PlayMode.xml | |
outputHtmlPath: output/TestResults-PlayMode.html | |
- name: Generate HTML test report (Edit Mode) | |
uses: rjtngit/nunit-html-action@v1 | |
if: always() | |
with: | |
inputXmlPath: output/TestResults-EditMode.xml | |
outputHtmlPath: output/TestResults-EditMode.html | |
- name: Upload test results | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: Test results (edit + play, ${{ matrix.unityVersion }} ${{ matrix.targetPlatform }} ${{ matrix.unityLocalisation && 'with-unity-loc' || 'no-unity-loc' }} ${{ matrix.uniTask && 'with-unitask' || 'no-unitask' }}) | |
# path: ${{ steps.testRunner.outputs.artifactsPath }} | |
path: ./output |