@@ -24,8 +24,6 @@ module.exports = function (w) {
2424 assertTrue ( typeof w . selectSlot === 'function' ) ) ;
2525 it ( 'fpbUnpatch is a function' , ( ) =>
2626 assertTrue ( typeof w . fpbUnpatch === 'function' ) ) ;
27- it ( 'fpbReinject is a function' , ( ) =>
28- assertTrue ( typeof w . fpbReinject === 'function' ) ) ;
2927 it ( 'fpbUnpatchAll is a function' , ( ) =>
3028 assertTrue ( typeof w . fpbUnpatchAll === 'function' ) ) ;
3129 it ( 'updateMemoryInfo is a function' , ( ) =>
@@ -285,69 +283,23 @@ module.exports = function (w) {
285283 w . FPBState . toolTerminal = null ;
286284 w . FPBState . isConnected = false ;
287285 } ) ;
288- } ) ;
289-
290- describe ( 'fpbReinject Function' , ( ) => {
291- it ( 'is async function' , ( ) => {
292- assertTrue ( w . fpbReinject . constructor . name === 'AsyncFunction' ) ;
293- } ) ;
294-
295- it ( 'returns early if not connected' , async ( ) => {
296- resetMocks ( ) ;
297- w . FPBState . isConnected = false ;
298- const mockTerm = new MockTerminal ( ) ;
299- w . FPBState . toolTerminal = mockTerm ;
300- await w . fpbReinject ( 0 ) ;
301- assertTrue (
302- mockTerm . _writes . some (
303- ( wr ) => wr . msg && wr . msg . includes ( 'Not connected' ) ,
304- ) ,
305- ) ;
306- w . FPBState . toolTerminal = null ;
307- } ) ;
308286
309- it ( 'returns error if slot is empty ' , async ( ) => {
287+ it ( 'handles fetch exception ' , async ( ) => {
310288 resetMocks ( ) ;
311289 w . FPBState . isConnected = true ;
312290 const mockTerm = new MockTerminal ( ) ;
313291 w . FPBState . toolTerminal = mockTerm ;
314- w . FPBState . slotStates = Array ( 6 )
315- . fill ( )
316- . map ( ( ) => ( { occupied : false , func : '' } ) ) ;
317- await w . fpbReinject ( 0 ) ;
292+ const origFetch = browserGlobals . fetch ;
293+ browserGlobals . fetch = async ( ) => {
294+ throw new Error ( 'Network error' ) ;
295+ } ;
296+ global . fetch = browserGlobals . fetch ;
297+ await w . fpbUnpatch ( 0 ) ;
318298 assertTrue (
319- mockTerm . _writes . some ( ( wr ) => wr . msg && wr . msg . includes ( 'empty ' ) ) ,
299+ mockTerm . _writes . some ( ( wr ) => wr . msg && wr . msg . includes ( 'ERROR ' ) ) ,
320300 ) ;
321- w . FPBState . toolTerminal = null ;
322- w . FPBState . isConnected = false ;
323- } ) ;
324-
325- it ( 'fetches patch source before reinject' , async ( ) => {
326- resetMocks ( ) ;
327- w . FPBState . isConnected = true ;
328- w . FPBState . toolTerminal = new MockTerminal ( ) ;
329- w . FPBState . slotStates = [
330- {
331- occupied : true ,
332- func : 'test_func' ,
333- orig_addr : '0x1000' ,
334- target_addr : '0x2000' ,
335- } ,
336- { occupied : false } ,
337- { occupied : false } ,
338- { occupied : false } ,
339- { occupied : false } ,
340- { occupied : false } ,
341- ] ;
342- setFetchResponse ( '/api/patch/source' , {
343- success : true ,
344- content : 'void test_func() {}' ,
345- } ) ;
346- setFetchResponse ( '/api/fpb/inject' , { success : true } ) ;
347- setFetchResponse ( '/api/fpb/info' , { success : true , slots : [ ] } ) ;
348- await w . fpbReinject ( 0 ) ;
349- const calls = getFetchCalls ( ) ;
350- assertTrue ( calls . some ( ( c ) => c . url . includes ( '/api/patch/source' ) ) ) ;
301+ browserGlobals . fetch = origFetch ;
302+ global . fetch = origFetch ;
351303 w . FPBState . toolTerminal = null ;
352304 w . FPBState . isConnected = false ;
353305 } ) ;
@@ -448,126 +400,6 @@ module.exports = function (w) {
448400 } ) ;
449401 } ) ;
450402
451- describe ( 'fpbUnpatch Function - Extended' , ( ) => {
452- it ( 'handles fetch exception' , async ( ) => {
453- resetMocks ( ) ;
454- w . FPBState . isConnected = true ;
455- const mockTerm = new MockTerminal ( ) ;
456- w . FPBState . toolTerminal = mockTerm ;
457- const origFetch = browserGlobals . fetch ;
458- browserGlobals . fetch = async ( ) => {
459- throw new Error ( 'Network error' ) ;
460- } ;
461- global . fetch = browserGlobals . fetch ;
462- await w . fpbUnpatch ( 0 ) ;
463- assertTrue (
464- mockTerm . _writes . some ( ( wr ) => wr . msg && wr . msg . includes ( 'ERROR' ) ) ,
465- ) ;
466- browserGlobals . fetch = origFetch ;
467- global . fetch = origFetch ;
468- w . FPBState . toolTerminal = null ;
469- w . FPBState . isConnected = false ;
470- } ) ;
471- } ) ;
472-
473- describe ( 'fpbReinject Function - Extended' , ( ) => {
474- it ( 'handles no patch source available' , async ( ) => {
475- resetMocks ( ) ;
476- w . FPBState . isConnected = true ;
477- const mockTerm = new MockTerminal ( ) ;
478- w . FPBState . toolTerminal = mockTerm ;
479- w . FPBState . slotStates = [
480- {
481- occupied : true ,
482- func : 'test_func' ,
483- orig_addr : '0x1000' ,
484- target_addr : '0x2000' ,
485- } ,
486- { occupied : false } ,
487- { occupied : false } ,
488- { occupied : false } ,
489- { occupied : false } ,
490- { occupied : false } ,
491- ] ;
492- setFetchResponse ( '/api/patch/source' , { success : false } ) ;
493- await w . fpbReinject ( 0 ) ;
494- assertTrue (
495- mockTerm . _writes . some (
496- ( wr ) => wr . msg && wr . msg . includes ( 'No patch source' ) ,
497- ) ,
498- ) ;
499- w . FPBState . toolTerminal = null ;
500- w . FPBState . isConnected = false ;
501- } ) ;
502-
503- it ( 'handles reinject failure' , async ( ) => {
504- resetMocks ( ) ;
505- w . FPBState . isConnected = true ;
506- const mockTerm = new MockTerminal ( ) ;
507- w . FPBState . toolTerminal = mockTerm ;
508- w . FPBState . slotStates = [
509- {
510- occupied : true ,
511- func : 'test_func' ,
512- orig_addr : '0x1000' ,
513- target_addr : '0x2000' ,
514- } ,
515- { occupied : false } ,
516- { occupied : false } ,
517- { occupied : false } ,
518- { occupied : false } ,
519- { occupied : false } ,
520- ] ;
521- setFetchResponse ( '/api/patch/source' , {
522- success : true ,
523- content : 'void test() {}' ,
524- } ) ;
525- setFetchResponse ( '/api/fpb/inject' , {
526- success : false ,
527- error : 'Injection failed' ,
528- } ) ;
529- await w . fpbReinject ( 0 ) ;
530- assertTrue (
531- mockTerm . _writes . some ( ( wr ) => wr . msg && wr . msg . includes ( 'ERROR' ) ) ,
532- ) ;
533- w . FPBState . toolTerminal = null ;
534- w . FPBState . isConnected = false ;
535- } ) ;
536-
537- it ( 'handles fetch exception' , async ( ) => {
538- resetMocks ( ) ;
539- w . FPBState . isConnected = true ;
540- const mockTerm = new MockTerminal ( ) ;
541- w . FPBState . toolTerminal = mockTerm ;
542- w . FPBState . slotStates = [
543- {
544- occupied : true ,
545- func : 'test_func' ,
546- orig_addr : '0x1000' ,
547- target_addr : '0x2000' ,
548- } ,
549- { occupied : false } ,
550- { occupied : false } ,
551- { occupied : false } ,
552- { occupied : false } ,
553- { occupied : false } ,
554- ] ;
555- const origFetch = browserGlobals . fetch ;
556- browserGlobals . fetch = async ( ) => {
557- throw new Error ( 'Network error' ) ;
558- } ;
559- global . fetch = browserGlobals . fetch ;
560- await w . fpbReinject ( 0 ) ;
561- assertTrue (
562- mockTerm . _writes . some ( ( wr ) => wr . msg && wr . msg . includes ( 'ERROR' ) ) ,
563- ) ;
564- browserGlobals . fetch = origFetch ;
565- global . fetch = origFetch ;
566- w . FPBState . toolTerminal = null ;
567- w . FPBState . isConnected = false ;
568- } ) ;
569- } ) ;
570-
571403 describe ( 'selectSlot Function - Extended' , ( ) => {
572404 it ( 'opens disassembly for occupied slot' , ( ) => {
573405 resetMocks ( ) ;
0 commit comments