1
0
mirror of https://github.com/nsnail/spectre.console.git synced 2025-04-25 04:32:51 +08:00

Don't erase the prompt text when backspacing on a secret prompt with a null mask.

This commit is contained in:
Daniel Weber 2024-02-12 20:44:34 +01:00 committed by Patrik Svensson
parent 72704529c5
commit bf3b91a535
3 changed files with 25 additions and 1 deletions
src/Spectre.Console/Extensions
test/Spectre.Console.Tests

@ -53,7 +53,11 @@ public static partial class AnsiConsoleExtensions
if (text.Length > 0) if (text.Length > 0)
{ {
text = text.Substring(0, text.Length - 1); text = text.Substring(0, text.Length - 1);
console.Write("\b \b");
if (mask != null)
{
console.Write("\b \b");
}
} }
continue; continue;

@ -248,6 +248,25 @@ public sealed class TextPromptTests
return Verifier.Verify(console.Output); return Verifier.Verify(console.Output);
} }
[Fact]
[Expectation("SecretValueBackspaceNullMask")]
public Task Should_Not_Erase_Prompt_Text_On_Backspace_If_Prompt_Is_Secret_And_Mask_Is_Null()
{
// Given
var console = new TestConsole();
console.Input.PushText("Bananas");
console.Input.PushKey(ConsoleKey.Backspace);
console.Input.PushKey(ConsoleKey.Enter);
// When
console.Prompt(
new TextPrompt<string>("Favorite fruit?")
.Secret(null));
// Then
return Verifier.Verify(console.Output);
}
[Fact] [Fact]
[Expectation("SecretDefaultValueCustomMask")] [Expectation("SecretDefaultValueCustomMask")]
public Task Should_Choose_Custom_Masked_Default_Value_If_Nothing_Is_Entered_And_Prompt_Is_Secret_And_Mask_Is_Custom() public Task Should_Choose_Custom_Masked_Default_Value_If_Nothing_Is_Entered_And_Prompt_Is_Secret_And_Mask_Is_Custom()