Repository navigation
Update GraphicsDeviceTest.cs #8
This file contains hidden or 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: Build | |
| on: [push, pull_request] | |
| concurrency: | |
| group: ${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| env: | |
| DotnetVersion: 9.0.x | |
| jobs: | |
| build: | |
| name: build-${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [windows-latest, macos-26, ubuntu-24.04] | |
| fail-fast: false | |
| steps: | |
| - name: Clone repository | |
| uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: Generate global.json | |
| run: | | |
| echo '{ "sdk": { "version": "${{ env.DotnetVersion }}" } }' > global.json | |
| - name: Setup .NET Core SDK | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: '${{ env.DotnetVersion }}' | |
| - name: Setup Android Dependencies | |
| uses: monogame/monogame-actions/install-android-dependencies@v1 | |
| - name: Setup DotNet on Windows | |
| if: runner.environment == 'github-hosted' && runner.os == 'windows' | |
| run: | | |
| dotnet workload install android ios | |
| - name: Setup DotNet on linux | |
| if: runner.environment == 'github-hosted' && runner.os == 'Linux' | |
| run: | | |
| dotnet workload install android | |
| - name: Setup DotNet on MacOS | |
| if: runner.environment == 'github-hosted' && runner.os == 'macos' | |
| run: | | |
| dotnet workload install macos ios | |
| - name: Add msbuild to PATH | |
| if: runner.os == 'Windows' | |
| uses: microsoft/setup-msbuild@v1.0.2 | |
| - name: Setup Premake5 | |
| uses: abel0b/setup-premake@v2.4 | |
| with: | |
| version: "5.0.0-beta2" | |
| - name: Setup Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'microsoft' | |
| java-version: '17' | |
| - name: Install Vulkan SDK | |
| uses: humbletim/setup-vulkan-sdk@v1.2.1 | |
| if: runner.os != 'macos' | |
| with: | |
| vulkan-query-version: 1.4.309.0 | |
| vulkan-use-cache: true | |
| vulkan-components: 'Vulkan-Headers, Vulkan-Loader' | |
| - name: Install Full Vulkan SDK | |
| if: runner.os == 'macos' | |
| uses: humbletim/install-vulkan-sdk@v1.2 | |
| with: | |
| version: 1.4.309.0 | |
| cache: true | |
| - name: Disable Annotations | |
| run: echo "::remove-matcher owner=csc::" | |
| - name: Setup Wine | |
| uses: monogame/monogame-actions/install-wine@v1 | |
| - name: Install Fonts | |
| uses: monogame/monogame-actions/install-fonts@v1 | |
| - name: Install SDL2 deps on Linux | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get install -y --no-install-recommends \ | |
| libasound2-dev libpulse-dev libaudio-dev libjack-jackd2-dev libsndio-dev libsamplerate0-dev \ | |
| libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev \ | |
| libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \ | |
| libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev \ | |
| libpipewire-0.3-dev libdecor-0-dev | |
| - name: Dotnet Restore Templates | |
| if: runner.environment == 'github-hosted' && runner.os == 'Windows' | |
| run: | | |
| dotnet restore Templates/MonoGame.Templates.VSExtension | |
| - name: Build | |
| run: | | |
| dotnet run --project build/Build.csproj -- --target=Default | |
| env: | |
| DOTNET_SYSTEM_NET_SECURITY_NOREVOCATIONCHECKBYDEFAULT: 1 # android compilation is failing randomly due to downloads from microsofts website during it | |
| - name: Run Tools Tests | |
| run: | | |
| if [ "$RUNNER_OS" == "Windows" ]; then | |
| dotnet test Tools/MonoGame.Tools.Tests/MonoGame.Tools.Tests.csproj --blame-hang-timeout 5m -c Release | |
| elif [ "$RUNNER_OS" == "Linux" ]; then | |
| MGFXC_WINE_PATH=/home/runner/.winemonogame dotnet test Tools/MonoGame.Tools.Tests/MonoGame.Tools.Tests.csproj --blame-hang-timeout 5m -c Release --filter="TestCategory!=Audio" | |
| else | |
| MGFXC_WINE_PATH=/Users/runner/.winemonogame dotnet test Tools/MonoGame.Tools.Tests/MonoGame.Tools.Tests.csproj --blame-hang-timeout 5m -c Release --filter="TestCategory!=Audio" | |
| fi | |
| env: | |
| CI: true | |
| shell: bash | |
| - name: Setup DotNet on MacOS for DotNet 9 | |
| if: runner.environment == 'github-hosted' && runner.os == 'macos' | |
| run: | | |
| dotnet workload install macos ios | |
| - name: Test generated Nuget packages | |
| if: runner.os != 'Linux' | |
| run: dotnet run --project build/Build.csproj -- --target=TestNuGet --framework net9.0 | |
| env: | |
| ACTIONS_RUNTIME_TOKEN: ${{ env.ACTIONS_RUNTIME_TOKEN }} | |
| ACTIONS_RUNTIME_URL: "${{ env.ACTIONS_RUNTIME_URL }}" | |
| - name: Expose GitHub Runtime | |
| uses: crazy-max/ghaction-github-runtime@v3 | |
| - name: Upload Artifacts | |
| run: dotnet run --project build/Build.csproj -- --target=UploadArtifacts | |
| env: | |
| ACTIONS_RUNTIME_TOKEN: ${{ env.ACTIONS_RUNTIME_TOKEN }} | |
| ACTIONS_RUNTIME_URL: "${{ env.ACTIONS_RUNTIME_URL }}" | |
| package-binaries: | |
| name: PackageBinaries | |
| needs: [ build, tests ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Clone Repository | |
| uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: Generate global.json | |
| run: | | |
| echo '{ "sdk": { "version": "${{ env.DotnetVersion }}" } }' > global.json | |
| - name: Setup .NET Core SDK | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: '${{ env.DotnetVersion }}' | |
| - name: Expose GitHub Runtime | |
| uses: crazy-max/ghaction-github-runtime@v3 | |
| - name: Upload Binaries package | |
| run: dotnet run --project build/Build.csproj -- --target=DeployBinaries | |
| env: | |
| ACTIONS_RUNTIME_TOKEN: ${{ env.ACTIONS_RUNTIME_TOKEN }} | |
| ACTIONS_RUNTIME_URL: "${{ env.ACTIONS_RUNTIME_URL }}" | |
| deploy: | |
| name: Deploy | |
| needs: [ build, tests ] | |
| runs-on: ubuntu-latest | |
| if: ${{ github.event_name == 'push' }} | |
| permissions: | |
| packages: write | |
| contents: write | |
| steps: | |
| - name: Clone Repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Generate global.json | |
| run: | | |
| echo '{ "sdk": { "version": "${{ env.DotnetVersion }}" } }' > global.json | |
| - name: Setup .NET Core SDK | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: '${{ env.DotnetVersion }}' | |
| - name: Expose GitHub Runtime | |
| uses: crazy-max/ghaction-github-runtime@v3 | |
| - name: Push Nugets | |
| run: dotnet run --project build/Build.csproj -- --target=Deploy | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
| MARKETPLACE_PAT: ${{ secrets.MARKETPLACE_PAT }} | |
| - name: Make a Release | |
| if: github.ref_type == 'tag' | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| name: 'MonoGame ${{ github.ref_name }}' | |
| tag: ${{ github.ref_name }} | |
| allowUpdates: true | |
| removeArtifacts: true | |
| artifacts: "nugets/*.nupkg;vsix/MonoGame.Templates.VSExtension.vsix" | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| choose-runner: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| runner: ${{ steps.runner.outputs.runner }} | |
| steps: | |
| - id: runner | |
| run: | | |
| if [ "${{ github.repository }}" == "MonoGame/MonoGame" ]; then | |
| echo "::set-output name=runner::-selfhosted-" | |
| else | |
| echo "::set-output name=runner::-" | |
| fi | |
| tests: | |
| name: tests-${{ matrix.os }} | |
| needs: [ build, choose-runner ] | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| include: | |
| - os: windows${{ needs.choose-runner.outputs.runner }}latest | |
| platform: windows | |
| shell: cmd | |
| - os: macos${{ needs.choose-runner.outputs.runner }}15 | |
| platform: macos | |
| shell: bash | |
| - os: ubuntu-24.04 | |
| platform: linux | |
| shell: bash | |
| filter: --where="Category != Audio" | |
| # - os: linux | |
| # platform: linux | |
| fail-fast: false | |
| defaults: | |
| run: | |
| shell: ${{ matrix.shell }} | |
| steps: | |
| - name: Clone repository | |
| uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: Generate global.json | |
| run: | | |
| echo '{ "sdk": { "version": "${{ env.DotnetVersion }}" } }' > global.json | |
| - name: Setup .NET Core SDK | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: '${{ env.DotnetVersion }}' | |
| - name: install wine64 on linux | |
| if: runner.environment == 'github-hosted' && runner.os == 'Linux' | |
| run: | | |
| sudo apt install p7zip-full curl | |
| sudo dpkg --add-architecture i386 | |
| sudo mkdir -pm755 /etc/apt/keyrings | |
| sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key | |
| sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/noble/winehq-noble.sources | |
| sudo apt update && sudo apt install --install-recommends winehq-stable | |
| wget -qO- https://monogame.net/downloads/net9_mgfxc_wine_setup.sh | bash | |
| - name: install wine64 on MacOS | |
| if: runner.environment == 'github-hosted' && runner.os == 'macos' | |
| run: | | |
| brew install wine-stable p7zip | |
| sudo mkdir -p /usr/local/lib | |
| ls -n /Applications/ | grep Xcode* | |
| sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer | |
| wget -qO- https://monogame.net/downloads/net9_mgfxc_wine_setup.sh | bash | |
| - name: Install Arial Font | |
| if: runner.os == 'Linux' && runner.environment == 'github-hosted' | |
| run: | | |
| echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | sudo debconf-set-selections | |
| sudo apt install -y ttf-mscorefonts-installer | |
| sudo fc-cache | |
| fc-match Arial | |
| - name: Download Nuget | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: Artifacts/NuGet | |
| - name: Download tests-desktopgl-${{ matrix.platform }} | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: tests-desktopgl-${{ matrix.platform }} | |
| path: tests-desktopgl | |
| - name: Download tests-windowsdx-${{ matrix.platform }} | |
| if: runner.os == 'Windows' && runner.environment != 'github-hosted' | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: tests-windowsdx-${{ matrix.platform }} | |
| path: tests-windowsdx | |
| # Run the DirectX tests in two steps: first the audio, then the rest. | |
| # This is because the audio tests has some incompatibilities within the runner with ContentManagerTests. | |
| - name: Run DirectX Audio Tests | |
| if: runner.os == 'Windows' && runner.environment != 'github-hosted' | |
| run: dotnet test --filter Category=Audio MonoGame.Tests.dll | |
| env: | |
| CI: true | |
| working-directory: tests-windowsdx | |
| - name: Run DirectX All Tests Except Audio | |
| if: runner.os == 'Windows' && runner.environment != 'github-hosted' | |
| run: dotnet test --filter Category!=Audio MonoGame.Tests.dll | |
| env: | |
| CI: true | |
| working-directory: tests-windowsdx | |
| # Run the DesktopGL tests on all platforms using NUnitLite runner not dotnet test | |
| # We have to run this is bits because the tests crash if too many are run in one go? | |
| - name: Run Framework Tests | |
| if: runner.environment != 'github-hosted' || runner.os != 'Windows' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Framework ${{matrix.filter}} | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Audio Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Audio | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Input Tests | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Input | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Visual Tests | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Visual | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Game Tests | |
| if: runner.environment != 'github-hosted' || runner.os == 'Linux' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --where="Category = GameTest" | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.BlendStateTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.BlendStateTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.DepthStencilStateTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.DepthStencilStateTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.EffectTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.EffectTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.GraphicsAdapterTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.GraphicsAdapterTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| # This test hangs on MacOS? | |
| # - name: Run Graphics.GraphicsDeviceTest Tests | |
| # if: runner.environment != 'github-hosted' | |
| # run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.GraphicsDeviceTest | |
| # env: | |
| # CI: true | |
| # working-directory: tests-desktopgl | |
| - name: Run Graphics.IndexBufferTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.IndexBufferTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.MiscellaneousTests Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.MiscellaneousTests | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.ModelTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.ModelTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.OcclusionQueryTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.OcclusionQueryTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.RasterizerStateTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.RasterizerStateTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.RenderTarget2DTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.RenderTarget2DTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.RenderTargetCubeTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.RenderTargetCubeTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.SamplerStateTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.SamplerStateTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.ScissorRectangleTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.ScissorRectangleTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.ShaderTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.ShaderTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.SpriteBatchTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.SpriteBatchTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.SpriteFontTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.SpriteFontTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.Texture2DNonVisualTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.Texture2DNonVisualTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.Texture2DTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.Texture2DTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.Texture3DNonVisualTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.Texture3DNonVisualTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.Texture3DTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.Texture3DTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.TextureCubeTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.TextureCubeTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.VertexBufferTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.VertexBufferTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl | |
| - name: Run Graphics.ViewportTest Tests | |
| if: runner.environment != 'github-hosted' | |
| run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.ViewportTest | |
| env: | |
| CI: true | |
| working-directory: tests-desktopgl |