diff --git a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/ShowMarkdownCommand.cs b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/ShowMarkdownCommand.cs
index bd37f41fb1..6a6839b22f 100644
--- a/src/Microsoft.PowerShell.Commands.Utility/commands/utility/ShowMarkdownCommand.cs
+++ b/src/Microsoft.PowerShell.Commands.Utility/commands/utility/ShowMarkdownCommand.cs
@@ -59,7 +59,7 @@ namespace Microsoft.PowerShell.Commands
Object inpObj = InputObject.BaseObject;
var markdownInfo = inpObj as MarkdownInfo;
- if (markdownInfo != null)
+ if (markdownInfo == null)
{
var errorRecord = new ErrorRecord(
new ArgumentException(),
@@ -83,6 +83,12 @@ namespace Microsoft.PowerShell.Commands
writer.Write(html);
}
+ if(OutputBypassTestHook)
+ {
+ WriteObject(html);
+ return;
+ }
+
ProcessStartInfo startInfo = new ProcessStartInfo();
#if UNIX
@@ -112,6 +118,12 @@ namespace Microsoft.PowerShell.Commands
if(!String.IsNullOrEmpty(vt100String))
{
+ if(OutputBypassTestHook)
+ {
+ WriteObject(vt100String);
+ return;
+ }
+
if(stepPipe != null)
{
stepPipe.Process(vt100String);
@@ -132,6 +144,7 @@ namespace Microsoft.PowerShell.Commands
}
///
+ /// Override EndProcessing.
///
protected override void EndProcessing()
{
@@ -140,5 +153,16 @@ namespace Microsoft.PowerShell.Commands
stepPipe.End();
}
}
+
+ private static bool OutputBypassTestHook = false;
+
+ ///
+ /// Test hook to enable or disable launching of browser.
+ /// When set, the converted output is returned.
+ ///
+ public static void SetOutputBypassTestHook(bool value)
+ {
+ OutputBypassTestHook = value;
+ }
}
}
diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/MarkdownCmdlets.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/MarkdownCmdlets.Tests.ps1
index 6877136b09..551eb5bf94 100644
--- a/test/powershell/Modules/Microsoft.PowerShell.Utility/MarkdownCmdlets.Tests.ps1
+++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/MarkdownCmdlets.Tests.ps1
@@ -259,20 +259,21 @@ bool function()`n{`n}
$newOptions = Get-MarkdownOption
- $options.Header1 | Should -BeExactly "$esc[4;1m[4;1m$esc[0m"
- $options.Header2 | Should -BeExactly "$esc[93m[93m$esc[0m"
- $options.Header3 | Should -BeExactly "$esc[94m[94m$esc[0m"
- $options.Header4 | Should -BeExactly "$esc[95m[95m$esc[0m"
- $options.Header5 | Should -BeExactly "$esc[96m[96m$esc[0m"
- $options.Header6 | Should -BeExactly "$esc[97m[97m$esc[0m"
+ $newOptions.Header1 | Should -BeExactly "$esc[4;1m[4;1m$esc[0m"
+ $newOptions.Header2 | Should -BeExactly "$esc[93m[93m$esc[0m"
+ $newOptions.Header3 | Should -BeExactly "$esc[94m[94m$esc[0m"
+ $newOptions.Header4 | Should -BeExactly "$esc[95m[95m$esc[0m"
+ $newOptions.Header5 | Should -BeExactly "$esc[96m[96m$esc[0m"
+ $newOptions.Header6 | Should -BeExactly "$esc[97m[97m$esc[0m"
#$options.Code | Should -BeExactly "$esc[48;2;155;155;155;38;2;30;30;30m[48;2;155;155;155;38;2;30;30;30m$esc[0m"
- $options.Link | Should -BeExactly "$esc[4;38;5;88m[4;38;5;88m$esc[0m"
- $options.Image | Should -BeExactly "$esc[34m[34m$esc[0m"
- $options.EmphasisBold | Should -BeExactly "$esc[32m[32m$esc[0m"
- $options.EmphasisItalics | Should -BeExactly "$esc[35m[35m$esc[0m"
+ $newOptions.Link | Should -BeExactly "$esc[4;38;5;88m[4;38;5;88m$esc[0m"
+ $newOptions.Image | Should -BeExactly "$esc[34m[34m$esc[0m"
+ $newOptions.EmphasisBold | Should -BeExactly "$esc[32m[32m$esc[0m"
+ $newOptions.EmphasisItalics | Should -BeExactly "$esc[35m[35m$esc[0m"
}
It "Verify defaults for light theme" {
+ Set-MarkdownOption -Theme Light
$options = Get-MarkdownOption
$options.Header1 | Should -BeExactly "$esc[7m[7m$esc[0m"
@@ -289,4 +290,31 @@ bool function()`n{`n}
}
}
+ Context "Show-Markdown tests" {
+ BeforeEach {
+ [Microsoft.PowerShell.Commands.ShowMarkdownCommand]::SetOutputBypassTestHook($true)
+ }
+
+ AfterEach {
+ [Microsoft.PowerShell.Commands.ShowMarkdownCommand]::SetOutputBypassTestHook($false)
+ }
+
+ It "can show VT100 converted from markdown" {
+ $text = "Bold"
+ $mdText = "**$text**"
+ $expectedString = GetExpectedString -ElementType 'Bold' -Text $text
+
+ $result = $mdText | ConvertFrom-Markdown -AsVT100EncodedString | Show-Markdown
+ $result | Should -BeExactly $expectedString
+ }
+
+ It "can show HTML converted from markdown" {
+ $text = "Bold"
+ $mdText = "**$text**"
+ $expectedString = GetExpectedHTML -ElementType 'Bold' -Text $text
+
+ $result = $mdText | ConvertFrom-Markdown | Show-Markdown -UseBrowser
+ $result | Should -BeExactly $expectedString
+ }
+ }
}