feat: add Godot C# compatibility and shared codegen weaving
Validate ShrinkSDK Workspace / unity (push) Failing after 3m18s
Validate ShrinkSDK Workspace / unity (push) Failing after 3m18s
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#nullable enable
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using ShrinkSDK.Godot.Editor;
|
||||
using ShrinkSDK.Installer;
|
||||
|
||||
var root = Path.Combine(Path.GetTempPath(), "ShrinkSDK.InstallerFixture", Guid.NewGuid().ToString("N"));
|
||||
Directory.CreateDirectory(root);
|
||||
try
|
||||
{
|
||||
var project = Path.Combine(root, "Fixture.csproj");
|
||||
File.WriteAllText(project, """
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><TargetFramework>net8.0</TargetFramework><FixtureValue>keep</FixtureValue></PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Existing.Package" Version="1.2.3" />
|
||||
<PackageReference Include="Child.Version.Package"><Version>3.4.5</Version></PackageReference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
""");
|
||||
var config = Path.Combine(root, "NuGet.Config");
|
||||
File.WriteAllText(config, """
|
||||
<configuration><packageSources><add key="Existing" value="https://example.invalid/v3/index.json" /></packageSources></configuration>
|
||||
""");
|
||||
|
||||
ShrinkProjectPackageEditor.SetPackageReference(project, "ShrinkSDK.EventBus", "2.1.0");
|
||||
ShrinkProjectPackageEditor.SetPackageReference(project, "ShrinkSDK.EventBus", "2.1.0");
|
||||
var installed = XDocument.Load(project);
|
||||
Require(installed.Descendants("PackageReference").Count(element =>
|
||||
(string?)element.Attribute("Include") == "ShrinkSDK.EventBus") == 1, "package reference was duplicated");
|
||||
Require(installed.ToString().Contains("Existing.Package") && installed.ToString().Contains("FixtureValue"),
|
||||
"unrelated project content was changed");
|
||||
var installedVersions = ShrinkProjectPackageEditor.ReadPackageReferences(project);
|
||||
Require(installedVersions["ShrinkSDK.EventBus"] == "2.1.0", "installed version was not read correctly");
|
||||
Require(installedVersions["Child.Version.Package"] == "3.4.5", "child Version element was not read correctly");
|
||||
Require(ShrinkPackageVersion.Classify("2.2.0", "2.1.0") == ShrinkPackageVersionRelation.Newer,
|
||||
"newer installed version was classified as outdated");
|
||||
Require(ShrinkPackageVersion.Classify("2.1.0-preview.10", "2.1.0-preview.2") ==
|
||||
ShrinkPackageVersionRelation.Newer, "prerelease versions were not ordered semantically");
|
||||
|
||||
ShrinkProjectPackageEditor.SetPackageReference(project, "ShrinkSDK.EventBus", null);
|
||||
Require(!XDocument.Load(project).Descendants("PackageReference").Any(element =>
|
||||
(string?)element.Attribute("Include") == "ShrinkSDK.EventBus"), "package reference was not removed");
|
||||
|
||||
ShrinkProjectPackageEditor.EnsureShrinkFeed(config);
|
||||
ShrinkProjectPackageEditor.EnsureShrinkFeed(config);
|
||||
var sources = XDocument.Load(config).Descendants("add").ToArray();
|
||||
Require(sources.Count(element => (string?)element.Attribute("key") == "ShrinkSDK") == 1,
|
||||
"ShrinkSDK feed was duplicated");
|
||||
Require(sources.Any(element => (string?)element.Attribute("key") == "Existing"),
|
||||
"existing NuGet source was removed");
|
||||
Console.WriteLine("PASS Godot Installer atomic package/feed install-update-remove merge");
|
||||
}
|
||||
finally
|
||||
{
|
||||
Directory.Delete(root, true);
|
||||
}
|
||||
|
||||
static void Require(bool condition, string message)
|
||||
{
|
||||
if (!condition) throw new InvalidOperationException(message);
|
||||
}
|
||||
Reference in New Issue
Block a user