@@ -920,20 +920,40 @@ await GetVariables(VariableContainerDetails.ScriptScopeName).ConfigureAwait(true
920
920
Assert . Empty ( rawDetailsView . Type ) ;
921
921
Assert . Empty ( rawDetailsView . ValueString ) ;
922
922
VariableDetailsBase [ ] rawViewChildren = rawDetailsView . GetChildren ( NullLogger . Instance ) ;
923
- Assert . Equal ( 7 , rawViewChildren . Length ) ;
924
- Assert . Equal ( "Length" , rawViewChildren [ 0 ] . Name ) ;
925
- Assert . Equal ( "4" , rawViewChildren [ 0 ] . ValueString ) ;
926
- Assert . Equal ( "LongLength" , rawViewChildren [ 1 ] . Name ) ;
927
- Assert . Equal ( "4" , rawViewChildren [ 1 ] . ValueString ) ;
928
- Assert . Equal ( "Rank" , rawViewChildren [ 2 ] . Name ) ;
929
- Assert . Equal ( "1" , rawViewChildren [ 2 ] . ValueString ) ;
930
- Assert . Equal ( "SyncRoot" , rawViewChildren [ 3 ] . Name ) ;
931
- Assert . Equal ( "IsReadOnly" , rawViewChildren [ 4 ] . Name ) ;
932
- Assert . Equal ( "$false" , rawViewChildren [ 4 ] . ValueString ) ;
933
- Assert . Equal ( "IsFixedSize" , rawViewChildren [ 5 ] . Name ) ;
934
- Assert . Equal ( "$true" , rawViewChildren [ 5 ] . ValueString ) ;
935
- Assert . Equal ( "IsSynchronized" , rawViewChildren [ 6 ] . Name ) ;
936
- Assert . Equal ( "$false" , rawViewChildren [ 6 ] . ValueString ) ;
923
+ Assert . Collection ( rawViewChildren ,
924
+ ( i ) =>
925
+ {
926
+ Assert . Equal ( "Length" , i . Name ) ;
927
+ Assert . Equal ( "4" , i . ValueString ) ;
928
+ } ,
929
+ ( i ) =>
930
+ {
931
+ Assert . Equal ( "LongLength" , i . Name ) ;
932
+ Assert . Equal ( "4" , i . ValueString ) ;
933
+ } ,
934
+ ( i ) =>
935
+ {
936
+ Assert . Equal ( "Rank" , i . Name ) ;
937
+ Assert . Equal ( "1" , i . ValueString ) ;
938
+ } ,
939
+ ( i ) =>
940
+ {
941
+ Assert . Equal ( "SyncRoot" , i . Name ) ;
942
+ Assert . True ( i . IsExpandable ) ;
943
+ } ,
944
+ ( i ) =>
945
+ {
946
+ Assert . Equal ( "IsReadOnly" , i . Name ) ;
947
+ Assert . Equal ( "$false" , i . ValueString ) ;
948
+ } , ( i ) =>
949
+ {
950
+ Assert . Equal ( "IsFixedSize" , i . Name ) ;
951
+ Assert . Equal ( "$true" , i . ValueString ) ;
952
+ } , ( i ) =>
953
+ {
954
+ Assert . Equal ( "IsSynchronized" , i . Name ) ;
955
+ Assert . Equal ( "$false" , i . ValueString ) ;
956
+ } ) ;
937
957
}
938
958
939
959
[ Fact ]
@@ -956,20 +976,47 @@ await GetVariables(VariableContainerDetails.ScriptScopeName).ConfigureAwait(true
956
976
Assert . NotNull ( rawDetailsView ) ;
957
977
Assert . Empty ( rawDetailsView . Type ) ;
958
978
Assert . Empty ( rawDetailsView . ValueString ) ;
959
- VariableDetailsBase [ ] rawViewChildren = rawDetailsView . GetChildren ( NullLogger . Instance ) ;
960
- Assert . Equal ( 7 , rawViewChildren . Length ) ;
961
- Assert . Equal ( "IsReadOnly" , rawViewChildren [ 0 ] . Name ) ;
962
- Assert . Equal ( "$false" , rawViewChildren [ 0 ] . ValueString ) ;
963
- Assert . Equal ( "IsFixedSize" , rawViewChildren [ 1 ] . Name ) ;
964
- Assert . Equal ( "$false" , rawViewChildren [ 1 ] . ValueString ) ;
965
- Assert . Equal ( "IsSynchronized" , rawViewChildren [ 2 ] . Name ) ;
966
- Assert . Equal ( "$false" , rawViewChildren [ 2 ] . ValueString ) ;
967
- Assert . Equal ( "Keys" , rawViewChildren [ 3 ] . Name ) ;
968
- Assert . Equal ( "Values" , rawViewChildren [ 4 ] . Name ) ;
969
- Assert . Equal ( "[ValueCollection: 4]" , rawViewChildren [ 4 ] . ValueString ) ;
970
- Assert . Equal ( "SyncRoot" , rawViewChildren [ 5 ] . Name ) ;
971
- Assert . Equal ( "Count" , rawViewChildren [ 6 ] . Name ) ;
972
- Assert . Equal ( "4" , rawViewChildren [ 6 ] . ValueString ) ;
979
+ VariableDetailsBase [ ] rawDetailsChildren = rawDetailsView . GetChildren ( NullLogger . Instance ) ;
980
+ Assert . Collection ( rawDetailsChildren ,
981
+ ( i ) =>
982
+ {
983
+ Assert . Equal ( "IsReadOnly" , i . Name ) ;
984
+ Assert . Equal ( "$false" , i . ValueString ) ;
985
+ } ,
986
+ ( i ) =>
987
+ {
988
+ Assert . Equal ( "IsFixedSize" , i . Name ) ;
989
+ Assert . Equal ( "$false" , i . ValueString ) ;
990
+ } ,
991
+ ( i ) =>
992
+ {
993
+ Assert . Equal ( "IsSynchronized" , i . Name ) ;
994
+ Assert . Equal ( "$false" , i . ValueString ) ;
995
+ } ,
996
+ ( i ) =>
997
+ {
998
+ Assert . Equal ( "Keys" , i . Name ) ;
999
+ Assert . Equal ( "[KeyCollection: 4]" , i . ValueString ) ;
1000
+ } ,
1001
+ ( i ) =>
1002
+ {
1003
+ Assert . Equal ( "Values" , i . Name ) ;
1004
+ Assert . Equal ( "[ValueCollection: 4]" , i . ValueString ) ;
1005
+ } ,
1006
+ ( i ) =>
1007
+ {
1008
+ Assert . Equal ( "SyncRoot" , i . Name ) ;
1009
+ #if CoreCLR
1010
+ Assert . Equal ( "[Hashtable: 4]" , i . ValueString ) ;
1011
+ #else
1012
+ Assert . Equal ( "[Object]" , i . ValueString ) ;
1013
+ #endif
1014
+ } ,
1015
+ ( i ) =>
1016
+ {
1017
+ Assert . Equal ( "Count" , i . Name ) ;
1018
+ Assert . Equal ( "4" , i . ValueString ) ;
1019
+ } ) ;
973
1020
}
974
1021
975
1022
[ Fact ]
@@ -996,8 +1043,28 @@ await GetVariables(VariableContainerDetails.ScriptScopeName).ConfigureAwait(true
996
1043
Assert . Empty ( rawDetailsView . Type ) ;
997
1044
Assert . Empty ( rawDetailsView . ValueString ) ;
998
1045
VariableDetailsBase [ ] rawViewChildren = rawDetailsView . GetChildren ( NullLogger . Instance ) ;
999
- Assert . Equal ( 4 , rawViewChildren . Length ) ;
1000
- Assert . NotNull ( Array . Find ( rawViewChildren , v => v . Name == "Comparer" ) ) ;
1046
+ Assert . Collection ( rawViewChildren ,
1047
+ ( i ) =>
1048
+ {
1049
+ Assert . Equal ( "Count" , i . Name ) ;
1050
+ Assert . Equal ( "4" , i . ValueString ) ;
1051
+ } ,
1052
+ ( i ) =>
1053
+ {
1054
+ Assert . Equal ( "Comparer" , i . Name ) ;
1055
+ Assert . Equal ( "[GenericComparer`1]" , i . ValueString ) ;
1056
+ } ,
1057
+ ( i ) =>
1058
+ {
1059
+ Assert . Equal ( "Keys" , i . Name ) ;
1060
+ Assert . Equal ( "[KeyCollection: 4]" , i . ValueString ) ;
1061
+ } ,
1062
+ ( i ) =>
1063
+ {
1064
+ Assert . Equal ( "Values" , i . Name ) ;
1065
+ Assert . Equal ( "[ValueCollection: 4]" , i . ValueString ) ;
1066
+ }
1067
+ ) ;
1001
1068
}
1002
1069
1003
1070
[ Fact ]
@@ -1029,8 +1096,8 @@ await debugService.SetLineBreakpointsAsync(
1029
1096
1030
1097
// Verifies fix for issue #86, $proc = Get-Process foo displays just the ETS property set
1031
1098
// and not all process properties.
1032
- [ Fact ( Skip = "Length of child vars is wrong now" ) ]
1033
- public async Task DebuggerVariableProcessObjDisplaysCorrectly ( )
1099
+ [ Fact ]
1100
+ public async Task DebuggerVariableProcessObjectDisplaysCorrectly ( )
1034
1101
{
1035
1102
await debugService . SetLineBreakpointsAsync (
1036
1103
variableScriptFile ,
@@ -1049,7 +1116,33 @@ await debugService.SetLineBreakpointsAsync(
1049
1116
Assert . True ( var . IsExpandable ) ;
1050
1117
1051
1118
VariableDetailsBase [ ] childVars = await debugService . GetVariables ( var . Id , CancellationToken . None ) . ConfigureAwait ( true ) ;
1052
- Assert . Equal ( 53 , childVars . Length ) ;
1119
+ Assert . Contains ( childVars , i => i . Name is "Name" ) ;
1120
+ Assert . Contains ( childVars , i => i . Name is "Handles" ) ;
1121
+ #if CoreCLR
1122
+ Assert . Contains ( childVars , i => i . Name is "CommandLine" ) ;
1123
+ Assert . Contains ( childVars , i => i . Name is "ExitCode" ) ;
1124
+ Assert . Contains ( childVars , i => i . Name is "HasExited" && i . ValueString is "$false" ) ;
1125
+ #endif
1126
+ Assert . Contains ( childVars , i => i . Name is "Id" ) ;
1127
+ }
1128
+
1129
+ [ Fact ]
1130
+ public async Task DebuggerVariableFileObjectDisplaysCorrectly ( )
1131
+ {
1132
+ await debugService . SetCommandBreakpointsAsync (
1133
+ new [ ] { CommandBreakpointDetails . Create ( "Write-Host" ) } ) . ConfigureAwait ( true ) ;
1134
+
1135
+ ScriptFile testScript = GetDebugScript ( "GetChildItemTest.ps1" ) ;
1136
+ Task _ = ExecuteScriptFileAsync ( testScript . FilePath ) ;
1137
+ AssertDebuggerStopped ( testScript . FilePath , 2 ) ;
1138
+
1139
+ VariableDetailsBase [ ] variables = await GetVariables ( VariableContainerDetails . LocalScopeName ) . ConfigureAwait ( true ) ;
1140
+ VariableDetailsBase var = Array . Find ( variables , v => v . Name == "$file" ) ;
1141
+ VariableDetailsBase [ ] childVars = await debugService . GetVariables ( var . Id , CancellationToken . None ) . ConfigureAwait ( true ) ;
1142
+ Assert . Contains ( childVars , i => i . Name is "PSPath" ) ;
1143
+ Assert . Contains ( childVars , i => i . Name is "PSProvider" && i . ValueString is "Microsoft.PowerShell.Core\\ FileSystem" ) ;
1144
+ Assert . Contains ( childVars , i => i . Name is "Exists" && i . ValueString is "$true" ) ;
1145
+ Assert . Contains ( childVars , i => i . Name is "LastAccessTime" ) ;
1053
1146
}
1054
1147
}
1055
1148
}
0 commit comments