Skip to content

Commit

Permalink
tests: use Constant for Num, Str, NameConstant node names
Browse files Browse the repository at this point in the history
This fixes some test failures under python3.8. All tests still pass on
python3.7. Partially addresses gristlabs#28, replaces gristlabs#29.
As suggested in https://github.com/gristlabs/asttokens/pull/29/files#r280123329.
  • Loading branch information
keszybz committed Jun 18, 2019
1 parent 21caaaa commit 04e680f
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 15 deletions.
14 changes: 7 additions & 7 deletions tests/test_mark_tokens.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,11 @@ def test_deep_recursion(self):
m = self.create_mark_checker(source)
self.assertEqual(len(m.all_nodes), 2104)
self.assertEqual(m.view_node(m.all_nodes[-1]),
"Str:'F1akOFFiRIgPHTZksKBAgMCLGTdGNIAAQgKfDAcgZbj0odOnUA8GBAA7'")
"Constant:'F1akOFFiRIgPHTZksKBAgMCLGTdGNIAAQgKfDAcgZbj0odOnUA8GBAA7'")
self.assertEqual(m.view_node(m.all_nodes[-2]),
"Str:'Ii0uLDAxLzI0Mh44U0gxMDI5JkM0JjU3NDY6Kjc5Njo7OUE8Ozw+Oz89QTxA'")
"Constant:'Ii0uLDAxLzI0Mh44U0gxMDI5JkM0JjU3NDY6Kjc5Njo7OUE8Ozw+Oz89QTxA'")
self.assertEqual(m.view_node(m.all_nodes[1053]),
"Str:'R0lGODlhigJnAef/AAABAAEEAAkCAAMGAg0GBAYJBQoMCBMODQ4QDRITEBkS'")
"Constant:'R0lGODlhigJnAef/AAABAAEEAAkCAAMGAg0GBAYJBQoMCBMODQ4QDRITEBkS'")
self.assertEqual(m.view_node(m.all_nodes[1052]),
"BinOp:'R0lGODlhigJnAef/AAABAAEEAAkCAAMGAg0GBAYJBQoMCBMODQ4QDRITEBkS'\r\n" +
" +'CxsSEhkWDhYYFQ0aJhkaGBweGyccGh8hHiIkIiMmGTEiHhQoPSYoJSkqKDcp'")
Expand Down Expand Up @@ -225,7 +225,7 @@ def test_adjacent_strings(self):
)
"""
m = self.create_mark_checker(source)
node_name = 'Const' if self.is_astroid_test else 'Str'
node_name = 'Const' if self.is_astroid_test else 'Constant'
self.assertEqual(m.view_nodes_at(2, 6), {
node_name + ":'x y z' \\\n'''a b c''' \"u v w\""
})
Expand Down Expand Up @@ -336,7 +336,7 @@ def test_conditional_expr(self):
name_a = 'AssignName:a' if self.is_astroid_test else 'Name:a'
const_true = ('Const:True' if self.is_astroid_test else
'Name:True' if six.PY2 else
'NameConstant:True')
'Constant:True')
self.assertEqual(m.view_nodes_at(1, 0),
{name_a, "Assign:a = True if True else False", "Module:" + source})
self.assertEqual(m.view_nodes_at(1, 4),
Expand Down Expand Up @@ -388,7 +388,7 @@ def test_del_dict(self):
if self.is_astroid_test:
self.assertEqual(m.view_nodes_at(1, 5), {'Const:4'})
else:
self.assertEqual(m.view_nodes_at(1, 5), {'Num:4'})
self.assertEqual(m.view_nodes_at(1, 5), {'Constant:4'})
self.assertEqual(m.view_nodes_at(2, 0), {'Delete:del x[4]'})
self.assertEqual(m.view_nodes_at(2, 4), {'Name:x', 'Subscript:x[4]'})

Expand Down Expand Up @@ -428,7 +428,7 @@ def test_keyword_arg_only(self):
self.assertEqual(m.view_nodes_at(2, 8), {'Keyword:b=[y]'})
else:
self.assertEqual(m.view_nodes_at(1, 2), {'keyword:x=1'})
self.assertEqual(m.view_nodes_at(1, 4), {'Num:1'})
self.assertEqual(m.view_nodes_at(1, 4), {'Constant:1'})
self.assertEqual(m.view_nodes_at(2, 2), {'keyword:a=(x)'})
self.assertEqual(m.view_nodes_at(2, 8), {'keyword:b=[y]'})

Expand Down
15 changes: 8 additions & 7 deletions tests/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import astroid
import unittest
from .context import asttokens
from .tools import get_node_name

class TestUtil(unittest.TestCase):

Expand Down Expand Up @@ -37,7 +38,7 @@ def test_walk_ast(self):
atok = asttokens.ASTTokens(self.source, parse=True)

def view(node):
return "%s:%s" % (node.__class__.__name__, atok.get_text(node))
return "%s:%s" % (get_node_name(node), atok.get_text(node))

scan = [view(n) for n in asttokens.util.walk(atok.tree)]
self.assertEqual(scan, [
Expand All @@ -48,20 +49,20 @@ def view(node):
'Call:bar(1 + 2)',
'Name:bar',
'BinOp:1 + 2',
'Num:1',
'Num:2',
'Constant:1',
'Constant:2',
"BinOp:'hello' + ', ' + 'world'",
"BinOp:'hello' + ', '",
"Str:'hello'",
"Str:', '",
"Str:'world'"
"Constant:'hello'",
"Constant:', '",
"Constant:'world'"
])

def test_walk_astroid(self):
atok = asttokens.ASTTokens(self.source, tree=astroid.builder.parse(self.source))

def view(node):
return "%s:%s" % (node.__class__.__name__, atok.get_text(node))
return "%s:%s" % (get_node_name(node), atok.get_text(node))

scan = [view(n) for n in asttokens.util.walk(atok.tree)]
self.assertEqual(scan, [
Expand Down
6 changes: 5 additions & 1 deletion tests/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ def append(node, par_value): # pylint: disable=unused-argument
util.visit_tree(root, append, None)
return nodes

def get_node_name(node):
name = node.__class__.__name__
return 'Constant' if name in ('Num', 'Str', 'NameConstant') else name


class MarkChecker(object):
"""
Expand All @@ -112,7 +116,7 @@ def get_nodes_at(self, line, col):

def view_node(self, node):
"""Returns a representation of a node and its text, such as "Call:foo()". """
return "%s:%s" % (node.__class__.__name__, self.atok.get_text(node))
return "%s:%s" % (get_node_name(node), self.atok.get_text(node))

def view_nodes_at(self, line, col):
"""
Expand Down

0 comments on commit 04e680f

Please sign in to comment.