diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index 2ca8483d1..4590ad5b2 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -1,445 +1,17 @@ -name: continuous-integration -on: [push, pull_request] +name: testsuite + +on: + workflow_run: + workflows: ["continuous-integration"] + types: + - completed jobs: - linux-os: - runs-on: ubuntu-22.04 - env: - ALSOFT_CONF: resources/alsoft.conf - DISPLAY: :99 - steps: - - name: Update APT - run: sudo apt-get update - - name: Install Dependencies - run: | - sudo apt-get install --assume-yes build-essential git make cmake autoconf automake \ - libtool pkg-config libasound2-dev libpulse-dev libaudio-dev \ - libjack-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev \ - libxfixes-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev \ - libgl1-mesa-dev libdbus-1-dev libudev-dev libgles2-mesa-dev \ - libegl1-mesa-dev libibus-1.0-dev fcitx-libs-dev libsamplerate0-dev \ - libsndio-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev \ - libfuse2 wmctrl openbox mesa-vulkan-drivers libvulkan1 vulkan-tools \ - vulkan-validationlayers libcurl4-openssl-dev - - name: Checkout love-appimage-source - uses: actions/checkout@v3 - with: - repository: love2d/love-appimage-source - ref: 12.x - - name: Checkout LÖVE - uses: actions/checkout@v3 - with: - path: love2d-${{ github.sha }} - - name: Get Dependencies for AppImage - shell: python - env: - LOVE_BRANCH: ${{ github.sha }} - run: | - import os - for i in range(250): - if os.system(f"make getdeps LOVE_BRANCH={os.environ['LOVE_BRANCH']}") == 0: - raise SystemExit(0) - raise Exception("make getdeps failed") - - name: Build AppImage - run: make LOVE_BRANCH=${{ github.sha }} - - name: Print LuaJIT branch - run: git -C LuaJIT-v2.1 branch -v - - name: Artifact - uses: actions/upload-artifact@v3 - with: - name: love-linux-x86_64.AppImage - path: love-${{ github.sha }}.AppImage - - name: Artifact Debug Symbols - uses: actions/upload-artifact@v3 - with: - name: love-x86_64-AppImage-debug - path: love-${{ github.sha }}.AppImage-debug.tar.gz - - name: Make Runnable - run: | - chmod a+x love-${{ github.sha }}.AppImage - echo "ready to run" - ls - - name: Start xvfb and openbox - run: | - echo "Starting XVFB on $DISPLAY" - Xvfb $DISPLAY -screen 0, 360x240x24 & - echo "XVFBPID=$!" >> $GITHUB_ENV - # wait for xvfb to startup (3s is the same amount xvfb-run waits by default) - sleep 3 - openbox & - echo "OPENBOXPID=$!" >> $GITHUB_ENV - # linux opengl tests - - name: Run All Tests (opengl) - run: | - ls - ./love-${{ github.sha }}.AppImage ./testing/main.lua - - name: Love Test Report (opengl) - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Linux - title: test-report-linux-opengl - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (opengl) - run: | - 7z a -tzip test-output-linux-opengl.zip testing/output/ - - name: Artifact Test Output (opengl) - uses: actions/upload-artifact@v3 - with: - name: test-output-linux-opengl - path: test-output-linux-opengl.zip - # linux opengles tests - - name: Run Test Suite (opengles) - run: | - export LOVE_GRAPHICS_USE_OPENGLES=1 - ./love-${{ github.sha }}.AppImage ./testing/main.lua - - name: Love Test Report (opengles) - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Linux - title: test-report-linux-opengles - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (opengles) - run: | - 7z a -tzip test-output-linux-opengles.zip testing/output/ - - name: Artifact Test Output (opengles) - uses: actions/upload-artifact@v3 - with: - name: test-output-linux-opengles - path: test-output-linux-opengles.zip - # linux vulkan tests - - name: Run Test Suite (vulkan) - run: | - export LOVE_GRAPHICS_DEBUG=1 - ./love-${{ github.sha }}.AppImage ./testing/main.lua --runAllTests --renderers vulkan - - name: Love Test Report (vulkan) - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Linux - title: test-report-linux-vulkan - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (vulkan) - run: | - 7z a -tzip test-output-linux-vulkan.zip testing/output/ - - name: Artifact Test Output (vulkan) - uses: actions/upload-artifact@v3 - with: - name: test-output-linux-vulkan - path: test-output-linux-vulkan.zip - - name: Stop xvfb and openbox - # should always stop xvfb and openbox even if other steps failed - if: always() - run: | - kill $XVFBPID - kill $OPENBOXPID - windows-os: - runs-on: windows-latest - env: - ALSOFT_CONF: resources/alsoft.conf - VK_ICD_FILENAMES: ${{ github.workspace }}\mesa\x64\lvp_icd.x86_64.json - VULKAN_SDK: C:/VulkanSDK/1.3.231.1 - strategy: - matrix: - platform: [Win32, x64, ARM64] - install: [compat, modern] - exclude: - - platform: ARM64 - install: compat - defaults: - run: - shell: cmd - continue-on-error: ${{ matrix.platform == 'ARM64' }} - steps: - - name: Define Variables - id: vars - run: | - rem Compat/Modern switch - if "${{ matrix.install }}" == "compat" ( - echo moredef=-DLOVE_INSTALL_UCRT=ON>> "%GITHUB_OUTPUT%" - echo compatname=-compat>> "%GITHUB_OUTPUT%" - ) else ( - echo moredef=>> "%GITHUB_OUTPUT%" - echo compatname=>> "%GITHUB_OUTPUT%" - ) - - rem JIT Modules - if "${{ matrix.platform }}-${{ matrix.install }}" == "x64-modern" ( - (echo jitmodules=1)>> "%GITHUB_OUTPUT%" - ) else ( - (echo jitmodules=0)>> "%GITHUB_OUTPUT%" - ) - - rem Architecture-Specific Switch - goto ${{ matrix.platform }} - exit /b 1 - - :Win32 - (echo arch=x86)>> "%GITHUB_OUTPUT%" - (echo angle=0)>> "%GITHUB_OUTPUT%" - echo nofiles=warn>> "%GITHUB_OUTPUT%" - exit /b 0 - - :x64 - (echo arch=x64)>> "%GITHUB_OUTPUT%" - (echo angle=0)>> "%GITHUB_OUTPUT%" - echo nofiles=warn>> "%GITHUB_OUTPUT%" - exit /b 0 - - :ARM64 - (echo arch=arm64)>> "%GITHUB_OUTPUT%" - (echo angle=1)>> "%GITHUB_OUTPUT%" - echo nofiles=ignore>> "%GITHUB_OUTPUT%" - echo moredef=-DLOVE_EXTRA_DLLS=%CD%\angle\libEGL.dll;%CD%\angle\libGLESv2.dll>> "%GITHUB_OUTPUT%" - exit /b 0 - - name: Download Windows SDK Setup 10.0.20348 - run: curl -Lo winsdksetup.exe https://go.microsoft.com/fwlink/?linkid=2164145 - - name: Install Debugging Tools for Windows - id: windbg - run: | - setlocal enabledelayedexpansion - start /WAIT %CD%\winsdksetup.exe /features OptionId.WindowsDesktopDebuggers /q /log %CD%\log.txt - echo ERRORLEVEL=!ERRORLEVEL! >> %GITHUB_OUTPUT% - - name: Print Debugging Tools Install Log - if: always() - run: | - type log.txt - exit /b ${{ steps.windbg.outputs.ERRORLEVEL }} - - name: Setup Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - name: Download source_index.py - run: curl -Lo source_index.py https://gist.github.com/MikuAuahDark/d9c099f5714e09a765496471c2827a55/raw/df34956052035f3473c5f01861dfb53930d06843/source_index.py - - name: Clone Megasource - uses: actions/checkout@v3 - with: - path: megasource - repository: love2d/megasource - ref: 12.x - - id: megasource - name: Get Megasource Commit SHA - shell: python - run: | - import os - import subprocess - - result = subprocess.run("git -C megasource rev-parse HEAD".split(), check=True, capture_output=True, encoding="UTF-8") - commit = result.stdout.split()[0] - with open(os.environ["GITHUB_OUTPUT"], "w", encoding="UTF-8") as f: f.write(f"commit={commit}") - - name: Checkout - uses: actions/checkout@v3 - with: - path: megasource/libs/love - - name: Download ANGLE - uses: robinraju/release-downloader@v1.7 - if: steps.vars.outputs.angle == '1' - with: - repository: MikuAuahDark/angle-winbuild - tag: cr_5249 - fileName: angle-win-${{ steps.vars.outputs.arch }}.zip - tarBall: false - zipBall: false - out-file-path: angle - - name: Extract ANGLE - if: steps.vars.outputs.angle == '1' - working-directory: angle - run: 7z x angle-win-${{ steps.vars.outputs.arch }}.zip - - name: Delete Strawbery Perl - # https://github.com/actions/runner-images/issues/6627 - # In particular, this is not pretty, but even CMAKE_IGNORE_PREFIX_PATH - # cannot help in this case. Delete the whole folder! - run: | - rmdir /s /q C:\Strawberry - exit /b 0 - - name: Configure - env: - CFLAGS: /Zi - CXXFLAGS: /Zi - LDFLAGS: /DEBUG:FULL /OPT:REF /OPT:ICF - run: cmake -Bbuild -Smegasource -T v142 -A ${{ matrix.platform }} --install-prefix %CD%\install -DCMAKE_PDB_OUTPUT_DIRECTORY=%CD%\pdb ${{ steps.vars.outputs.moredef }} - - name: Install - run: cmake --build build --target PACKAGE --config Release -j2 - - name: Copy LuaJIT lua51.pdb - run: | - copy /Y build\libs\LuaJIT\src\lua51.pdb pdb\Release\lua51.pdb - exit /b 0 - - name: Add srcsrv to PATH - run: | - echo C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv>>%GITHUB_PATH% - - name: Embed Source Index into PDBs - run: | - python source_index.py ^ - --source %CD%\megasource\libs\love https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }} ^ - --source %CD%\megasource https://raw.githubusercontent.com/love2d/megasource/${{ steps.megasource.outputs.commit }} ^ - --source %CD%\build\libs\LuaJIT https://raw.githubusercontent.com/love2d/megasource/${{ steps.megasource.outputs.commit }}/libs/LuaJIT ^ - pdb\Release\*.pdb - - name: Artifact - uses: actions/upload-artifact@v3 - with: - name: love-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }} - path: | - build/*.zip - build/*.exe - if-no-files-found: ${{ steps.vars.outputs.nofiles }} - - name: Artifact JIT Modules - if: steps.vars.outputs.jitmodules == '1' - uses: actions/upload-artifact@v3 - with: - name: love-windows-jitmodules - path: build/libs/LuaJIT/src/jit/*.lua - - name: Artifact PDB - uses: actions/upload-artifact@v3 - with: - name: love-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-dbg - path: pdb/Release/*.pdb - - name: Install Mesa - run: | - curl -L --output mesa.7z --url https://github.com/pal1000/mesa-dist-win/releases/download/23.2.1/mesa3d-23.2.1-release-msvc.7z - 7z x mesa.7z -o* - powershell.exe mesa\systemwidedeploy.cmd 1 - - name: Build Test Exe - if: steps.vars.outputs.arch != 'ARM64' - run: cmake --build build --config Release --target install - - name: Run Tests (opengl) - if: steps.vars.outputs.arch != 'ARM64' - run: | - echo 'check dir' - dir - powershell.exe ./install/lovec.exe ./testing/main.lua - # windows opengl test - - name: Love Test Report (opengl) - if: steps.vars.outputs.arch != 'ARM64' - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Windows (opengl) - title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-opengl - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (opengl) - if: steps.vars.outputs.arch != 'ARM64' - run: | - 7z a -tzip test-output-windows-opengl.zip testing/output/ - - name: Artifact Test Output (opengl) - if: steps.vars.outputs.arch != 'ARM64' - uses: actions/upload-artifact@v3 - with: - name: test-output-windows-opengl - path: test-output-windows-opengl.zip - # windows opengles test - - name: Run Tests (opengles) - if: steps.vars.outputs.arch != 'ARM64' - run: | - $ENV:LOVE_GRAPHICS_USE_OPENGLES=1 - powershell.exe ./install/lovec.exe ./testing/main.lua - - name: Love Test Report (opengles) - if: steps.vars.outputs.arch != 'ARM64' - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Windows (opengles) - title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-opengles - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (opengles) - if: steps.vars.outputs.arch != 'ARM64' - run: | - 7z a -tzip test-output-windows-opengles.zip testing/output/ - - name: Artifact Test Output (opengles) - if: steps.vars.outputs.arch != 'ARM64' - uses: actions/upload-artifact@v3 - with: - name: test-output-windows-opengles - path: test-output-windows-opengles.zip - - name: Install Vulkan - if: steps.vars.outputs.arch != 'ARM64' - run: | - curl -L --show-error --output VulkanSDK.exe https://sdk.lunarg.com/sdk/download/1.3.231.1/windows/VulkanSDK-1.3.231.1-Installer.exe - ./VulkanSDK.exe --root C:/VulkanSDK/1.3.231.1 --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.core com.lunarg.vulkan.vma - curl -L --show-error --output vulkan-runtime.zip https://sdk.lunarg.com/sdk/download/1.3.231.1/windows/vulkan-runtime-components.zip - 7z e vulkan-runtime.zip -o"C:/VulkanSDK/1.3.231.1/runtime/x64" */x64 - copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "mesa/x64" - copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "C:/Windows/System32" - copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "love-12.0-win64/love-12.0-win64" - reg add HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Drivers /v "${{ github.workspace }}\mesa\x64\lvp_icd.x86_64.json" /t REG_DWORD /d 0 - powershell.exe C:/VulkanSDK/1.3.231.1/runtime/x64/vulkaninfo.exe --summary - # windows vulkan tests - - name: Run Tests (vulkan) - if: steps.vars.outputs.arch != 'ARM64' - run: | - $ENV:LOVE_GRAPHICS_DEBUG=1 - powershell.exe ./install/lovec.exe ./testing/main.lua --runAllTests --renderers vulkan - - name: Love Test Report (vulkan) - if: steps.vars.outputs.arch != 'ARM64' - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Windows (vulkan) - title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-vulkan - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (vulkan) - if: steps.vars.outputs.arch != 'ARM64' - run: | - 7z a -tzip test-output-windows-vulkan.zip testing/output - - name: Artifact Test Output (vulkan) - if: steps.vars.outputs.arch != 'ARM64' - uses: actions/upload-artifact@v3 - with: - name: test-output-windows-vulkan - path: test-output-windows-vulkan.zip - macOS: + macos-latest: runs-on: macos-latest steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Clone Dependencies - uses: actions/checkout@v3 + - name: Download artifact + uses: dawidd6/action-download-artifact@v2 with: - path: apple-dependencies - repository: love2d/love-apple-dependencies - ref: 12.x - - name: Move Dependencies - run: - mv apple-dependencies/macOS/Frameworks platform/xcode/macosx - - name: Build - run: - xcodebuild clean archive -project platform/xcode/love.xcodeproj -scheme love-macosx -configuration Release -archivePath love-macos.xcarchive - - name: Export Archive - run: - xcodebuild -exportArchive -archivePath love-macos.xcarchive -exportPath love-macos -exportOptionsPlist platform/xcode/macosx/macos-copy-app.plist - - name: Zip Archive - run: - ditto -c -k --sequesterRsrc --keepParent love-macos/love.app love-macos.zip - - name: Artifact - uses: actions/upload-artifact@v3 - with: - name: love-macos - path: love-macos.zip - # macos opengl tests - - name: Run Tests - run: love-macos/love.app/Contents/MacOS/love testing/main.lua - - name: Love Test Report - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite MacOS - title: test-report-macos - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output - run: | - 7z a -tzip test-output-macos-opengl.zip testing/output/ - - name: Artifact Test Output - uses: actions/upload-artifact@v3 - with: - name: test-output-macos-opengl - path: test-output-macos-opengl.zip - iOS-Simulator: - runs-on: macos-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Clone Dependencies - uses: actions/checkout@v3 - with: - path: apple-dependencies - repository: love2d/love-apple-dependencies - ref: 12.x - - name: Move Dependencies - run: | - mv apple-dependencies/iOS/libraries platform/xcode/ios - - name: Build - run: - xcodebuild -project platform/xcode/love.xcodeproj -scheme love-ios -configuration Release -destination 'platform=iOS Simulator,name=iPhone 11' + workflow: ${{ github.event.workflow_run.workflow_id }} + workflow_conclusion: success