Home | History | Annotate | Download | only in regress
      1 // Copyright 2012 the V8 project authors. All rights reserved.
      2 // Redistribution and use in source and binary forms, with or without
      3 // modification, are permitted provided that the following conditions are
      4 // met:
      5 //
      6 //     * Redistributions of source code must retain the above copyright
      7 //       notice, this list of conditions and the following disclaimer.
      8 //     * Redistributions in binary form must reproduce the above
      9 //       copyright notice, this list of conditions and the following
     10 //       disclaimer in the documentation and/or other materials provided
     11 //       with the distribution.
     12 //     * Neither the name of Google Inc. nor the names of its
     13 //       contributors may be used to endorse or promote products derived
     14 //       from this software without specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 
     28 // Flags: --expose-debug-as debug
     29 
     30 // Test whether scripts compiled after setting the break point are
     31 // updated correctly.
     32 
     33 Debug = debug.Debug;
     34 
     35 var break_count = 0;
     36 var test_break_1 = false;
     37 var test_break_2 = false;
     38 
     39 function sendCommand(state, cmd) {
     40   // Get the debug command processor in paused state.
     41   var dcp = state.debugCommandProcessor(false);
     42   var request = JSON.stringify(cmd);
     43   var response = dcp.processDebugJSONRequest(request);
     44   return JSON.parse(response);
     45 }
     46 
     47 function setBreakPointByName(state) {
     48   sendCommand(state, {
     49     seq: 0,
     50     type: "request",
     51     command: "setbreakpoint",
     52     arguments: {
     53       type: "script",
     54       target: "testScriptOne",
     55       line: 2
     56     }
     57   });
     58 }
     59 
     60 function setBreakPointByRegExp(state) {
     61   sendCommand(state, {
     62     seq: 0,
     63     type: "request",
     64     command: "setbreakpoint",
     65     arguments: {
     66       type: "scriptRegExp",
     67       target: "Scrip.Two",
     68       line: 2
     69     }
     70   });
     71 }
     72 
     73 function listener(event, exec_state, event_data, data) {
     74   try {
     75     if (event == Debug.DebugEvent.Break) {
     76       switch (break_count) {
     77         case 0:
     78           // Set break points before the code has been compiled.
     79           setBreakPointByName(exec_state);
     80           setBreakPointByRegExp(exec_state);
     81           break;
     82         case 1:
     83           // Set the flag to prove that we hit the first break point.
     84           test_break_1 = true;
     85           break;
     86         case 2:
     87           // Set the flag to prove that we hit the second break point.
     88           test_break_2 = true;
     89           break;
     90       }
     91       break_count++;
     92     }
     93   } catch (e) {
     94     print(e);
     95   }
     96 }
     97 
     98 Debug.setListener(listener);
     99 debugger;
    100 
    101 eval('function test1() {                \n' +
    102      '  assertFalse(test_break_1);      \n' +
    103      '  assertTrue(test_break_1);       \n' +
    104      '}                                 \n' +
    105      '//@ sourceURL=testScriptOne');
    106 
    107 eval('function test2() {                \n' +
    108      '  assertFalse(test_break_2);      \n' +
    109      '  assertTrue(test_break_2);       \n' +
    110      '}                                 \n' +
    111      '//@ sourceURL=testScriptTwo');
    112 
    113 test1();
    114 test2();
    115 assertEquals(3, break_count);
    116 
    117