Reject undefined numeric LogLevel values (#390)

This commit is contained in:
kadu04t
2026-07-18 09:47:19 -03:00
committed by GitHub
parent e6be48a390
commit 5309f384cf
2 changed files with 42 additions and 1 deletions
+3 -1
View File
@@ -110,7 +110,8 @@ public static class SharpEmuLog
}
var normalized = text.Trim();
if (Enum.TryParse<LogLevel>(normalized, ignoreCase: true, out level))
if (Enum.TryParse<LogLevel>(normalized, ignoreCase: true, out level) &&
Enum.IsDefined(level))
{
return true;
}
@@ -127,6 +128,7 @@ public static class SharpEmuLog
return true;
}
level = default;
return false;
}
@@ -0,0 +1,39 @@
// Copyright (C) 2026 SharpEmu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
using SharpEmu.Logging;
using Xunit;
namespace SharpEmu.Libs.Tests.Logging;
public sealed class SharpEmuLogTests
{
[Theory]
[InlineData("Trace", LogLevel.Trace)]
[InlineData("debug", LogLevel.Debug)]
[InlineData(" Info ", LogLevel.Info)]
[InlineData("WARNING", LogLevel.Warning)]
[InlineData("Error", LogLevel.Error)]
[InlineData("critical", LogLevel.Critical)]
[InlineData("None", LogLevel.None)]
[InlineData("warn", LogLevel.Warning)]
[InlineData("fatal", LogLevel.Critical)]
public void TryParseLevelAcceptsDefinedNamesAndAliases(string text, LogLevel expected)
{
Assert.True(SharpEmuLog.TryParseLevel(text, out var actual));
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
[InlineData("unknown")]
[InlineData("999")]
[InlineData("-1")]
public void TryParseLevelRejectsInvalidValues(string? text)
{
Assert.False(SharpEmuLog.TryParseLevel(text, out var level));
Assert.Equal(default, level);
}
}