mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
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.
56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using Robust.Packaging.AssetProcessing;
|
|
|
|
namespace Robust.UnitTesting.Packaging;
|
|
|
|
/// <summary>
|
|
/// A simple asset pass that stores all files it receives, for introspection by tests.
|
|
/// </summary>
|
|
public sealed class AssetPassTestCollector : AssetPass
|
|
{
|
|
public readonly List<AssetFile> Files = [];
|
|
|
|
protected override AssetFileAcceptResult AcceptFile(AssetFile file)
|
|
{
|
|
lock (Files)
|
|
{
|
|
Files.Add(file);
|
|
}
|
|
|
|
return AssetFileAcceptResult.Consumed;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Assert that the only files collected are an exact set of test files.
|
|
/// </summary>
|
|
public void AssertTextFiles(params (string path, string data)[] files)
|
|
{
|
|
lock (Files)
|
|
{
|
|
Assert.That(Files, Has.Count.EqualTo(files.Length));
|
|
|
|
Assert.Multiple(() =>
|
|
{
|
|
foreach (var file in files)
|
|
{
|
|
var matchingFile = Files.SingleOrDefault(f => f.Path == file.path);
|
|
if (matchingFile == null)
|
|
{
|
|
Assert.Fail($"Unable to find file {file.path}");
|
|
continue;
|
|
}
|
|
|
|
using var fileData = matchingFile.Open();
|
|
using var reader = new StreamReader(fileData);
|
|
var fileText = reader.ReadToEnd();
|
|
|
|
Assert.That(fileText, Is.EqualTo(file.data));
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|