Checks that error.stack works correctly

Running test: testErrorStackWithRuntimeDisabled
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 4
            exception : {
                className : Error
                description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
                objectId : <objectId>
                subtype : error
                type : object
            }
            exceptionId : <exceptionId>
            lineNumber : 8
            scriptId : <scriptId>
            text : Uncaught
        }
        result : {
            className : Error
            description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
            objectId : <objectId>
            subtype : error
            type : object
        }
    }
}

Running test: testErrorStackWithRuntimeEnabled
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 4
            exception : {
                className : Error
                description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
                objectId : <objectId>
                subtype : error
                type : object
            }
            exceptionId : <exceptionId>
            lineNumber : 8
            scriptId : <scriptId>
            stackTrace : {
                callFrames : [
                    [0] : {
                        columnNumber : 10
                        functionName :
                        lineNumber : 8
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [1] : {
                        columnNumber : 9
                        functionName : recurse
                        lineNumber : 3
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [2] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [3] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [4] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [5] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [6] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [7] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [8] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [9] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [10] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [11] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [12] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [13] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [14] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [15] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [16] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [17] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [18] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [19] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [20] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [21] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [22] : {
                        columnNumber : 2
                        functionName : foo
                        lineNumber : 7
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [23] : {
                        columnNumber : 0
                        functionName :
                        lineNumber : 0
                        scriptId : <scriptId>
                        url :
                    }
                ]
            }
            text : Uncaught
        }
        result : {
            className : Error
            description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
            objectId : <objectId>
            subtype : error
            type : object
        }
    }
}
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 4
            exception : {
                className : Error
                description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
                objectId : <objectId>
                subtype : error
                type : object
            }
            exceptionId : <exceptionId>
            lineNumber : 8
            scriptId : <scriptId>
            text : Uncaught
        }
        result : {
            className : Error
            description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
            objectId : <objectId>
            subtype : error
            type : object
        }
    }
}
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 4
            exception : {
                className : Error
                description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
                objectId : <objectId>
                subtype : error
                type : object
            }
            exceptionId : <exceptionId>
            lineNumber : 8
            scriptId : <scriptId>
            stackTrace : {
                callFrames : [
                    [0] : {
                        columnNumber : 10
                        functionName :
                        lineNumber : 8
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [1] : {
                        columnNumber : 9
                        functionName : recurse
                        lineNumber : 3
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [2] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [3] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [4] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                ]
            }
            text : Uncaught
        }
        result : {
            className : Error
            description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
            objectId : <objectId>
            subtype : error
            type : object
        }
    }
}
{
    id : <messageId>
    result : {
        exceptionDetails : {
            columnNumber : 4
            exception : {
                className : Error
                description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
                objectId : <objectId>
                subtype : error
                type : object
            }
            exceptionId : <exceptionId>
            lineNumber : 8
            scriptId : <scriptId>
            stackTrace : {
                callFrames : [
                    [0] : {
                        columnNumber : 10
                        functionName :
                        lineNumber : 8
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [1] : {
                        columnNumber : 9
                        functionName : recurse
                        lineNumber : 3
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [2] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [3] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [4] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [5] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [6] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [7] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [8] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                    [9] : {
                        columnNumber : 22
                        functionName : recurse
                        lineNumber : 2
                        scriptId : <scriptId>
                        url : test.js
                    }
                ]
            }
            text : Uncaught
        }
        result : {
            className : Error
            description : Error: Thrown from foo!     at test.js:9:11     at recurse (test.js:4:10)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)     at recurse (test.js:3:23)
            objectId : <objectId>
            subtype : error
            type : object
        }
    }
}
