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

View File

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

View File

@ -248,6 +248,25 @@ public sealed class TextPromptTests
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]
[Expectation("SecretDefaultValueCustomMask")]
public Task Should_Choose_Custom_Masked_Default_Value_If_Nothing_Is_Entered_And_Prompt_Is_Secret_And_Mask_Is_Custom()