tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Debugger-shouldAvoidSideEffects.js (1256B)


      1 // Test shouldAvoidSideEffects flag.
      2 
      3 const g = newGlobal({newCompartment: true});
      4 const dbg = Debugger(g);
      5 const gdbg = dbg.addDebuggee(g);
      6 
      7 gdbg.executeInGlobal(`
      8 var obj, result, reachedNextLine;
      9 `);
     10 
     11 dbg.shouldAvoidSideEffects = false;
     12 assertEq(dbg.shouldAvoidSideEffects, false);
     13 
     14 let result = gdbg.executeInGlobal(`
     15 result = undefined;
     16 reachedNextLine = false;
     17 
     18 obj = createSideEffectfulResolveObject();
     19 result = obj.test;
     20 reachedNextLine = true;
     21 "finished";
     22 `);
     23 assertEq(g.result, 42);
     24 assertEq(g.reachedNextLine, true);
     25 assertEq(result.return, "finished");
     26 
     27 dbg.shouldAvoidSideEffects = true;
     28 assertEq(dbg.shouldAvoidSideEffects, true);
     29 
     30 result = gdbg.executeInGlobal(`
     31 result = undefined;
     32 reachedNextLine = false;
     33 
     34 obj = createSideEffectfulResolveObject();
     35 result = obj.test;
     36 reachedNextLine = true;
     37 "finished";
     38 `);
     39 assertEq(g.result, undefined);
     40 assertEq(g.reachedNextLine, false);
     41 assertEq(result, null);
     42 
     43 // Resolve after abort.
     44 dbg.shouldAvoidSideEffects = false;
     45 assertEq(dbg.shouldAvoidSideEffects, false);
     46 
     47 result = gdbg.executeInGlobal(`
     48 result = undefined;
     49 reachedNextLine = false;
     50 
     51 result = obj.test;
     52 reachedNextLine = true;
     53 "finished";
     54 `);
     55 assertEq(g.result, 42);
     56 assertEq(g.reachedNextLine, true);
     57 assertEq(result.return, "finished");