Merge pull request #822 from AristurtleDev/feature/automated-packaging

Update GitHub Workflow to Automate Build, Test, and Package Deployment
This commit is contained in:
Lucas Girouard-Stranks
2023-11-19 16:12:30 -05:00
committed by GitHub
25 changed files with 349 additions and 147 deletions
+35 -101
View File
@@ -1,15 +1,8 @@
name: "Build test deploy"
env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CORE_SDK_VERSION: 6.0.302
MYGET_ACCESS_TOKEN: ${{ secrets.MYGET_ACCESS_TOKEN }}
MYGET_SOURCE_URL: 'https://www.myget.org/F/lithiumtoast/api/v3/index.json'
on:
push:
branches: [develop]
branches: [develop, test/feature]
tags: [v*]
pull_request:
branches: [develop]
@@ -17,99 +10,40 @@ on:
branches: [develop]
jobs:
version-job:
name: "Version"
runs-on: ubuntu-latest
steps:
- name: "Checkout Git repository"
uses: actions/checkout@v2
- name: "Fetch all history for all tags and branches"
run: git fetch --prune --unshallow
- name: "Install GitVersion"
uses: gittools/actions/gitversion/setup@v0.9.6
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true # workaround for https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/ until the execute action is updated
with:
versionSpec: '5.x'
- name: "Use GitVersion"
uses: gittools/actions/gitversion/execute@v0.9.6
- run: echo "$GitVersion_NuGetVersionV2" >> version.txt
- name: "Upload NuGetVersion version artifact"
uses: actions/upload-artifact@v2
with:
name: version
path: version.txt
build-test-pack-job:
name: "Build"
needs: [version-job]
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
name: "Build-Test-Pack"
runs-on: ubuntu-latest
steps:
- name: "Clone Repository"
uses: actions/checkout@v4
- name: "CAKE (Build -> Test -> Package)"
run: dotnet run --project ./build/Build.csproj -- --target=Default
- name: "Upload Artifacts For Deploy"
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@main
with:
name: MonoGame.Extended
path: artifacts/*
- name: "Download version artifact"
uses: actions/download-artifact@v2
with:
name: version
- name: "Read Version"
id: version
shell: bash
run: |
echo "VERSION=$(cat version.txt)" >> $GITHUB_ENV
- name: "Print Version"
shell: bash
run: |
echo $VERSION
- name: "Checkout repository"
uses: actions/checkout@master
with:
submodules: true
lfs: true
- name: "Setup .NET Core CLI"
uses: actions/setup-dotnet@v1
with:
dotnet-version: '${{ env.DOTNET_CORE_SDK_VERSION }}'
- name: "Install fonts (Ubuntu)"
if: matrix.os == 'ubuntu-latest'
run: |
echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | sudo debconf-set-selections
sudo apt-get install -y ttf-mscorefonts-installer
sudo apt-get install -y fontconfig
sudo fc-cache -f -v
sudo fc-match Arial
- name: "Download NuGet packages"
run: dotnet restore --verbosity quiet
- name: "Build solution"
run: dotnet build --nologo --verbosity minimal --configuration Release --no-restore /p:Version='${{ env.VERSION }}'
- name: "Test solution"
run: dotnet test --nologo --verbosity normal --configuration Release --no-build
- name: "Pack solution"
if: matrix.os == 'ubuntu-latest' && github.event_name == 'push'
run: dotnet pack --nologo --output "./nuget-packages" --verbosity minimal --configuration Release --no-build -p:PackageVersion='${{ env.VERSION }}'
- name: "Add Packages Source: MyGet"
if: matrix.os == 'ubuntu-latest' && github.event_name == 'push'
run: dotnet nuget add source $MYGET_SOURCE_URL --name "MyGet"
- name: "Upload Packages: MyGet"
if: matrix.os == 'ubuntu-latest' && github.event_name == 'push'
run: dotnet nuget push "./**/*.nupkg" --source "MyGet" --skip-duplicate --api-key $MYGET_ACCESS_TOKEN
deploy-job:
name: "Deploy Nugets"
runs-on: ubuntu-latest
permissions:
packages: write
contents: write
needs: [build-test-pack-job]
if: ${{ github.event_name == 'push' }}
steps:
- name: "Clone Repository"
uses: actions/checkout@v4
- name: "Download Artifacts For Deploy"
uses: actions/download-artifact@v3
with:
name: MonoGame.Extended
path: artifacts
- name: "Push Package"
run: dotnet run --project ./build/Build.csproj -- --target=Deploy
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MYGET_ACCESS_TOKEN: ${{ secrets.MYGET_ACCESS_TOKEN }}
NUGET_ACCESS_TOKEN: ${{ secrets.NUGET_ACCESS_TOKEN }}
+3
View File
@@ -9,3 +9,6 @@
# macOS
.DS_Store
*.user
# cake build output
artifacts
+20
View File
@@ -0,0 +1,20 @@
<Project>
<PropertyGroup>
<Version>3.9.0</Version>
<Authors>craftworkgames</Authors>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<RepositoryBranch>develop</RepositoryBranch>
<NeutralLanguage>en</NeutralLanguage>
<PackageIcon>logo-nuget-128.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
</PropertyGroup>
<ItemGroup>
<!-- path must be relative to the individual csproj's not this .targets file -->
<None Include="../../../Logos/logo-nuget-128.png" Pack="true" PackagePath="" />
<None Include="../../../README.md" Pack="true" PackagePath="" />
</ItemGroup>
</Project>
+11
View File
@@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Cake.Frosting" Version="3.1.0" />
</ItemGroup>
</Project>
+41
View File
@@ -0,0 +1,41 @@
using System.Linq;
using Cake.Common;
using Cake.Common.Build;
using Cake.Common.Xml;
using Cake.Core;
using Cake.Frosting;
namespace BuildScripts;
public sealed class BuildContext : FrostingContext
{
public string ArtifactsDirectory { get; }
public string Version { get; }
public string SolutionPath { get; }
public string? RepositoryOwner { get; }
public string? RepositoryUrl { get; }
public bool IsTag { get; }
public bool IsRunningOnGitHubActions { get; }
public string? GitHubToken { get; }
public string? MyGetAccessToken { get; }
public string? NuGetAccessToken { get; }
public BuildContext(ICakeContext context) : base(context)
{
ArtifactsDirectory = context.Argument(nameof(ArtifactsDirectory), "artifacts");
Version = context.XmlPeek("Directory.Build.targets", "/Project/PropertyGroup/Version");
SolutionPath = "./MonoGame.Extended.sln";
IsRunningOnGitHubActions = context.BuildSystem().IsRunningOnGitHubActions;
if (IsRunningOnGitHubActions)
{
Version += "." + context.EnvironmentVariable("GITHUB_RUN_NUMBER");
RepositoryOwner = context.EnvironmentVariable("GITHUB_REPOSITORY_OWNER");
RepositoryUrl = $"https://github.com/{context.EnvironmentVariable("GITHUB_REPOSITORY")}";
IsTag = context.EnvironmentVariable("GITHUB_REF_TYPE") == "tag";
GitHubToken = context.EnvironmentVariable("GITHUB_TOKEN");
MyGetAccessToken = context.EnvironmentVariable("MYGET_ACCESS_TOKEN");
NuGetAccessToken = context.EnvironmentVariable("NUGET_ACCESS_TOKEN");
}
}
}
+29
View File
@@ -0,0 +1,29 @@
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.Build;
using Cake.Common.Tools.DotNet.MSBuild;
using Cake.Frosting;
namespace BuildScripts;
[TaskName(nameof(BuildTask))]
public sealed class BuildTask : FrostingTask<BuildContext>
{
public override void Run(BuildContext context)
{
DotNetMSBuildSettings msBuildSettings = new DotNetMSBuildSettings();
msBuildSettings.WithProperty("Version", context.Version);
msBuildSettings.WithProperty("NoWarn", "CS1591");
DotNetBuildSettings buildSettings = new DotNetBuildSettings()
{
MSBuildSettings = msBuildSettings,
Configuration = "Release",
Verbosity = DotNetVerbosity.Minimal,
NoRestore = true,
NoLogo = true
};
context.DotNetBuild(context.SolutionPath, buildSettings);
}
}
+25
View File
@@ -0,0 +1,25 @@
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.NuGet.Push;
using Cake.Frosting;
namespace BuildScripts;
[TaskName(nameof(DeployToGitHubTask))]
public sealed class DeployToGitHubTask : FrostingTask<BuildContext>
{
public override bool ShouldRun(BuildContext context)
{
return context.IsRunningOnGitHubActions;
}
public override void Run(BuildContext context)
{
DotNetNuGetPushSettings pushSettings = new DotNetNuGetPushSettings()
{
Source = $"https://nuget.pkg.github.com/{context.RepositoryOwner}/index.json",
ApiKey = context.GitHubToken
};
context.DotNetNuGetPush("artifacts/*.nupkg", pushSettings);
}
}
+25
View File
@@ -0,0 +1,25 @@
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.NuGet.Push;
using Cake.Frosting;
namespace BuildScripts;
[TaskName(nameof(DeployToMyGetTask))]
public sealed class DeployToMyGetTask : FrostingTask<BuildContext>
{
public override bool ShouldRun(BuildContext context)
{
return context.IsRunningOnGitHubActions;
}
public override void Run(BuildContext context)
{
DotNetNuGetPushSettings pushSettings = new DotNetNuGetPushSettings()
{
Source = $"https://www.myget.org/F/lithiumtoast/api/v3/index.json",
ApiKey = context.MyGetAccessToken
};
context.DotNetNuGetPush("artifacts/*.nupkg", pushSettings);
}
}
+27
View File
@@ -0,0 +1,27 @@
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.NuGet.Push;
using Cake.Frosting;
namespace BuildScripts;
[TaskName(nameof(DeployToNuGetTask))]
public sealed class DeployToNuGetTask : FrostingTask<BuildContext>
{
public override bool ShouldRun(BuildContext context)
{
return context.IsRunningOnGitHubActions &&
context.IsTag &&
context.RepositoryOwner == "craftworksgames";
}
public override void Run(BuildContext context)
{
DotNetNuGetPushSettings pushSettings = new DotNetNuGetPushSettings()
{
Source = $"https://api.nuget.org/v3/index.json",
ApiKey = context.NuGetAccessToken
};
context.DotNetNuGetPush("artifacts/*.nupkg", pushSettings);
}
}
+40
View File
@@ -0,0 +1,40 @@
using Cake.Common.Build;
using Cake.Common.IO;
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.MSBuild;
using Cake.Common.Tools.DotNet.Pack;
using Cake.Core.IO;
using Cake.Frosting;
namespace BuildScripts;
[TaskName(nameof(PackageTask))]
public sealed class PackageTask : FrostingTask<BuildContext>
{
public override void Run(BuildContext context)
{
context.CleanDirectories(context.ArtifactsDirectory);
context.CreateDirectory(context.ArtifactsDirectory);
DotNetMSBuildSettings msBuildSettings = new DotNetMSBuildSettings();
msBuildSettings.WithProperty("Version", context.Version);
// Ignore warnings about adding duplicate items added to package
msBuildSettings.WithProperty("NoWarn", "NU5118");
DotNetPackSettings packSettings = new DotNetPackSettings()
{
MSBuildSettings = msBuildSettings,
Configuration = "Release",
Verbosity = DotNetVerbosity.Minimal,
NoLogo = true,
OutputDirectory = context.ArtifactsDirectory,
};
FilePathCollection files = context.GetFiles("./src/cs/MonoGame.Extended*/**/*.csproj");
foreach(FilePath file in files)
{
context.DotNetPack(file.FullPath, packSettings);
}
}
}
+34
View File
@@ -0,0 +1,34 @@
using System.Threading.Tasks;
using Cake.Common.Build;
using Cake.Common.IO;
using Cake.Common.Tools.ReportUnit;
using Cake.Core;
using Cake.Core.IO;
using Cake.Frosting;
namespace BuildScripts;
public static class Program
{
public static int Main(string[] args)
{
return new CakeHost()
.UseContext<BuildContext>()
.UseWorkingDirectory("../")
.Run(args);
}
}
[TaskName("Default")]
[IsDependentOn(typeof(RestoreTask))]
[IsDependentOn(typeof(BuildTask))]
[IsDependentOn(typeof(TestTask))]
[IsDependentOn(typeof(PackageTask))]
public sealed class DefaultTask : FrostingTask {}
[TaskName("Deploy")]
[IsDependentOn(typeof(DeployToGitHubTask))]
[IsDependentOn(typeof(DeployToMyGetTask))]
[IsDependentOn(typeof(DeployToNuGetTask))]
public sealed class DeployTask : FrostingTask {}
+18
View File
@@ -0,0 +1,18 @@
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.Restore;
using Cake.Frosting;
namespace BuildScripts;
public sealed class RestoreTask : FrostingTask<BuildContext>
{
public override void Run(BuildContext context)
{
DotNetRestoreSettings restoreSettings = new DotNetRestoreSettings()
{
Verbosity = DotNetVerbosity.Quiet
};
context.DotNetRestore(context.SolutionPath, restoreSettings);
}
}
+22
View File
@@ -0,0 +1,22 @@
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.Test;
using Cake.Frosting;
namespace BuildScripts;
[TaskName(nameof(TestTask))]
public class TestTask : FrostingTask<BuildContext>
{
public override void Run(BuildContext context)
{
DotNetTestSettings testSettings = new DotNetTestSettings()
{
Configuration = "Release",
Verbosity = DotNetVerbosity.Normal,
NoLogo = true,
NoBuild = true
};
context.DotNetTest(context.SolutionPath, testSettings);
}
}
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>Animations to make MonoGame more awesome.</Description>
<PackageTags>monogame animations spritesheet sprite</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
</PropertyGroup>
<PropertyGroup>
@@ -24,4 +21,4 @@
<ItemGroup>
<Folder Include="SpriteSheets\" />
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>Collisions to make MonoGame more awesome.</Description>
<PackageTags>monogame collisions</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
@@ -26,4 +23,4 @@
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>
@@ -12,9 +12,6 @@
<Authors>craftworkgames</Authors>
<Description>Content Pipeline importers and processors to make MonoGame more awesome.</Description>
<PackageTags>monogame content importer processor reader tiled texturepacker bmfont animations</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
</PropertyGroup>
<PropertyGroup>
@@ -45,4 +42,4 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>An Entity Component System to make MonoGame more awesome.</Description>
<PackageTags>monogame ecs entity component system</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
</PropertyGroup>
<PropertyGroup>
@@ -25,4 +22,4 @@
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>Graphics makes MonoGame more awesome.</Description>
<PackageTags>monogame graphics batcher effects</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
@@ -46,4 +43,4 @@
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>A GUI system for MonoGame written from the ground up to make MonoGame more awesome.</Description>
<PackageTags>monogame gui</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
@@ -27,4 +24,4 @@
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>An event based input system to MonoGame more awesome.</Description>
<PackageTags>monogame input event based listeners</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
@@ -26,4 +23,4 @@
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>A high performance particle system to make MonoGame more awesome.</Description>
<PackageTags>monogame particle system</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
@@ -30,4 +27,4 @@
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>Support for Tiled maps to make MonoGame more awesome. See http://www.mapeditor.org</Description>
<PackageTags>monogame tiled maps orthographic isometric</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
</PropertyGroup>
<PropertyGroup>
@@ -30,4 +27,4 @@
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>A tweening system to make MonoGame more awesome.</Description>
<PackageTags>monogame animations tweening</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
</PropertyGroup>
<PropertyGroup>
@@ -25,4 +22,4 @@
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>
@@ -7,9 +7,6 @@
<Authors>craftworkgames</Authors>
<Description>It makes MonoGame more awesome.</Description>
<PackageTags>monogame extended pipeline bmfont tiled texture atlas input viewport fps shapes sprite</PackageTags>
<PackageProjectUrl>https://github.com/craftworkgames/MonoGame.Extended</PackageProjectUrl>
<RepositoryUrl>https://github.com/craftworkgames/MonoGame.Extended</RepositoryUrl>
<PackageIconUrl>https://raw.githubusercontent.com/craftworkgames/MonoGame.Extended/master/Logos/logo-nuget-128.png</PackageIconUrl>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
@@ -26,5 +23,5 @@
</PackageReference>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
</Project>
</Project>
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Xunit;
@@ -35,7 +36,12 @@ namespace MonoGame.Extended.Tests.Collections
Assert.True(false);
}
GC.EndNoGCRegion();
// Wrap in if statement due to exception thrown when running test through
// cake build script or when debugging test script manually.
if(GCSettings.LatencyMode == GCLatencyMode.NoGCRegion)
{
GC.EndNoGCRegion();
}
}
}