mirror of
https://github.com/aphrody-labs/PowerShell.git
synced 2026-10-18 05:05:36 +00:00
•Sets -NoTypeInformation as the default behavior for Export-Csv and ConvertTo-Csv •Hides the -NoTypeInformation parameter switch •Adds -IncludeTypeInformation switch to Export-Csv and ConvertTo-Csv to enable legacy behavior •Provides a terminating error when both -NoTypeInformation and -IncludeTypeInformation are supplied •adds tests for the new behavior •fixes existing tests to align with new behavior The new behavior will need to be documented.
97 lines
3.9 KiB
PowerShell
97 lines
3.9 KiB
PowerShell
Describe "ConvertTo-Csv DRT Unit Tests" -Tags "CI" {
|
|
$inputObject = [pscustomobject]@{ First = 1; Second = 2 }
|
|
|
|
It "Test convertto-csv with psobject pipelined" {
|
|
$returnObject = $inputObject | ConvertTo-Csv -IncludeTypeInformation
|
|
$returnObject.Count | Should Be 3
|
|
$returnObject[0] | Should Be "#TYPE System.Management.Automation.PSCustomObject"
|
|
$returnObject[1] | Should Be "`"First`",`"Second`""
|
|
$returnObject[2] | Should Be "`"1`",`"2`""
|
|
}
|
|
|
|
It "Test convertto-csv with NoTypeInformation and psobject pipelined" {
|
|
$returnObject = $inputObject | ConvertTo-Csv -NoTypeInformation
|
|
$returnObject.Count | Should Be 2
|
|
$returnObject[0] | Should Be "`"First`",`"Second`""
|
|
$returnObject[1] | Should Be "`"1`",`"2`""
|
|
}
|
|
|
|
It "Test convertto-csv with a useculture flag" {
|
|
#The default value is ','
|
|
$returnObject = $inputObject | ConvertTo-Csv -UseCulture -IncludeTypeInformation
|
|
$returnObject.Count | Should Be 3
|
|
$returnObject[0] | Should Be "#TYPE System.Management.Automation.PSCustomObject"
|
|
$returnObject[1] | Should Be "`"First`",`"Second`""
|
|
$returnObject[2] | Should Be "`"1`",`"2`""
|
|
}
|
|
|
|
It "Test convertto-csv with Delimiter" {
|
|
#The default value is ','
|
|
$returnObject = $inputObject | ConvertTo-Csv -Delimiter ";" -IncludeTypeInformation
|
|
$returnObject.Count | Should Be 3
|
|
$returnObject[0] | Should Be "#TYPE System.Management.Automation.PSCustomObject"
|
|
$returnObject[1] | Should Be "`"First`";`"Second`""
|
|
$returnObject[2] | Should Be "`"1`";`"2`""
|
|
}
|
|
}
|
|
|
|
Describe "ConvertTo-Csv" -Tags "CI" {
|
|
$Name = "Hello"; $Data = "World";
|
|
$testObject = New-Object psobject -Property @{ FirstColumn = $Name; SecondColumn = $Data }
|
|
|
|
|
|
It "Should Be able to be called without error" {
|
|
{ $testObject | ConvertTo-Csv } | Should Not Throw
|
|
}
|
|
|
|
It "Should output an array of objects" {
|
|
$result = $testObject | ConvertTo-Csv
|
|
,$result | Should BeOfType "System.Array"
|
|
}
|
|
|
|
It "Should return the type of data in the first element of the output array" {
|
|
$result = $testObject | ConvertTo-Csv -IncludeTypeInformation
|
|
|
|
$result[0] | Should Be "#TYPE System.Management.Automation.PSCustomObject"
|
|
}
|
|
|
|
It "Should return the column info in the second element of the output array" {
|
|
$result = $testObject | ConvertTo-Csv -IncludeTypeInformation
|
|
|
|
$result[1] | Should Match "`"FirstColumn`""
|
|
$result[1] | Should Match "`"SecondColumn`""
|
|
}
|
|
|
|
It "Should return the data as a comma-separated list in the third element of the output array" {
|
|
$result = $testObject | ConvertTo-Csv -IncludeTypeInformation
|
|
$result[2] | Should Match "`"Hello`""
|
|
$result[2] | Should Match "`"World`""
|
|
}
|
|
|
|
It "Includes type information when -IncludeTypeInformation is supplied" {
|
|
$result = $testObject | ConvertTo-Csv -IncludeTypeInformation
|
|
|
|
($result -split ([Environment]::NewLine))[0] | Should BeExactly "#TYPE System.Management.Automation.PSCustomObject"
|
|
}
|
|
|
|
It "Does not include type information by default" {
|
|
$result = $testObject | ConvertTo-Csv
|
|
|
|
$result | Should Not Match ([regex]::Escape('System.Management.Automation.PSCustomObject'))
|
|
$result | Should Not Match ([regex]::Escape('#TYPE'))
|
|
}
|
|
|
|
It "Does not include type information with -NoTypeInformation" {
|
|
$result = $testObject | ConvertTo-Csv -NoTypeInformation
|
|
|
|
$result | Should Not Match ([regex]::Escape('System.Management.Automation.PSCustomObject'))
|
|
$result | Should Not Match ([regex]::Escape('#TYPE'))
|
|
}
|
|
|
|
It "Does not support -IncludeTypeInformation and -NoTypeInformation at the same time" {
|
|
{ $testObject | ConvertTo-Csv -IncludeTypeInformation -NoTypeInformation } |
|
|
ShouldBeErrorId "CannotSpecifyIncludeTypeInformationAndNoTypeInformation,Microsoft.PowerShell.Commands.ConvertToCsvCommand"
|
|
}
|
|
|
|
}
|