From 7c540532947a175c62f21e35d02a9d1155e46e4d Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Mon, 27 Mar 2023 14:47:52 -0700 Subject: [PATCH 1/3] Skip VT100 tests on Windows Server 2012R2 as console does not support it --- .../Scripting/SuppressAnsiEscapeSequence.Tests.ps1 | 12 ++++++++++++ .../Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 | 10 ++++++++++ .../engine/Formatting/OutputRendering.Tests.ps1 | 10 ++++++++-- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 b/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 index 30a82309a70..2e6d9294dca 100644 --- a/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 +++ b/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 @@ -3,12 +3,24 @@ Describe '$env:__SuppressAnsiEscapeSequences tests' -Tag CI { BeforeAll { + $originalDefaultParameterValues = $PSDefaultParameterValues.Clone() + + if ($IsWindows) { + $osInfo = [System.Environment]::OSVersion.Version + $isSrv2k12R2 = $osInfo.Major -eq 6 -and $osInfo.Minor -le 3 + + if ($isSrv2k12R2) { + $PSDefaultParameterValues["it:skip"] = $true + } + } + $originalSuppressPref = $env:__SuppressAnsiEscapeSequences $originalRendering = $PSStyle.OutputRendering $PSStyle.OutputRendering = 'Ansi' } AfterAll { + $global:PSDefaultParameterValues = $originalDefaultParameterValues $env:__SuppressAnsiEscapeSequences = $originalSuppressPref $PSStyle.OutputRendering = $originalRendering } diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 index 1d89bf6c1fa..393c4c2fb84 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 @@ -119,6 +119,16 @@ Describe 'Get-Error tests' -Tag CI { } It 'Get-Error uses Error color for Message and PositionMessage members' { + + if ($IsWindows) { + $osInfo = [System.Environment]::OSVersion.Version + $isSrv2k12R2 = $osInfo.Major -eq 6 -and $osInfo.Minor -le 3 + + if ($isSrv2k12R2) { + Set-ItResult -Skipped -Because 'Windows Server 2012 R2 does not support VT100 escape sequences' + } + } + $suppressVT = $false if (Test-Path env:/__SuppressAnsiEscapeSequences) { $suppressVT = $true diff --git a/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 b/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 index 18adcf6a8d8..56c33592812 100644 --- a/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 +++ b/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 @@ -5,8 +5,14 @@ Describe 'OutputRendering tests' -Tag 'CI' { BeforeAll { $originalDefaultParameterValues = $PSDefaultParameterValues.Clone() # Console host does not support VT100 escape sequences on Windows 2012R2 or earlier - if ($IsWindows -and [System.Environment]::OSVersion.Version -le [version]::new(6, 3)) { - $PSDefaultParameterValues["it:skip"] = $true + + if ($IsWindows) { + $osInfo = [System.Environment]::OSVersion.Version + $isSrv2k12R2 = $osInfo.Major -eq 6 -and $osInfo.Minor -le 3 + + if ($isSrv2k12R2) { + $PSDefaultParameterValues["it:skip"] = $true + } } } From 79dd5a7d290498531b6948de3522ef67dbd3c795 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Mon, 27 Mar 2023 15:00:13 -0700 Subject: [PATCH 2/3] Use host to determine vt100 support --- .../Scripting/SuppressAnsiEscapeSequence.Tests.ps1 | 9 ++------- .../Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 | 9 ++------- .../engine/Formatting/OutputRendering.Tests.ps1 | 9 ++------- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 b/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 index 2e6d9294dca..c1440857b45 100644 --- a/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 +++ b/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 @@ -5,13 +5,8 @@ Describe '$env:__SuppressAnsiEscapeSequences tests' -Tag CI { BeforeAll { $originalDefaultParameterValues = $PSDefaultParameterValues.Clone() - if ($IsWindows) { - $osInfo = [System.Environment]::OSVersion.Version - $isSrv2k12R2 = $osInfo.Major -eq 6 -and $osInfo.Minor -le 3 - - if ($isSrv2k12R2) { - $PSDefaultParameterValues["it:skip"] = $true - } + if (-not $host.ui.SupportsVirtualTerminal) { + $PSDefaultParameterValues["it:skip"] = $true } $originalSuppressPref = $env:__SuppressAnsiEscapeSequences diff --git a/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 index 393c4c2fb84..4f86ee561cb 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Utility/Get-Error.Tests.ps1 @@ -120,13 +120,8 @@ Describe 'Get-Error tests' -Tag CI { It 'Get-Error uses Error color for Message and PositionMessage members' { - if ($IsWindows) { - $osInfo = [System.Environment]::OSVersion.Version - $isSrv2k12R2 = $osInfo.Major -eq 6 -and $osInfo.Minor -le 3 - - if ($isSrv2k12R2) { - Set-ItResult -Skipped -Because 'Windows Server 2012 R2 does not support VT100 escape sequences' - } + if (-not $host.ui.SupportsVirtualTerminal) { + Set-ItResult -Skipped -Because 'Windows Server 2012 R2 does not support VT100 escape sequences' } $suppressVT = $false diff --git a/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 b/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 index 56c33592812..52aef0151af 100644 --- a/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 +++ b/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 @@ -6,13 +6,8 @@ Describe 'OutputRendering tests' -Tag 'CI' { $originalDefaultParameterValues = $PSDefaultParameterValues.Clone() # Console host does not support VT100 escape sequences on Windows 2012R2 or earlier - if ($IsWindows) { - $osInfo = [System.Environment]::OSVersion.Version - $isSrv2k12R2 = $osInfo.Major -eq 6 -and $osInfo.Minor -le 3 - - if ($isSrv2k12R2) { - $PSDefaultParameterValues["it:skip"] = $true - } + if (-not $host.ui.SupportsVirtualTerminal) { + $PSDefaultParameterValues["it:skip"] = $true } } From d8f0d26e19db7a258cc05250d6c5add8a50dba9b Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Mon, 27 Mar 2023 15:16:50 -0700 Subject: [PATCH 3/3] CR feedback --- .../Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 | 2 +- test/powershell/engine/Formatting/OutputRendering.Tests.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 b/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 index c1440857b45..0530aea93ee 100644 --- a/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 +++ b/test/powershell/Language/Scripting/SuppressAnsiEscapeSequence.Tests.ps1 @@ -6,7 +6,7 @@ Describe '$env:__SuppressAnsiEscapeSequences tests' -Tag CI { $originalDefaultParameterValues = $PSDefaultParameterValues.Clone() if (-not $host.ui.SupportsVirtualTerminal) { - $PSDefaultParameterValues["it:skip"] = $true + $global:PSDefaultParameterValues["it:skip"] = $true } $originalSuppressPref = $env:__SuppressAnsiEscapeSequences diff --git a/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 b/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 index 52aef0151af..dda4bdbd1eb 100644 --- a/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 +++ b/test/powershell/engine/Formatting/OutputRendering.Tests.ps1 @@ -7,7 +7,7 @@ Describe 'OutputRendering tests' -Tag 'CI' { # Console host does not support VT100 escape sequences on Windows 2012R2 or earlier if (-not $host.ui.SupportsVirtualTerminal) { - $PSDefaultParameterValues["it:skip"] = $true + $global:PSDefaultParameterValues["it:skip"] = $true } }