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)
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)
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)
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))
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:
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)