Permalink
Browse files

Fix unit tests when ASDL code generation is enabled.

I haven't yet enabled it in osh/ast_.py.
  • Loading branch information...
Andy Chu
Andy Chu committed Dec 15, 2017
1 parent ab08595 commit 75cb52e64d60249ed9a6f01b99c092775e12e77d
Showing with 19 additions and 12 deletions.
  1. +10 −3 core/test_lib.py
  2. +9 −9 osh/word_parse_test.py
View
@@ -24,8 +24,11 @@ def TokenWordsEqual(left, right):
#return left == right
def AsdlEqual(left, right):
"""Check if generated ASDL instances are equal.
We don't use equality in the actual code, so this is relegated to test_lib.
"""
if isinstance(left, (int, str, bool)):
return left == right
@@ -43,8 +46,8 @@ def AsdlEqual(left, right):
for name in left.FIELDS:
# Special case: we are not testing locations right now.
if name == 'span_id':
continue
#if name == 'span_id':
# continue
a = getattr(left, name)
b = getattr(right, name)
if not AsdlEqual(left, right):
@@ -55,6 +58,10 @@ def AsdlEqual(left, right):
raise AssertionError
def AssertAsdlEqual(test, left, right):
test.assertTrue(left, right)
def MakeArena(source_name):
pool = alloc.Pool()
arena = pool.NewArena()
View
@@ -16,7 +16,7 @@
from core import alloc
from core.id_kind import Id
from core import word
from core.test_lib import TokenWordsEqual
from core import test_lib
from osh import ast_ as ast
from osh import parse_lib
@@ -53,7 +53,7 @@ def _assertReadWordWithArena(test, word_str):
# Next word must be \n
w2 = w_parser.ReadWord(lex_mode_e.OUTER)
test.assertTrue(
TokenWordsEqual(
test_lib.TokenWordsEqual(
ast.TokenWord(ast.token(Id.Op_Newline, '\n')),
w2))
@@ -465,31 +465,31 @@ def testMultiLine(self):
print('--MULTI')
w = w_parser.ReadWord(lex_mode_e.OUTER)
parts = [ast.LiteralPart(ast.token(Id.Lit_Chars, 'ls'))]
self.assertEqual(ast.CompoundWord(parts), w)
test_lib.AssertAsdlEqual(self, ast.CompoundWord(parts), w)
w = w_parser.ReadWord(lex_mode_e.OUTER)
parts = [ast.LiteralPart(ast.token(Id.Lit_Chars, 'foo'))]
self.assertEqual(ast.CompoundWord(parts), w)
test_lib.AssertAsdlEqual(self, ast.CompoundWord(parts), w)
w = w_parser.ReadWord(lex_mode_e.OUTER)
t = ast.token(Id.Op_Newline, '\n')
self.assertEqual(ast.TokenWord(t), w)
test_lib.AssertAsdlEqual(self, ast.CompoundWord(parts), w)
w = w_parser.ReadWord(lex_mode_e.OUTER)
parts = [ast.LiteralPart(ast.token(Id.Lit_Chars, 'ls'))]
self.assertEqual(ast.CompoundWord(parts), w)
test_lib.AssertAsdlEqual(self, ast.CompoundWord(parts), w)
w = w_parser.ReadWord(lex_mode_e.OUTER)
parts = [ast.LiteralPart(ast.token(Id.Lit_Chars, 'bar'))]
self.assertEqual(ast.CompoundWord(parts), w)
test_lib.AssertAsdlEqual(self, ast.CompoundWord(parts), w)
w = w_parser.ReadWord(lex_mode_e.OUTER)
t = ast.token(Id.Op_Newline, '\n')
self.assertEqual(ast.TokenWord(t), w)
test_lib.AssertAsdlEqual(self, ast.TokenWord(t), w)
w = w_parser.ReadWord(lex_mode_e.OUTER)
t = ast.token(Id.Eof_Real, '')
self.assertEqual(ast.TokenWord(t), w)
test_lib.AssertAsdlEqual(self, ast.TokenWord(t), w)
def testParseErrorLocation(self):
from core import word

0 comments on commit 75cb52e

Please sign in to comment.