def test_foo3(self):
        interp = Interpreter()
        res = interp.run_src('var a = 40;')
        res = interp.run_src('var b = 2;')
        res = interp.run_src('a + b;')

        assert res == _w(42)
Exemple #2
0
def run(files, opts):
    from js.interpreter import Interpreter, load_file

    interactive = len(files) == 0
    inspect = opts.get('inspect', False)

    interp = Interpreter(opts)

    for filename in files:
        src = load_file(filename)

        try:
            interp.run_src(src)
        except ParseError as exc:
            printsyntaxerror(unicode(filename), exc, src)
            raise SystemExit
        except LexerError as e:
            printlexererror(unicode(filename), e, src)
            raise SystemExit
        except JsException as e:
            printerrormessage(unicode(filename), e._msg())
            raise SystemExit

    if inspect or interactive:
        repl(interp)
Exemple #3
0
def run(files, opts):
    from js.interpreter import Interpreter, load_file

    interactive = len(files) == 0
    inspect = opts.get('inspect', False)

    interp = Interpreter(opts)

    for filename in files:
        src = load_file(filename)

        try:
            interp.run_src(src)
        except ParseError as exc:
            printsyntaxerror(unicode(filename), exc, src)
            raise SystemExit
        except LexerError as e:
            printlexererror(unicode(filename), e, src)
            raise SystemExit
        except JsException as e:
            printerrormessage(unicode(filename), e._msg())
            raise SystemExit

    if inspect or interactive:
        repl(interp)
Exemple #4
0
def assertv(code, value):
    from js.interpreter import Interpreter
    from js.object_space import _w

    jsint = Interpreter()
    ret_val = jsint.run_src(code)

    assert ret_val == _w(value)
Exemple #5
0
def assertp(code, prints, captured):
    out, err = captured.readouterr()

    from js.interpreter import Interpreter
    jsint = Interpreter()
    jsint.run_src(code)
    out, err = captured.readouterr()
    assert out.strip() == prints.strip()
    def test_foo2(self):
        src = '''
        var a = 40;
        var b = 2;
        return a + b;
        '''

        interp = Interpreter()
        res = interp.run_src(src)

        assert res == _w(42)
    def test_foo1(self):
        src = u'''
        var a = 40;
        var b = 2;
        a + b;
        '''

        ast = parse_to_ast(src)

        interp = Interpreter()
        res = interp.run_ast(ast)

        assert res == _w(42)
 def __init__(self, locals=None, filename="<console>"):
     code.InteractiveConsole.__init__(self, locals, filename)
     self.interpreter = Interpreter()
     ctx = self.interpreter.global_context
     self.interpreter.w_Global.Put(ctx, 'quit', W_Builtin(quitjs))
     self.interpreter.w_Global.Put(ctx, 'trace', W_Builtin(tracejs))
     self.interpreter.w_Global.Put(ctx, 'debug', W_Builtin(debugjs))
Exemple #9
0
        def f(testfile):
            interp = Interpreter({'no-exception-jseval': True})

            shell_src = load_file(str(shellpath))
            interp.run_src(shell_src)
            test_src = load_file(testfile)
            interp.run_src(test_src)

            global_object = interp.global_object
            testcases = global_object.get(u'testcases')

            testcount = testcases.get(u'length').ToInt32()

            run_test_func = global_object.get(u'run_test')

            test_results = []

            for number in xrange(testcount):
                w_test_number = _w(number)
                result_obj = run_test_func.Call(args=[w_test_number])
                result_passed = result_obj.get(u'passed').to_boolean()
                result_reason = str(result_obj.get(u'reason').to_string())
                test_results.append({'number': number, 'passed': result_passed, 'reason': result_reason})

            return test_results
class JSInterpreter(code.InteractiveConsole):
    def __init__(self, locals=None, filename="<console>"):
        code.InteractiveConsole.__init__(self, locals, filename)
        self.interpreter = Interpreter()
        ctx = self.interpreter.global_context
        self.interpreter.w_Global.Put(ctx, 'quit', W_Builtin(quitjs))
        self.interpreter.w_Global.Put(ctx, 'trace', W_Builtin(tracejs))
        self.interpreter.w_Global.Put(ctx, 'debug', W_Builtin(debugjs))

    def runcodefromfile(self, filename):
        f = open_file_as_stream(filename)
        self.runsource(f.readall(), filename)
        f.close()

    def runcode(self, ast):
        """Run the javascript code in the AST. All exceptions raised
        by javascript code must be caught and handled here. When an
        exception occurs, self.showtraceback() is called to display a
        traceback.
        """
        try:
            res = self.interpreter.run(ast, interactive=True)
            if DEBUG:
                print self.interpreter._code
            if res not in (None, w_Undefined):
                try:
                    if DEBUG:
                        print repr(res)
                    print res.ToString(self.interpreter.w_Global)
                except ThrowException, exc:
                    print exc.exception.ToString(self.interpreter.w_Global)
        except SystemExit:
            raise
        except ThrowException, exc:
            self.showtraceback(exc)
        else:
Exemple #11
0
def asserte(code, exception):
    from js.interpreter import Interpreter
    jsint = Interpreter()
    py.test.raises(exception, jsint.run_src, code)
    def test_foo4(self):
        interp = Interpreter()
        res = interp.run_src('40 + 2;')

        assert res == _w(42)