mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-30 04:13:40 +01:00
Plugin-registerable self tests
The goal of this change is to let plugins register their own self-tests. We do this through the `ISelfTestRegistry` interface. For a plugin it would look like this: ```csharp [PluginService] public ISelfTestRegistry SelfTestRegistry // Somewhere that gets called by your plugin SelfTestRegistry.RegisterTestSteps([ new MySelfTestStep(), new MyOtherSelfTestStep() ]) ``` Where `MySelfTest` and `MyOtherSelfTest` are instances of the existing `ISelfTestStep` interface. The biggest changes are to `SelfTestWindow` and the introduction of `SelfTestWithResults`. I wanted to make sure test state wasn't lost when changing the dropdown state and I was finding it a bit annoying to work with the Dictionary now that we can't just rely on the index of the item. To fix this I moved all the "test run" state into `SelfTestWithResults`, most of the changes to `SelfTestWindow` are derived from that, other then the addition of the combo box. The documentation for this service is a bit sparse, but I wanted to put it up for review first before I invest a bunch of time making nice documentation. I'm keen to hear if we think this is useful or if any changes are needed.
This commit is contained in:
parent
4ac4505d72
commit
ae777000e2
41 changed files with 674 additions and 133 deletions
54
Dalamud/Plugin/SelfTest/ISelfTestRegistry.cs
Normal file
54
Dalamud/Plugin/SelfTest/ISelfTestRegistry.cs
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Dalamud.Plugin.SelfTest;
|
||||
|
||||
/// <summary>
|
||||
/// Interface for registering and unregistering self-test steps from plugins.
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// Registering custom self-test steps for your plugin:
|
||||
/// <code>
|
||||
/// [PluginService]
|
||||
/// public ISelfTestRegistry SelfTestRegistry { get; init; }
|
||||
///
|
||||
/// // In your plugin initialization
|
||||
/// this.SelfTestRegistry.RegisterTestSteps([
|
||||
/// new MyCustomSelfTestStep(),
|
||||
/// new AnotherSelfTestStep()
|
||||
/// ]);
|
||||
/// </code>
|
||||
///
|
||||
/// Creating a custom self-test step:
|
||||
/// <code>
|
||||
/// public class MyCustomSelfTestStep : ISelfTestStep
|
||||
/// {
|
||||
/// public string Name => "My Custom Test";
|
||||
///
|
||||
/// public SelfTestStepResult RunStep()
|
||||
/// {
|
||||
/// // Your test logic here
|
||||
/// if (/* test condition passes */)
|
||||
/// return SelfTestStepResult.Pass;
|
||||
///
|
||||
/// if (/* test condition fails */)
|
||||
/// return SelfTestStepResult.Fail;
|
||||
///
|
||||
/// // Still waiting for test to complete
|
||||
/// return SelfTestStepResult.Waiting;
|
||||
/// }
|
||||
///
|
||||
/// public void CleanUp()
|
||||
/// {
|
||||
/// // Clean up any resources used by the test
|
||||
/// }
|
||||
/// }
|
||||
/// </code>
|
||||
/// </example>
|
||||
public interface ISelfTestRegistry
|
||||
{
|
||||
/// <summary>
|
||||
/// Registers the self-test steps for this plugin.
|
||||
/// </summary>
|
||||
/// <param name="steps">The test steps to register.</param>
|
||||
public void RegisterTestSteps(IEnumerable<ISelfTestStep> steps);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue