Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/develop' into native
Browse files Browse the repository at this point in the history
# Conflicts:
#	.vscode/tasks.json
  • Loading branch information
tomspilman committed Sep 24, 2024
2 parents c967ddd + b9dddad commit 57106c4
Show file tree
Hide file tree
Showing 83 changed files with 1,230 additions and 208 deletions.
347 changes: 344 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: 'microsoft'
java-version: '11'
java-version: '17'

- name: Install Vulkan SDK
uses: humbletim/[email protected]
Expand All @@ -45,20 +45,72 @@ jobs:
- name: Disable annotations
run: echo "::remove-matcher owner=csc::"

- name: install wine64 on 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/jammy/winehq-jammy.sources
sudo apt update && sudo apt install --install-recommends winehq-stable
if: runner.os == 'Linux'

- name: Install Arial Font
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
if: runner.os == 'Linux'

- name: install wine64 on macos
run: |
brew install wine-stable p7zip freeimage freetype
sudo mkdir -p /usr/local/lib
sudo ln -s /opt/homebrew/lib/libfreetype.dylib /usr/local/lib/libfreetype6.dylib
sudo ln -s /opt/homebrew/lib/libfreeimage.dylib /usr/local/lib/libfreeimage.dylib
if: runner.os == 'macOS'

- name: Setup Wine
run: wget -qO- https://monogame.net/downloads/net9_mgfxc_wine_setup.sh | bash
if: runner.os != 'Windows'

- name: Install required workloads
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
echo "MICROSOFT SUPPORT ANDROID WORKLOAD ON LINUX PLZZZ!"
dotnet workload install android
elif [ "$RUNNER_OS" == "Windows" ]; then
dotnet.exe workload install android ios macos
else
dotnet workload install android ios macos
dotnet workload install android
fi
shell: bash

- name: Build
run: dotnet run --project build/Build.csproj -- --target=Default

- name: Test
run: dotnet test Tools/MonoGame.Tools.Tests/MonoGame.Tools.Tests.csproj --blame-hang-timeout 1m -c Release --filter="TestCategory!=Audio"
env:
DOTNET_ROOT: ${{github.workspace}}/dotnet64
MGFXC_WINE_PATH: /home/runner/.winemonogame
CI: true
if: runner.os == 'Linux'

- name: Test
run: dotnet test Tools/MonoGame.Tools.Tests/MonoGame.Tools.Tests.csproj --blame-hang-timeout 1m -c Release --filter="TestCategory!=Audio"
env:
DOTNET_ROOT: ${{github.workspace}}/dotnet64
MGFXC_WINE_PATH: /Users/runner/.winemonogame
CI: true
if: runner.os == 'macOS'

- name: Test
run: dotnet test Tools/MonoGame.Tools.Tests/MonoGame.Tools.Tests.csproj --blame-hang-timeout 1m -c Release
env:
CI: true
if: runner.os == 'Windows'

- name: Expose GitHub Runtime
uses: crazy-max/ghaction-github-runtime@v3

Expand Down Expand Up @@ -103,3 +155,292 @@ jobs:
removeArtifacts: true
artifacts: "nugets/*.nupkg"
token: ${{ secrets.GITHUB_TOKEN }}

tests:
name: tests-${{ matrix.os }}
needs: [ build ]
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: windows
platform: windows
- os: macos
platform: macos
- os: ubuntu-latest
platform: linux
filter: --where="Category != Audio"
# - os: linux
# platform: linux
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@v4
with:
submodules: recursive

- name: Setup .NET Core SDK ${{ matrix.dotnet-version }}
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'

- name: install wine64 on 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/jammy/winehq-jammy.sources
sudo apt update && sudo apt install --install-recommends winehq-stable
if: runner.os == 'Linux' && runner.environment == 'github-hosted'

- name: Install Arial Font
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
if: runner.os == 'Linux' && runner.environment == 'github-hosted'

- name: Setup Wine
run: wget -qO- https://monogame.net/downloads/net9_mgfxc_wine_setup.sh | bash
if: runner.os != 'Windows' && runner.environment == 'github-hosted'

- name: Download tests-tools-${{ matrix.platform }}
uses: actions/download-artifact@v3
with:
name: tests-tools-${{ matrix.platform }}
path: tests-tools

- name: Download tests-desktopgl-${{ matrix.platform }}
uses: actions/download-artifact@v3
with:
name: tests-desktopgl-${{ matrix.platform }}
path: tests-desktopgl

- name: Download tests-windowsdx-${{ matrix.platform }}
uses: actions/download-artifact@v3
with:
name: tests-windowsdx-${{ matrix.platform }}
path: tests-windowsdx
if: runner.os == 'Windows'

- name: Install Tools
run: |
dotnet tool install --create-manifest-if-needed mgcb-basisu
dotnet tool install --create-manifest-if-needed mgcb-crunch
- name: Run Tools Tests
run: dotnet test tests-tools/MonoGame.Tools.Tests.dll --blame-hang-timeout 1m --filter="TestCategory!=Effects"
env:
CI: true

- name: Run DirectX Tests
shell: cmd
run: dotnet MonoGame.Tests.dll
env:
CI: true
working-directory: tests-windowsdx
if: runner.os == 'Windows'

# 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
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Framework ${{matrix.filter}}
env:
CI: true
working-directory: tests-desktopgl

- name: Run Audio Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Audio
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- 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
run: dotnet MonoGame.Tests.dll --timeout=300000 --where="Category = GameTest"
env:
CI: true
working-directory: tests-desktopgl

- name: Run Graphics.BlendStateTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.BlendStateTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.DepthStencilStateTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.DepthStencilStateTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.EffectTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.EffectTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.GraphicsAdapterTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.GraphicsAdapterTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

# This test hangs on MacOS?
# - name: Run Graphics.GraphicsDeviceTest Tests
# run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.GraphicsDeviceTest
# env:
# CI: true
# working-directory: tests-desktopgl
# if: runner.environment != 'github-hosted'

- name: Run Graphics.IndexBufferTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.IndexBufferTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.MiscellaneousTests Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.MiscellaneousTests
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.ModelTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.ModelTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.OcclusionQueryTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.OcclusionQueryTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.RasterizerStateTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.RasterizerStateTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.RenderTarget2DTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.RenderTarget2DTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.RenderTargetCubeTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.RenderTargetCubeTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.SamplerStateTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.SamplerStateTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.ScissorRectangleTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.ScissorRectangleTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.ShaderTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.ShaderTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.SpriteBatchTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.SpriteBatchTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.SpriteFontTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.SpriteFontTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.Texture2DNonVisualTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.Texture2DNonVisualTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.Texture2DTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.Texture2DTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.Texture3DNonVisualTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.Texture3DNonVisualTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.Texture3DTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.Texture3DTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.TextureCubeTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.TextureCubeTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.VertexBufferTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.VertexBufferTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'

- name: Run Graphics.ViewportTest Tests
run: dotnet MonoGame.Tests.dll --timeout=300000 --test MonoGame.Tests.Graphics.ViewportTest
env:
CI: true
working-directory: tests-desktopgl
if: runner.environment != 'github-hosted'
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ project.lock.json
/MonoGame.Framework/MonoGame.Framework.Net.WindowsUniversal.project.lock.json
/MonoGame.Framework/MonoGame.Framework.WindowsUniversal.project.lock.json
artifacts/
Artifacts/

# JetBrains Rider
.idea/
Expand Down
Loading

0 comments on commit 57106c4

Please sign in to comment.