mirror of
https://github.com/Stone-Red-Code/YesNt-Interpreter.git
synced 2026-09-04 00:56:31 +02:00
Handle Clear gracefully in non-interactive console without crashing
This commit is contained in:
@@ -39,14 +39,16 @@ public class ConsoleStatementsTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ClearThrowsInNonInteractiveConsoleTest()
|
public void ClearDoesNotCrashInNonInteractiveConsoleTest()
|
||||||
{
|
{
|
||||||
List<string> lines =
|
List<string> lines =
|
||||||
[
|
[
|
||||||
"clear"
|
"clear",
|
||||||
|
"var dummy = 0",
|
||||||
|
"${dummy}"
|
||||||
];
|
];
|
||||||
|
|
||||||
_ = Assert.Throws<IOException>(() => YesNtAssert.GetLastLine(lines));
|
YesNtAssert.IsLastLineEqual(lines, "0");
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
using YesNt.Interpreter.Attributes;
|
using YesNt.Interpreter.Attributes;
|
||||||
using YesNt.Interpreter.Enums;
|
using YesNt.Interpreter.Enums;
|
||||||
@@ -60,7 +61,14 @@ internal class ConsoleStatements : StatementRuntimeInformation
|
|||||||
[Statement("clear", SearchMode.Exact, SpaceAround.None, ConsoleColor.Magenta)]
|
[Statement("clear", SearchMode.Exact, SpaceAround.None, ConsoleColor.Magenta)]
|
||||||
[SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Won't work if static")]
|
[SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Won't work if static")]
|
||||||
public void Clear(string _)
|
public void Clear(string _)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
Console.Clear();
|
Console.Clear();
|
||||||
}
|
}
|
||||||
|
catch (IOException)
|
||||||
|
{
|
||||||
|
// Silently fail if the console is not interactive
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user