diff --git a/test/js2tests/__init__.py b/test/js2tests/__init__.py index ecca434de..a9b1660b8 100644 --- a/test/js2tests/__init__.py +++ b/test/js2tests/__init__.py @@ -9,8 +9,8 @@ # # code: If missing subtest is skipped, Otherwise it's value is used as code to initialize the tested class. # globals: Optional. Used only by `test_jsinterp`. If set used as argument `variables` initializing `JSInterperter`. -# asserts: Used only by `test_jsinterp`. If this is missing subtest is skipped, Should be a list of `dict`, each used -# as an assertion for the initialized `JSInterpreter`. Each `dict` may have the following keys: +# asserts: Used only by `test_jsinterp`. If this is missing subtest is skipped, Should be a list of `dict`, each +# used as an assertion for the initialized `JSInterpreter`. Each `dict` may have the following keys: # value: If missing assertion is skipped. Otherwise it's value is used as expected value in # an `assertEqual` call. # call: Optional. If set used as arguments of a `call_function` call of the initialized `JSInterpreter` diff --git a/test/js2tests/array_access.py b/test/js2tests/array_access.py index 7f0a4e61c..697967b21 100644 --- a/test/js2tests/array_access.py +++ b/test/js2tests/array_access.py @@ -6,77 +6,77 @@ from youtube_dl.jsinterp2.tstream import _ASSIGN_OPERATORS tests = [ {'code': 'function f() { var x = [1,2,3]; x[0] = 4; x[0] = 5; x[2] = 7; return x; }', 'asserts': [{'value': [5, 2, 7], 'call': ('f',)}], - 'ast': [ - (Token.FUNC, 'f', [], [ - (Token.VAR, - zip(['x'], - [(Token.ASSIGN, - None, - (Token.OPEXPR, [ - (Token.MEMBER, (Token.ARRAY, [ - (Token.ASSIGN, None, (Token.OPEXPR, [ - (Token.MEMBER, (Token.INT, 1), None, None)]), None), - (Token.ASSIGN, None, (Token.OPEXPR, [ - (Token.MEMBER, (Token.INT, 2), None, None)]), None), - (Token.ASSIGN, None, (Token.OPEXPR, [ - (Token.MEMBER, (Token.INT, 3), None, None)]), None) - ]), None, None), + 'ast': [ + (Token.FUNC, 'f', [], [ + (Token.VAR, + zip(['x'], + [(Token.ASSIGN, + None, + (Token.OPEXPR, [ + (Token.MEMBER, (Token.ARRAY, [ + (Token.ASSIGN, None, (Token.OPEXPR, [ + (Token.MEMBER, (Token.INT, 1), None, None)]), None), + (Token.ASSIGN, None, (Token.OPEXPR, [ + (Token.MEMBER, (Token.INT, 2), None, None)]), None), + (Token.ASSIGN, None, (Token.OPEXPR, [ + (Token.MEMBER, (Token.INT, 3), None, None)]), None) + ]), None, None), + ]), + None) + ]) + ), + (Token.EXPR, [ + (Token.ASSIGN, + _ASSIGN_OPERATORS['='][1], + (Token.OPEXPR, [ + (Token.MEMBER, (Token.ID, 'x'), + None, + (Token.ELEM, + (Token.EXPR, [ + (Token.ASSIGN, + None, + (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 0), None, None)]), + None) ]), - None) - ]) - ), - (Token.EXPR, [ - (Token.ASSIGN, - _ASSIGN_OPERATORS['='][1], - (Token.OPEXPR, [ - (Token.MEMBER, (Token.ID, 'x'), - None, - (Token.ELEM, - (Token.EXPR, [ - (Token.ASSIGN, - None, - (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 0), None, None)]), - None) - ]), - None)) - ]), - (Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 4), None, None)]), None) - ) - ]), - (Token.EXPR, [ - (Token.ASSIGN, - _ASSIGN_OPERATORS['='][1], - (Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), - None, - (Token.ELEM, (Token.EXPR, [ - (Token.ASSIGN, - None, - (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 0), None, None)]), - None) - ]), None)) - ]), - (Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 5), None, None)]), None)) - ]), - (Token.EXPR, [ - (Token.ASSIGN, - _ASSIGN_OPERATORS['='][1], - (Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), - None, - (Token.ELEM, (Token.EXPR, [ - (Token.ASSIGN, - None, - (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 2), None, None)]), - None) - ]), None)) - ]), - (Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 7), None, None)]), None)) - ]), - (Token.RETURN, - (Token.EXPR, [ - (Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), None, None)]), None) - ]) + None)) + ]), + (Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 4), None, None)]), None) ) - ]) - ] + ]), + (Token.EXPR, [ + (Token.ASSIGN, + _ASSIGN_OPERATORS['='][1], + (Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), + None, + (Token.ELEM, (Token.EXPR, [ + (Token.ASSIGN, + None, + (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 0), None, None)]), + None) + ]), None)) + ]), + (Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 5), None, None)]), None)) + ]), + (Token.EXPR, [ + (Token.ASSIGN, + _ASSIGN_OPERATORS['='][1], + (Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), + None, + (Token.ELEM, (Token.EXPR, [ + (Token.ASSIGN, + None, + (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 2), None, None)]), + None) + ]), None)) + ]), + (Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 7), None, None)]), None)) + ]), + (Token.RETURN, + (Token.EXPR, [ + (Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'x'), None, None)]), None) + ]) + ) + ]) + ] } ] diff --git a/test/js2tests/basic.py b/test/js2tests/basic.py index 888a62a37..36d1e9b43 100644 --- a/test/js2tests/basic.py +++ b/test/js2tests/basic.py @@ -24,7 +24,7 @@ tests = [ 'ast': [(Token.FUNC, 'x', [], [None])] }, { - # FIXME: function expresiion needs to be implemented + # FIXME: function expression needs to be implemented 'exclude': ('jsinterp2',), 'code': 'var x5 = function x5(){return 42;}', 'asserts': [{'value': 42, 'call': ('x5',)}] diff --git a/test/js2tests/calc.py b/test/js2tests/calc.py index 54aed2db2..a32f10ae9 100644 --- a/test/js2tests/calc.py +++ b/test/js2tests/calc.py @@ -9,7 +9,7 @@ tests = [ 'ast': [ (Token.FUNC, 'x4', ['a'], [ (Token.RETURN, - (Token.EXPR, [ + (Token.EXPR, [ (Token.ASSIGN, None, (Token.OPEXPR, [ @@ -21,8 +21,8 @@ tests = [ (Token.OP, _OPERATORS['+'][1]) ]), None) - ]) - ) + ]) + ) ]) ] } diff --git a/test/js2tests/call.py b/test/js2tests/call.py index 9ce9c34fa..e49d56e15 100644 --- a/test/js2tests/call.py +++ b/test/js2tests/call.py @@ -42,7 +42,7 @@ tests = [ # FIXME built-in functions not yet implemented 'exclude': ('jsinterp2',), 'code': 'function x(a) { return a.split(""); }', - 'asserts': [{'value': ["a", "b", "c"], 'call': ('x',"abc")}], + 'asserts': [{'value': ["a", "b", "c"], 'call': ('x', "abc")}], 'ast': [ (Token.FUNC, 'x', ['a'], [ (Token.RETURN, (Token.EXPR, [ diff --git a/test/js2tests/do_loop.py b/test/js2tests/do_loop.py index 30887e081..c2d4650b4 100644 --- a/test/js2tests/do_loop.py +++ b/test/js2tests/do_loop.py @@ -4,7 +4,7 @@ from youtube_dl.jsinterp2.jsgrammar import Token from youtube_dl.jsinterp2.tstream import _ASSIGN_OPERATORS, _UNARY_OPERATORS, _RELATIONS skip = { - 'jsinterp': 'Do loop is not supportted', + 'jsinterp': 'Do loop is not supported', 'interpret': 'Interpreting do loop not yet implemented' } diff --git a/test/js2tests/label.py b/test/js2tests/label.py index 61fea0720..45eac8bd7 100644 --- a/test/js2tests/label.py +++ b/test/js2tests/label.py @@ -5,7 +5,7 @@ from youtube_dl.jsinterp2.jsgrammar import Token skip = { 'jsinterp': 'Label statement is not supported', 'interpret': 'Interpreting label not yet implemented', - 'parse': 'Test not yet implemented: missing code and ast' + 'parse': 'Test not yet implemented: missing code and ast' } tests = [ diff --git a/test/js2tests/parens.py b/test/js2tests/parens.py index 38cd094bd..37d717383 100644 --- a/test/js2tests/parens.py +++ b/test/js2tests/parens.py @@ -52,12 +52,13 @@ tests = [ (Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [ (Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [ (Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [ - (Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [ - (Token.MEMBER, - (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [ - (Token.MEMBER, (Token.INT, 3), None, None) - ]), None)]), None, None) - ]), None)]), None, None) + (Token.MEMBER, + (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [ + (Token.MEMBER, + (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [ + (Token.MEMBER, (Token.INT, 3), None, None) + ]), None)]), None, None) + ]), None)]), None, None) ]), None)]), None, None) ]), None)]), None, None) ]), None)]), None, None) diff --git a/test/js2tests/unary.py b/test/js2tests/unary.py index 964c64055..6d2372fdd 100644 --- a/test/js2tests/unary.py +++ b/test/js2tests/unary.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals skip = { - 'jsinterp': 'Unary opertations are not supported', + 'jsinterp': 'Unary operations are not supported', 'parse': True } diff --git a/test/js2tests/with_statement.py b/test/js2tests/with_statement.py index c203e7ce5..e0869c9d2 100644 --- a/test/js2tests/with_statement.py +++ b/test/js2tests/with_statement.py @@ -5,7 +5,7 @@ from youtube_dl.jsinterp2.jsgrammar import Token skip = { 'jsinterp': 'With statement is not supported', 'interpret': 'Interpreting with statement not yet implemented', - 'parse': 'Test not yet implemented: missing code and ast' + 'parse': 'Test not yet implemented: missing code and ast' } tests = [ diff --git a/youtube_dl/jsinterp2/jsbuilt_ins/utils.py b/youtube_dl/jsinterp2/jsbuilt_ins/utils.py index 4678b23a2..11491828e 100644 --- a/youtube_dl/jsinterp2/jsbuilt_ins/utils.py +++ b/youtube_dl/jsinterp2/jsbuilt_ins/utils.py @@ -6,7 +6,7 @@ from .base import ( def _get_formal_args(func): - return func.__code__.co_varnames[func.__code__.co_argcount - len((func.__defaults__))] + return func.__code__.co_varnames[func.__code__.co_argcount - len(func.__defaults__)] def to_js(o, name=None): diff --git a/youtube_dl/jsinterp2/jsparser.py b/youtube_dl/jsinterp2/jsparser.py index 3564d4713..a50337595 100644 --- a/youtube_dl/jsinterp2/jsparser.py +++ b/youtube_dl/jsinterp2/jsparser.py @@ -156,7 +156,7 @@ class Parser(object): elif token_value == 'debugger': self.token_stream.pop() - statement = (Token.DEBUG) + statement = (Token.DEBUG,) peek_id, peek_value, peek_pos = self.token_stream.peek() if peek_id is Token.END: self.token_stream.pop() @@ -164,7 +164,7 @@ class Parser(object): # FIXME automatic end insertion raise ExtractorError('Unexpected sequence at %d' % peek_pos) else: # label - # XXX possible refactoring (this is the only branch not poping) + # XXX possible refactoring (this is the only branch not popping) token_id, token_value, token_pos = self.token_stream.peek(2) if token_id is Token.COLON: token_id, label_name, token_pos = self.token_stream.pop(2)