PowerShell7/test/powershell/Format-List.Tests.ps1
Andrew Schwartzmeyer 7e65fa448e Mark as pending Travis CI OS X failing tests
These tests *do not* fail locally, nor on the Linux test runner. They do
not fail when accessing the OS X runner under debug mode. The *only*
cause is the lack of a TTY on the OS X runner, which is a Travis CI
regression. Moreover, the formatting tests do not fail when the TTY is
removed locally.

These absolutely should be fixed at some point, but it is not worth
spending any more time on it.
2016-05-17 13:28:44 -07:00

128 lines
4.8 KiB
PowerShell

Describe "Format-List" {
$nl = [Environment]::NewLine
BeforeEach {
$in = New-Object PSObject
Add-Member -InputObject $in -MemberType NoteProperty -Name testName -Value testValue
}
It "Should call format list without error" {
{ $in | Format-List } | Should Not BeNullOrEmpty
}
It "Should be able to call the alias" {
{ $in | fl } | Should Not BeNullOrEmpty
}
It "Should have the same output whether choosing alias or not" {
$expected = $in | Format-List | Out-String
$actual = $in | fl | Out-String
$actual | Should Be $expected
}
It "Should produce the expected output" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
$expected = "${nl}${nl}testName : testValue${nl}${nl}${nl}${nl}"
$in = New-Object PSObject
Add-Member -InputObject $in -MemberType NoteProperty -Name testName -Value testValue
$in | Format-List | Should Not BeNullOrEmpty
$in | Format-List | Out-String | Should Not BeNullOrEmpty
$in | Format-List | Out-String | Should Be $expected
}
It "Should be able to call a property of the piped input" {
# Tested on two input commands to verify functionality.
{ Get-Command | Select-Object -First 5 | Format-List -Property Name } | Should Not BeNullOrEmpty
{ Get-Date | Format-List -Property DisplayName } | Should Not BeNullOrEmpty
}
It "Should be able to display a list of props when separated by a comma" {
(Get-Command | Select-Object -First 5 | Format-List -Property Name,Source | Out-String) -Split "${nl}" |
Where-Object { $_.trim() -ne "" } |
ForEach-Object { $_ | Should Match "(Name)|(Source)" }
}
It "Should show the requested prop in every element" {
# Testing each element of format-list, using a for-each loop since the Format-List is so opaque
(Get-Command | Select-Object -First 5 | Format-List -Property Source | Out-String) -Split "${nl}" |
Where-Object { $_.trim() -ne "" } |
ForEach-Object { $_ | Should Match "Source :" }
}
It "Should not show anything other than the requested props" {
$output = Get-Command | Select-Object -First 5 | Format-List -Property Name | Out-String
$output | Should Not Match "CommandType :"
$output | Should Not Match "Source :"
$output | Should Not Match "Module :"
}
It "Should be able to take input without piping objects to it" {
$output = { Format-List -InputObject $in }
$output | Should Not BeNullOrEmpty
}
}
Describe "Format-List DRT basic functionality" -Tags DRT{
It "Format-List with array should work"-Pending:($env:TRAVIS_OS_NAME -eq "osx") {
$al = (0..255)
$info = @{}
$info.array = $al
$result = $info | Format-List | Out-String
$result | Should Match "Name : array\s+Value : {0, 1, 2, 3...}"
}
It "Format-List with No Objects for End-To-End should work"{
$p = @{}
$result = $p | Format-List -Force -Property "foo","bar" | Out-String
$result.Trim() | Should BeNullOrEmpty
}
It "Format-List with Null Objects for End-To-End should work"{
$p = $null
$result = $p | Format-List -Force -Property "foo","bar" | Out-String
$result.Trim() | Should BeNullOrEmpty
}
It "Format-List with single line string for End-To-End should work"{
$p = "single line string"
$result = $p | Format-List -Force -Property "foo","bar" | Out-String
$result.Trim() | Should BeNullOrEmpty
}
It "Format-List with multiple line string for End-To-End should work"{
$p = "Line1\nLine2"
$result = $p | Format-List -Force -Property "foo","bar" | Out-String
$result.Trim() | Should BeNullOrEmpty
}
It "Format-List with string sequence for End-To-End should work"{
$p = "Line1","Line2"
$result = $p | Format-List -Force -Property "foo","bar" | Out-String
$result.Trim() | Should BeNullOrEmpty
}
It "Format-List with complex object for End-To-End should work" -Pending:($env:TRAVIS_OS_NAME -eq "osx") {
Add-Type -TypeDefinition "public enum MyDayOfWeek{Sun,Mon,Tue,Wed,Thr,Fri,Sat}"
$eto = New-Object MyDayOfWeek
$info = @{}
$info.intArray = 1,2,3,4
$info.arrayList = "string1","string2"
$info.enumerable = [MyDayOfWeek]$eto
$info.enumerableTestObject = $eto
$result = $info|Format-List|Out-String
$result | Should Match "Name : enumerableTestObject"
$result | Should Match "Value : Sun"
$result | Should Match "Name : arrayList"
$result | Should Match "Value : {string1, string2}"
$result | Should Match "Name : enumerable"
$result | Should Match "Value : Sun"
$result | Should Match "Name : intArray"
$result | Should Match "Value : {1, 2, 3, 4}"
}
}