158 lines
5.5 KiB
YAML
158 lines
5.5 KiB
YAML
name: Run Tests 🧪
|
|
|
|
env:
|
|
ACTIONS_RUNNER_DEBUG: true
|
|
ACTIONS_STEP_DEBUG: true
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- "feature/**"
|
|
- "release/**"
|
|
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.54f1
|
|
- 6000.1.10f1
|
|
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
|
|
shell: bash
|
|
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
|
|
shell: bash
|
|
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
|