Stop at 256 levels of directory depth in filesystem unit tests contents builder to prevent a stack overflow.

This commit is contained in:
2022-12-07 20:44:14 +00:00
parent 417a1a83d7
commit dfa9a62183

View File

@@ -239,7 +239,7 @@ public abstract class ReadOnlyFilesystemTest : FilesystemTest
fs?.Mount(image, partition, test.Encoding, null, test.Namespace);
Dictionary<string, FileData> contents = BuildDirectory(fs, "/");
Dictionary<string, FileData> contents = BuildDirectory(fs, "/", 0);
var serializerOptions = new JsonSerializerOptions
{
@@ -259,8 +259,10 @@ public abstract class ReadOnlyFilesystemTest : FilesystemTest
}
}
internal static Dictionary<string, FileData> BuildDirectory(IReadOnlyFilesystem fs, string path)
static Dictionary<string, FileData> BuildDirectory(IReadOnlyFilesystem fs, string path, int currentDepth)
{
currentDepth++;
if(path == "/")
path = "";
@@ -281,7 +283,11 @@ public abstract class ReadOnlyFilesystemTest : FilesystemTest
};
if(stat.Attributes.HasFlag(FileAttributes.Directory))
data.Children = BuildDirectory(fs, childPath);
{
// Cannot serialize to JSON too many depth levels 🤷‍♀️
if(currentDepth < 384)
data.Children = BuildDirectory(fs, childPath, currentDepth);
}
else if(stat.Attributes.HasFlag(FileAttributes.Symlink))
{
if(fs.ReadLink(childPath, out string link) == ErrorNumber.NoError)