Skip to content

Commit 8c4d630

Browse files
authored
Merge pull request #205 from datacamp/fix-has-equal-ast
remove extra Expr root node in has_equal_ast
2 parents e83c02a + 4fccc96 commit 8c4d630

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

pythonwhat/check_funcs.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,13 @@ def has_equal_ast(incorrect_msg="FMT: Your code does not seem to match the solut
422422
"""
423423
rep = Reporter.active_reporter
424424

425-
parse_tree = lambda n: ast.dump(n.body[0] if isinstance(n, ast.Module) and len(n.body) == 1 else n)
425+
def parse_tree(n):
426+
# get contents of module.body if only 1 element
427+
crnt = n.body[0] if isinstance(n, ast.Module) and len(n.body) == 1 else n
426428

429+
# remove Expr if it exists
430+
return ast.dump(crnt.value if isinstance(crnt, ast.Expr) else crnt)
431+
427432
stu_rep = parse_tree(state.student_tree)
428433
sol_rep = parse_tree(state.solution_tree if not code else ast.parse(code))
429434

tests/test_spec.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,15 @@ def test_exact_false_fail(self):
220220
self.data["DC_SCT"] = "Ex().has_equal_ast(exact=False)"
221221
self.failing_submission()
222222

223+
def test_part_of_method_pass(self):
224+
self.data["DC_SCT"] = """Ex().has_equal_ast(code = 'dict(a = "a")', exact=False)"""
225+
sct_payload = helper.run(self.data)
226+
self.assertTrue(sct_payload['correct'])
227+
228+
def test_part_of_method_fail(self):
229+
self.data["DC_SCT"] = """Ex().has_equal_ast(code = 'dict(a = "a")', exact=False)"""
230+
self.failing_submission()
231+
223232
class TestOverride(unittest.TestCase):
224233
"""
225234
This class is used to test overriding w/ correct and incorrect code. Tests are

0 commit comments

Comments
 (0)