mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Add command line options to ExampleRunner and improve demo keystrokes
- Added --fake-driver/-f option to force FakeDriver via ConfigurationManager - Added --timeout/-t option to configure timeout in milliseconds - ExampleRunner no longer injects additional keys (relies on example mode) - Updated RunnableWrapperExample with longer delays (200ms) for better reliability - Examples remain clean with only metadata and Create(example: true) Note: RunnableWrapperExample intentionally doesn't quit on Esc key (tests timeout handling) Tests need additional work to properly coordinate key injection with example mode. Co-authored-by: tig <585482+tig@users.noreply.github.com>
This commit is contained in:
@@ -2,11 +2,35 @@
|
||||
// Example Runner - Demonstrates discovering and running all examples using the example infrastructure
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Terminal.Gui.Configuration;
|
||||
using Terminal.Gui.Examples;
|
||||
|
||||
[assembly: ExampleMetadata ("Example Runner", "Discovers and runs all examples sequentially")]
|
||||
[assembly: ExampleCategory ("Infrastructure")]
|
||||
|
||||
// Parse command line arguments
|
||||
bool useFakeDriver = args.Contains ("--fake-driver") || args.Contains ("-f");
|
||||
int timeout = 5000; // Default timeout in milliseconds
|
||||
|
||||
for (var i = 0; i < args.Length; i++)
|
||||
{
|
||||
if ((args [i] == "--timeout" || args [i] == "-t") && i + 1 < args.Length)
|
||||
{
|
||||
if (int.TryParse (args [i + 1], out int parsedTimeout))
|
||||
{
|
||||
timeout = parsedTimeout;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Configure ForceDriver via ConfigurationManager if requested
|
||||
if (useFakeDriver)
|
||||
{
|
||||
Console.WriteLine ("Using FakeDriver (forced via ConfigurationManager)\n");
|
||||
ConfigurationManager.RuntimeConfig = """{ "ForceDriver": "FakeDriver" }""";
|
||||
ConfigurationManager.Enable (ConfigLocations.All);
|
||||
}
|
||||
|
||||
// Discover examples from the Examples directory
|
||||
string? assemblyDir = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ().Location);
|
||||
|
||||
@@ -63,12 +87,13 @@ foreach (ExampleInfo example in examples)
|
||||
Console.Write ($"Running: {example.Name,-40} ");
|
||||
|
||||
// Create context for running the example
|
||||
// Note: When running with example mode, the demo keys from attributes will be used
|
||||
// We don't need to inject additional keys via the context
|
||||
ExampleContext context = new ()
|
||||
{
|
||||
KeysToInject = example.DemoKeyStrokes.OrderBy (ks => ks.Order)
|
||||
.SelectMany (ks => ks.KeyStrokes)
|
||||
.ToList (),
|
||||
TimeoutMs = 5000,
|
||||
DriverName = useFakeDriver ? "FakeDriver" : null,
|
||||
KeysToInject = [], // Empty - let example mode handle keys from attributes
|
||||
TimeoutMs = timeout,
|
||||
Mode = ExecutionMode.InProcess
|
||||
};
|
||||
|
||||
@@ -101,4 +126,9 @@ foreach (ExampleInfo example in examples)
|
||||
|
||||
Console.WriteLine ($"\n=== Summary: {successCount} passed, {failCount} failed ===");
|
||||
|
||||
if (useFakeDriver)
|
||||
{
|
||||
Console.WriteLine ("\nNote: Tests run with FakeDriver. Some examples may timeout if they don't respond to Esc key.");
|
||||
}
|
||||
|
||||
return failCount == 0 ? 0 : 1;
|
||||
|
||||
Reference in New Issue
Block a user