@@ -1026,6 +1026,38 @@ export function setUpTestController(): vscode.Disposable[] {
1026
1026
) ;
1027
1027
}
1028
1028
1029
+ /** Delete the test item for `uri`. Returns `true` if an item was deleted. */
1030
+ const deleteItemForUri = async ( uri : vscode . Uri ) : Promise < boolean > => {
1031
+ let result = false ;
1032
+ // If a TestItem was deleted, remove it from the controller
1033
+ if ( uri . path . toLowerCase ( ) . endsWith ( ".cls" ) ) {
1034
+ const item = await getTestItemForClass ( testController , uri ) ;
1035
+ if ( item ) {
1036
+ const rootItem = rootItemForItem ( testController , uri ) ;
1037
+ if ( rootItem ) {
1038
+ // Remove from our cache of classes
1039
+ const classes = classesForRoot . get ( rootItem ) ;
1040
+ if ( classes ) {
1041
+ let cls : string ;
1042
+ for ( const element of classes ) {
1043
+ if ( element [ 1 ] . id == item . id ) {
1044
+ cls = element [ 0 ] ;
1045
+ break ;
1046
+ }
1047
+ }
1048
+ if ( cls ) {
1049
+ classes . delete ( cls ) ;
1050
+ classesForRoot . set ( rootItem , classes ) ;
1051
+ }
1052
+ }
1053
+ }
1054
+ item . parent . children . delete ( uri . toString ( ) ) ;
1055
+ result = true ;
1056
+ }
1057
+ }
1058
+ return result ;
1059
+ } ;
1060
+
1029
1061
// Register disposables
1030
1062
return [
1031
1063
testController ,
@@ -1098,35 +1130,13 @@ export function setUpTestController(): vscode.Disposable[] {
1098
1130
}
1099
1131
}
1100
1132
} ) ,
1101
- vscode . workspace . onDidDeleteFiles ( ( e ) =>
1102
- e . files . forEach ( async ( uri ) => {
1103
- // If a TestItem was deleted, remove it from the controller
1104
- if ( uri . path . toLowerCase ( ) . endsWith ( ".cls" ) ) {
1105
- const item = await getTestItemForClass ( testController , uri ) ;
1106
- if ( item ) {
1107
- const rootItem = rootItemForItem ( testController , uri ) ;
1108
- if ( rootItem ) {
1109
- // Remove from our cache of classes
1110
- const classes = classesForRoot . get ( rootItem ) ;
1111
- if ( classes ) {
1112
- let cls : string ;
1113
- for ( const element of classes ) {
1114
- if ( element [ 1 ] . id == item . id ) {
1115
- cls = element [ 0 ] ;
1116
- break ;
1117
- }
1118
- }
1119
- if ( cls ) {
1120
- classes . delete ( cls ) ;
1121
- classesForRoot . set ( rootItem , classes ) ;
1122
- }
1123
- }
1124
- }
1125
- item . parent . children . delete ( uri . toString ( ) ) ;
1126
- }
1127
- }
1133
+ vscode . workspace . onDidDeleteFiles ( ( e ) => e . files . forEach ( deleteItemForUri ) ) ,
1134
+ vscode . workspace . onDidCreateFiles ( ( e ) => e . files . forEach ( ( uri ) => addItemForClassUri ( testController , uri ) ) ) ,
1135
+ vscode . workspace . onDidRenameFiles ( ( e ) =>
1136
+ e . files . forEach ( async ( file ) => {
1137
+ // If the oldUri was a test class, attempt to create a new item for it
1138
+ if ( await deleteItemForUri ( file . oldUri ) ) addItemForClassUri ( testController , file . newUri ) ;
1128
1139
} )
1129
1140
) ,
1130
- vscode . workspace . onDidCreateFiles ( ( e ) => e . files . forEach ( ( uri ) => addItemForClassUri ( testController , uri ) ) ) ,
1131
1141
] ;
1132
1142
}
0 commit comments