diff --git a/test/powershell/Update-TypeData.Tests.ps1 b/test/powershell/Update-TypeData.Tests.ps1
index f243b76d2..a4c1c391f 100644
--- a/test/powershell/Update-TypeData.Tests.ps1
+++ b/test/powershell/Update-TypeData.Tests.ps1
@@ -9,12 +9,11 @@ Describe "Update-TypeData" {
}
Describe "Update-TypeData basic functionality" -Tags DRT{
- $testfilename = "testfile.ps1xml"
- $testfile = Join-Path -Path $TestDrive -ChildPath $testfilename
- $invalidFileExtensionFile = Join-Path -Path $TestDrive -ChildPath "notmshxml"
-
- #Pester bug:https://github.com/PowerShell/psl-pester/issues/6
- It "Update-TypeData with Invalid TypesXml should throw Exception" -Pending{
+ BeforeAll {
+ $testfilename = "testfile.ps1xml"
+ $testfile = Join-Path -Path $TestDrive -ChildPath $testfilename
+ $invalidFileExtensionFile = Join-Path -Path $TestDrive -ChildPath "notmshxml"
+
$xmlContent=@"
@@ -41,245 +40,242 @@ Describe "Update-TypeData basic functionality" -Tags DRT{
"@
$xmlContent>$testfile
- try
- {
- Update-TypeData -PrependPath $testfile -EA Stop
- Throw "Execution OK"
- }
- catch
- {
- $error[0] | Should Match "Error: The node MembersTypo2 is not allowed."
- $_.CategoryInfo | Should Match "RuntimeException"
- $_.FullyQualifiedErrorId | Should be "TypesXmlUpdateException,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
- }
- finally
- {
- Remove-TypeData -Path $testfile
- Remove-Item $testfile -ErrorAction Ignore
- }
- }
+ }
+
+ BeforeEach {
+ $ps = [powershell]::Create()
+ $iss = [system.management.automation.runspaces.initialsessionstate]::CreateDefault2()
+ $rs = [system.management.automation.runspaces.runspacefactory]::CreateRunspace($iss)
+ $rs.Open()
+ $ps.Runspace = $rs
+ }
+
+ AfterEach {
+ $rs.Close()
+ $ps.Dispose()
+ }
+ #Pester bug:https://github.com/PowerShell/psl-pester/issues/6
+ It "Update-TypeData with Invalid TypesXml should throw Exception" {
+
+ $null = $ps.AddScript("Update-TypeData -PrependPath $testfile")
+ $ps.Invoke()
+ $ps.HadErrors | Should be $true
+ $ps.Streams.Error[0].FullyQualifiedErrorID | Should be "TypesXmlUpdateException,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
+ }
+
It "Update-TypeData with Invalid File Extension should throw Exception"{
$xmlContent="not really an xml file, but we will not use it"
$xmlContent>$invalidFileExtensionFile
- try
- {
- Update-TypeData -PrependPath $invalidFileExtensionFile -EA Stop
- Throw "Execution OK"
- }
- catch
- {
- $error[0] | Should Match "because it does not have the file name extension"
- $_.CategoryInfo | Should Match "PSInvalidOperationException"
- $_.FullyQualifiedErrorId | Should be "WrongExtension,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
- }
- finally
- {
- Remove-Item $invalidFileExtensionFile -ErrorAction SilentlyContinue
- }
+ $null = $ps.AddScript("Update-TypeData -PrependPath $invalidFileExtensionFile")
+ $ps.Invoke()
+ $ps.HadErrors | Should be $true
+ $ps.Streams.Error[0].FullyQualifiedErrorId | Should be "WrongExtension,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
}
It "Update-TypeData with Valid Dynamic Type NoteProperty with Force should work"{
- try
- {
- Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value 2 -TypeName System.String
- "string".TestNote | Should Be 2
- Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value "test" -TypeName System.String -Force
- "string".TestNote | Should Be "test"
- Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value $null -TypeName System.String -Force
- "string".TestNote | Should BeNullOrEmpty
- }
- finally
- {
- Remove-TypeData System.String
- }
+ $null = $ps.AddScript("Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value 2 -TypeName System.String")
+ $ps.Invoke()
+ $ps.Commands.Clear()
+ $null = $ps.AddScript("'string'.TestNote")
+ $ps.Invoke() | should be 2
+ $ps.Commands.Clear()
+ $null = $ps.AddScript("Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value 'test' -TypeName System.String -Force")
+ $ps.Invoke()
+ $ps.commands.clear()
+ $null = $ps.AddScript("'string'.TestNote")
+ $ps.Invoke()| Should Be "test"
+ $ps.commands.clear()
+ $null = $ps.AddScript('Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value $null -TypeName System.String -Force')
+ $ps.Invoke()
+ $ps.Commands.Clear()
+ $null = $ps.AddScript("'string'.TestNote")
+ $ps.Invoke()| Should BeNullOrEmpty
}
- It "Update-TypeData with Valid Dynamic Type AliasProperty with Force should work"{
- try
- {
- Update-TypeData -MemberType AliasProperty -MemberName TestAlias -Value "Length" -TypeName System.String
- "string".TestAlias.GetType().Name | Should Be "Int32"
- "string".TestAlias | Should Be 6
- Update-TypeData -MemberType AliasProperty -MemberName TestAlias -Value "Length" -SecondValue "string" -TypeName System.String -Force
- "string".TestAlias.GetType().Name | Should Be "String"
- "string".TestAlias | Should Be 6
- }
- finally
- {
- Remove-TypeData System.String
- }
- }
+ It "Update-TypeData with Valid Dynamic Type AliasProperty with Force should work"{
+ # setup
+ $null = $ps.AddScript("Update-TypeData -MemberType AliasProperty -MemberName TestAlias -Value Length -TypeName System.String")
+ $ps.Invoke()
+ $ps.Commands.Clear()
+ $null = $ps.AddScript("'string'.TestAlias.GetType().Name")
+ $ps.Invoke()| Should Be "Int32"
+
+ # test
+ $ps.Commands.Clear()
+ $null = $ps.AddScript("'string'.TestAlias")
+ $ps.Invoke()| Should Be 6
+
+ # setup
+ $ps.Commands.Clear()
+ $null = $ps.AddScript("Update-TypeData -MemberType AliasProperty -MemberName TestAlias -Value 'Length' -SecondValue 'string' -TypeName System.String -Force")
+ $ps.Invoke()
+
+ # test
+ $ps.Commands.Clear()
+ $null = $ps.AddScript("'string'.TestAlias.GetType().Name")
+ $ps.Invoke()| Should Be "String"
+
+ # test
+ $ps.Commands.Clear()
+ $null = $ps.AddScript("'string'.TestAlias")
+ $ps.Invoke()| Should Be 6
+ }
It "Update-TypeData with Valid Dynamic Type ScriptMethod with Force should work"{
- try
- {
- $script1={"script method"}
- Update-TypeData -MemberType ScriptMethod -MemberName TestScriptMethod -Value $script1 -TypeName System.String
- "string".TestScriptMethod() | Should Be "script method"
- $script2={"new script method"}
- Update-TypeData -MemberType ScriptMethod -MemberName TestScriptMethod -Value $script2 -TypeName System.String -Force
- "string".TestScriptMethod() | Should Be "new script method"
- }
- finally
- {
- Remove-TypeData System.String
- }
+ $script1="script method"
+ $null = $ps.AddScript("Update-TypeData -MemberType ScriptMethod -MemberName TestScriptMethod -Value {'$script1'} -TypeName System.String")
+ $ps.Invoke()
+
+ $ps.Commands.Clear()
+ $null = $ps.AddScript('"string".TestScriptMethod()')
+ $ps.Invoke()| Should Be "script method"
+ $ps.Commands.Clear()
+ $script2="new script method"
+ $null = $ps.AddScript("Update-TypeData -MemberType ScriptMethod -MemberName TestScriptMethod -Value {'$script2'} -TypeName System.String -Force")
+ $ps.Invoke()
+
+ $ps.Commands.Clear()
+ $null = $ps.AddScript('"string".TestScriptMethod()')
+ $ps.Invoke() | Should Be "new script method"
}
It "Update-TypeData with Valid Dynamic Type Accept TypeData Object should work"{
- Add-Type -TypeDefinition "public class TypeDataTest{}"
- Update-TypeData -TypeName TypeDataTest -MemberType NoteProperty -MemberName TestNote1 -Value "Hello"
- Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value 2 -TypeName TypeDataTest
- $result=new-object TypeDataTest
- $result.TestNote1 | Should Be "Hello"
- $result.TestNote | Should Be 2
+ $ps.Commands.AddScript('Add-Type -TypeDefinition "public class TypeDataTest{}"')
+ $ps.Commands.AddStatement()
+ $ps.Commands.AddScript('Update-TypeData -TypeName TypeDataTest -MemberType NoteProperty -MemberName TestNote1 -Value "Hello"')
+ $ps.Commands.AddStatement()
+ $ps.Commands.AddScript('Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value 2 -TypeName TypeDataTest')
+ $ps.Commands.AddStatement()
+ $ps.Commands.AddScript('$result=new-object TypeDataTest')
+ $ps.Invoke()
+
+ # tests
+ $ps.Commands.Clear()
+ $ps.AddScript('$result.TestNote1').Invoke() | Should Be "Hello"
+ $ps.Commands.Clear()
+ $ps.AddScript('$result.TestNote').Invoke() | Should Be 2
}
It "Update-TypeData with Invalid DynamicType Null Value For AliasProperty should throw Exception"{
- try
- {
- Update-TypeData -MemberType AliasProperty -MemberName TestAlias -Value $null -TypeName System.String -EA Stop
- Throw "Execution OK"
- }
- catch
- {
- $error[0] | Should Match 'The Value parameter should not be null or an empty string for a member of type "AliasProperty". Specify a non-null value for the Value parameter when updating this member type.'
- $_.CategoryInfo | Should Match "InvalidOperationException"
- $_.FullyQualifiedErrorId | Should be "ValueShouldBeSpecified,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
- }
+ $null = $ps.AddScript('Update-TypeData -MemberType AliasProperty -MemberName TestAlias -Value $null -TypeName System.String')
+ $ps.Invoke()
+ $ps.HadErrors |Should be $true
+ $ps.Streams.Error[0].FullyQualifiedErrorId | Should be "ValueShouldBeSpecified,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
}
+
It "Update-TypeData with Invalid DynamicType with No MemberName should throw Exception"{
- try
- {
- Update-TypeData -MemberType NoteProperty -Value "Error" -TypeName System.String -EA Stop
- Throw "Execution OK"
- }
- catch
- {
- $error[0] | Should Match 'The MemberName parameter is required for the type "NoteProperty". Please specify the MemberName parameter.'
- $_.CategoryInfo | Should Match "InvalidOperationException"
- $_.FullyQualifiedErrorId | Should be "MemberNameShouldBeSpecified,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
- }
+ $null = $ps.AddScript('Update-TypeData -MemberType NoteProperty -Value "Error" -TypeName System.String')
+ $ps.Invoke()
+ $ps.HadErrors |Should be $true
+ $ps.Streams.Error[0].FullyQualifiedErrorId | Should be "MemberNameShouldBeSpecified,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
}
It "Update-TypeData with Invalid DynamicType with No Value should throw Exception"{
- try
- {
- Update-TypeData -MemberType NoteProperty -MemberName TestNote -TypeName System.String -EA Stop
- Throw "Execution OK"
- }
- catch
- {
- $error[0] | Should Match 'The Value parameter is required for the type "NoteProperty". Please specify the Value parameter.'
- $_.CategoryInfo | Should Match "InvalidOperationException"
- $_.FullyQualifiedErrorId | Should be "ValueShouldBeSpecified,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
- }
+ $null = $ps.AddScript('Update-TypeData -MemberType NoteProperty -MemberName TestNote -TypeName System.String')
+ $ps.Invoke()
+ $ps.HadErrors |Should be $true
+ $ps.Streams.Error[0].FullyQualifiedErrorId | Should be "ValueShouldBeSpecified,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
}
It "Update-TypeData with Invalid DynamicType with Empty TypeData should throw Exception"{
- try
- {
- Update-TypeData -TypeName System.String -EA Stop
- Throw "Execution OK"
- }
- catch
- {
- $error[0] | Should Match 'No member is specified for the update on type "System.String".'
- $_.CategoryInfo | Should Match "InvalidOperationException"
- $_.FullyQualifiedErrorId | Should be "TypeDataEmpty,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
- }
+ $null = $ps.AddScript("Update-TypeData -TypeName System.String")
+ $ps.Invoke()
+ $ps.HadErrors |Should be $true
+ $ps.Streams.Error[0].FullyQualifiedErrorId | Should be "TypeDataEmpty,Microsoft.PowerShell.Commands.UpdateTypeDataCommand"
}
It "Update-TypeData with Valid Standard Members Serialization Method String should work"{
- try{
- Update-TypeData -SerializationMethod string -StringSerializationSource Length -TargetTypeForDeserialization string -TypeName System.String
- "string".PSStandardMembers.SerializationMethod | Should Be "String"
- "string".PSStandardMembers.StringSerializationSource | Should Be 6
- "string".PSStandardMembers.TargetTypeForDeserialization | Should Be "string"
- }
- finally
- {
- Remove-TypeData System.String
- }
+ $null = $ps.AddScript('Update-TypeData -SerializationMethod string -StringSerializationSource Length -TargetTypeForDeserialization string -TypeName System.String')
+ $ps.Invoke()
+ $ps.Commands.Clear(); $null = $ps.AddScript('"string".PSStandardMembers.SerializationMethod')
+ $ps.Invoke()| Should Be "String"
+ $ps.Commands.Clear(); $null = $ps.AddScript('"string".PSStandardMembers.StringSerializationSource')
+ $ps.Invoke()| Should Be 6
+ $ps.Commands.Clear(); $null = $ps.AddScript('"string".PSStandardMembers.TargetTypeForDeserialization')
+ $ps.Invoke()| Should Be "string"
}
It "Update-TypeData with Valid Standard Members Serialization Method SpecificProperties should work"{
- try{
- Update-TypeData -SerializationMethod SpecificProperties -StringSerializationSource Length -PropertySerializationSet Length -InheritPropertySerializationSet $true -SerializationDepth 2 -TypeName System.String
- "string".PSStandardMembers.SerializationMethod | Should Be "SpecificProperties"
- "string".PSStandardMembers.StringSerializationSource | Should Be 6
- "string".PSStandardMembers.SerializationDepth | Should Be 2
- "string".PSStandardMembers.InheritPropertySerializationSet | Should Be "True"
- }
- finally
- {
- Remove-TypeData System.String
- }
- }
-
+ $null = $ps.AddScript('Update-TypeData -SerializationMethod SpecificProperties -StringSerializationSource Length -PropertySerializationSet Length -InheritPropertySerializationSet $true -SerializationDepth 2 -TypeName System.String')
+ $ps.Invoke()
+ $ps.Commands.Clear();$null=$ps.AddScript('"string".PSStandardMembers.SerializationMethod')
+ $ps.Invoke() | Should Be "SpecificProperties"
+ $ps.Commands.Clear();$null=$ps.AddScript('"string".PSStandardMembers.StringSerializationSource')
+ $ps.Invoke() | Should Be 6
+ $ps.Commands.Clear();$null=$ps.AddScript('"string".PSStandardMembers.SerializationDepth')
+ $ps.Invoke() | Should Be 2
+ $ps.Commands.Clear();$null=$ps.AddScript('"string".PSStandardMembers.InheritPropertySerializationSet')
+ $ps.Invoke() | Should Be "True"
+ }
+
It "Update-TypeData with Valid Standard Members Serialization Method AllPublicProperties should work"{
- try{
- Update-TypeData -SerializationMethod AllPublicProperties -StringSerializationSource Length -SerializationDepth 2 -TypeName System.String
- "string".PSStandardMembers.SerializationMethod | Should Be "AllPublicProperties"
- "string".PSStandardMembers.StringSerializationSource | Should Be 6
- "string".PSStandardMembers.SerializationDepth | Should Be 2
- }
- finally
- {
- Remove-TypeData System.String
- }
- }
+ $null = $ps.AddScript('Update-TypeData -SerializationMethod AllPublicProperties -StringSerializationSource Length -SerializationDepth 2 -TypeName System.String')
+ $ps.Invoke()
+ $ps.Commands.Clear();$ps.AddScript('"string".PSStandardMembers.SerializationMethod')
+ $ps.Invoke()| Should Be "AllPublicProperties"
+ $ps.Commands.Clear();$ps.AddScript('"string".PSStandardMembers.StringSerializationSource')
+ $ps.Invoke()| Should Be 6
+ $ps.Commands.Clear();$ps.AddScript('"string".PSStandardMembers.SerializationDepth')
+ $ps.Invoke()| Should Be 2
+ }
- It "Update-TypeData with Valid ISS UpdateType Command Test With DynamicType Set should work"{
- try{
- Update-TypeData -MemberType NoteProperty -MemberName "TestNote" -Value "test the note" -SerializationMethod SpecificProperties -SerializationDepth 5 -PropertySerializationSet Length -DefaultDisplayPropertySet Length -TypeName System.String
- "string".TestNote | Should Be "test the note"
- "string".PSStandardMembers.SerializationMethod | Should Be "SpecificProperties"
- "string".PSStandardMembers.SerializationDepth | Should Be 5
- "string".PSStandardMembers.PropertySerializationSet.ReferencedPropertyNames[0] | Should Be "Length"
- "string".PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames[0] | Should Be "Length"
-
- Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value "test the note again" -TargetTypeForDeserialization string -Force -TypeName System.String
- "string".TestNote | Should Be "test the note again"
- "string".PSStandardMembers.SerializationMethod | Should Be "SpecificProperties"
- "string".PSStandardMembers.SerializationDepth | Should Be 5
- "string".PSStandardMembers.PropertySerializationSet.ReferencedPropertyNames[0] | Should Be "Length"
- "string".PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames[0] | Should Be "Length"
- "string".PSStandardMembers.TargetTypeForDeserialization | Should Be "string"
- }
- finally
- {
- Remove-TypeData System.String
- }
- }
+ It "Update-TypeData with Valid ISS UpdateType Command Test With DynamicType Set should work"{
+ $ps.AddScript('Update-TypeData -MemberType NoteProperty -MemberName "TestNote" -Value "test the note" -SerializationMethod SpecificProperties -SerializationDepth 5 -PropertySerializationSet Length -DefaultDisplayPropertySet Length -TypeName System.String')
+ $ps.Invoke()
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".TestNote')
+ $ps.Invoke()| Should Be "test the note"
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.SerializationMethod')
+ $ps.Invoke()| Should Be "SpecificProperties"
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.SerializationDepth')
+ $ps.Invoke()| Should Be 5
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.PropertySerializationSet.ReferencedPropertyNames[0]')
+ $ps.Invoke()| Should Be "Length"
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames[0]')
+ $ps.Invoke()| Should Be "Length"
+
+ $ps.Commands.Clear();$null = $ps.AddScript('Update-TypeData -MemberType NoteProperty -MemberName TestNote -Value "test the note again" -TargetTypeForDeserialization string -Force -TypeName System.String')
+ $ps.Invoke()
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".TestNote')
+ $ps.Invoke()| Should Be "test the note again"
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.SerializationMethod')
+ $ps.Invoke()| Should Be "SpecificProperties"
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.SerializationDepth')
+ $ps.Invoke()| Should Be 5
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.PropertySerializationSet.ReferencedPropertyNames[0]')
+ $ps.Invoke()| Should Be "Length"
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames[0]')
+ $ps.Invoke()| Should Be "Length"
+ $ps.Commands.Clear();$null = $ps.AddScript('"string".PSStandardMembers.TargetTypeForDeserialization')
+ $ps.Invoke()| Should Be "string"
+ }
- It "Update-TypeData with Valid ISS UpdateType Command Test With StrongType Set should work"{
- try{
- Update-TypeData -TypeName System.Array -MemberType NoteProperty -MemberName TestNote -Value "TestNote"
- Update-TypeData -TypeName System.Array -MemberType AliasProperty -MemberName TestAlias -Value "Length"
- $script1={"script method"}
- Update-TypeData -TypeName System.Array -MemberType ScriptMethod -MemberName TestScriptMethod -Value $script1
- $script2={$this.Length}
- Update-TypeData -TypeName System.Array -MemberType ScriptProperty -MemberName TestScriptProperty -Value $script2
- Update-TypeData -TypeName System.Array -SerializationMethod AllPublicProperties -SerializationDepth 2 -StringSerializationSource Length -TargetTypeForDeserialization string
- (1, 3).TestNote | Should Be "TestNote"
- (1, 3).TestAlias | Should Be 2
- (1, 3).TestScriptMethod() | Should Be "script method"
- (1, 3).TestScriptProperty | Should Be 2
- (1, 3).PSStandardMembers.SerializationMethod | Should Be "AllPublicProperties"
- (1, 3).PSStandardMembers.SerializationDepth | Should Be 2
- (1, 3).PSStandardMembers.StringSerializationSource | Should Be 2
- (1, 3).PSStandardMembers.TargetTypeForDeserialization | Should Be "string"
- }
- finally
- {
- Remove-TypeData System.Array
- }
- }
-
- It "Update-TypeData with ISS Type Table API Test Add And Remove TypeData should work"{
+ It "Update-TypeData with Valid ISS UpdateType Command Test With StrongType Set should work"{
+ $ps.AddScript('Update-TypeData -TypeName System.Array -MemberType NoteProperty -MemberName TestNote -Value "TestNote"')
+ $ps.Commands.AddStatement()
+ $ps.AddScript('Update-TypeData -TypeName System.Array -MemberType AliasProperty -MemberName TestAlias -Value "Length"')
+ $script1="script method"
+ $ps.Commands.AddStatement()
+ $ps.AddScript("Update-TypeData -TypeName System.Array -MemberType ScriptMethod -MemberName TestScriptMethod -Value {'$script1'}")
+ $script2='$this.Length'
+ $ps.Commands.AddStatement()
+ $ps.AddScript("Update-TypeData -TypeName System.Array -MemberType ScriptProperty -MemberName TestScriptProperty -Value {$script2}")
+ $ps.Commands.AddStatement()
+ $ps.AddScript('Update-TypeData -TypeName System.Array -SerializationMethod AllPublicProperties -SerializationDepth 2 -StringSerializationSource Length -TargetTypeForDeserialization string')
+ $ps.Invoke()
+ $ps.Commands.Clear();$ps.AddScript('(1, 3).TestNote').Invoke() | Should Be "TestNote"
+ $ps.Commands.Clear();$ps.AddScript('(1, 3).TestAlias').Invoke() | Should Be 2
+ $ps.Commands.Clear();$ps.AddScript('(1, 3).TestScriptMethod()').Invoke() | Should Be "script method"
+ $ps.Commands.Clear();$ps.AddScript('(1, 3).TestScriptProperty').Invoke() | Should Be 2
+ $ps.Commands.Clear();$ps.AddScript('(1, 3).PSStandardMembers.SerializationMethod').Invoke() | Should Be "AllPublicProperties"
+ $ps.Commands.Clear();$ps.AddScript('(1, 3).PSStandardMembers.SerializationDepth').Invoke() | Should Be 2
+ $ps.Commands.Clear();$ps.AddScript('(1, 3).PSStandardMembers.StringSerializationSource').Invoke() | Should Be 2
+ $ps.Commands.Clear();$ps.AddScript('(1, 3).PSStandardMembers.TargetTypeForDeserialization').Invoke() | Should Be "string"
+ }
+
+# this looks identical to the test directly above
+ It "Update-TypeData with ISS Type Table API Test Add And Remove TypeData should work" -pending {
try{
Update-TypeData -TypeName System.Object[] -MemberType NoteProperty -MemberName TestNote -Value "TestNote"
Update-TypeData -TypeName System.Object[] -MemberType AliasProperty -MemberName TestAlias -Value "Length"
@@ -302,32 +298,33 @@ Describe "Update-TypeData basic functionality" -Tags DRT{
Remove-TypeData System.Object[]
}
}
-
- It "Update-TypeData with Duplicate XML Files should work"{
- $xmlContent=@"
-
-
- System.Array
-
-
- Yada
- Length
-
-
-
-
+
+ Context "Duplicate XML files" {
+ BeforeAll {
+ $xmlContent=@"
+
+
+ System.Array
+
+
+ Yada
+ Length
+
+
+
+
"@
- $xmlContent>$testfile
- try
- {
- Update-TypeData -AppendPath $testfile
- $a=1..3
- $a.Yada | Should Be 3
- }
- finally
- {
- Remove-TypeData -Path $testfile
- Remove-Item $testfile -ErrorAction Ignore
- }
- }
-}
\ No newline at end of file
+ $xmlContent>$testfile
+ }
+ It "Update-TypeData with Duplicate XML Files should work"{
+ $null = $ps.AddScript("Update-TypeData -AppendPath $testfile")
+ $ps.Invoke()
+ $ps.Commands.Clear()
+ $ps.AddScript('$a=1..3').Invoke()
+ $ps.Commands.Clear()
+ $ps.AddScript('$a.Yada').Invoke() | Should Be 3
+ $ps.AddScript("Remove-TypeData -Path $testfile").Invoke()
+ $ps.HadErrors|Should be $false
+ }
+ }
+}