Files
RobustToolbox/Robust.UnitTesting/Packaging/AssetPassMergeTextDirectoriesTest.cs
T
PJB3005 d1c6c11755 Add asset pass to merge text files in directories.
This massively reduces the file count of published SS14 builds by a few thousand, by combining YAML prototypes and Fluent files in the same folder into one file.
2025-07-25 15:57:18 +02:00

77 lines
2.6 KiB
C#

using System.Threading.Tasks;
using NUnit.Framework;
using Robust.Packaging.AssetProcessing.Passes;
namespace Robust.UnitTesting.Packaging;
[Parallelizable(ParallelScope.All)]
[TestFixture]
[TestOf(typeof(AssetPassMergeTextDirectories))]
internal sealed class AssetPassMergeTextDirectoriesTest
{
[Test]
public async Task Test()
{
var pass = new AssetPassMergeTextDirectories("/Prototypes", "yml", f => $"# BEGIN: {f}", f => $"# END: {f}");
var collectorPass = AssetPassTest.SetupTestPass(pass);
pass.InjectFileFromMemory("/Prototypes/LICENSE.txt", "Do whatever\n"u8);
pass.InjectFileFromMemory("/Prototypes/b.yml", "# file: B\n"u8);
pass.InjectFileFromMemory("/Prototypes/a.yml", "# file: A\n"u8);
pass.InjectFileFromMemory("/Prototypes/z/d.yml", "# file: D\n"u8);
pass.InjectFileFromMemory("/Prototypes/z/c.yml", "# file: C\n"u8);
pass.InjectFinished();
await collectorPass.FinishedTask;
collectorPass.AssertTextFiles(
("/Prototypes/__merged.yml", """
# BEGIN: /Prototypes/a.yml
# file: A
# END: /Prototypes/a.yml
# BEGIN: /Prototypes/b.yml
# file: B
# END: /Prototypes/b.yml
""".Replace("\r\n", "\n")),
("/Prototypes/z/__merged.yml", """
# BEGIN: /Prototypes/z/c.yml
# file: C
# END: /Prototypes/z/c.yml
# BEGIN: /Prototypes/z/d.yml
# file: D
# END: /Prototypes/z/d.yml
""".Replace("\r\n", "\n")));
}
[Test]
public async Task TestNormalizeEol()
{
var pass = new AssetPassMergeTextDirectories("/", "yml");
var collectorPass = AssetPassTest.SetupTestPass(pass);
pass.InjectFileFromMemory("/b.yml", "# file: B\r\n"u8);
pass.InjectFileFromMemory("/a.yml", "# file: A\n"u8);
pass.InjectFinished();
await collectorPass.FinishedTask;
collectorPass.AssertTextFiles(
("/__merged.yml", "# file: A\n# file: B\n"));
}
[Test]
public async Task TestFixBom()
{
var pass = new AssetPassMergeTextDirectories("/", "yml");
var collectorPass = AssetPassTest.SetupTestPass(pass);
pass.InjectFileFromMemory("/b.yml", "\uFEFF# file: B\n"u8);
pass.InjectFileFromMemory("/a.yml", "\uFEFF# file: A\n"u8);
pass.InjectFinished();
await collectorPass.FinishedTask;
collectorPass.AssertTextFiles(
("/__merged.yml", "# file: A\n# file: B\n"));
}
}