From dea35985c1490728a5a4dd5032ee22bae34b6ddd Mon Sep 17 00:00:00 2001 From: Ilenia <26656284+ilenia-magoni@users.noreply.github.com> Date: Tue, 7 May 2024 10:32:13 +0200 Subject: [PATCH] fix: test catch if function is empty (#54597) --- .../656479aa5f298441c190bf8f.md | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/curriculum/challenges/english/07-scientific-computing-with-python/learn-regular-expressions-by-building-a-password-generator/656479aa5f298441c190bf8f.md b/curriculum/challenges/english/07-scientific-computing-with-python/learn-regular-expressions-by-building-a-password-generator/656479aa5f298441c190bf8f.md index 98227cdc3fd..afa1a2a4965 100644 --- a/curriculum/challenges/english/07-scientific-computing-with-python/learn-regular-expressions-by-building-a-password-generator/656479aa5f298441c190bf8f.md +++ b/curriculum/challenges/english/07-scientific-computing-with-python/learn-regular-expressions-by-building-a-password-generator/656479aa5f298441c190bf8f.md @@ -14,10 +14,36 @@ dashedName: step-13 You should declare a function named `generate_password`. ```js -({ test: () => assert(__pyodide.runPython(` - import inspect - generate_psw = __locals.get("generate_password") - inspect.isfunction(generate_psw) +({ + test: () => assert(runPython(` + _Node(_code).has_function('generate_password') + `)) +}) +``` + +The import statements should still be outside the function. + +```js +({ + test: () => assert(runPython(` + imports_list = _Node(_code).find_imports() + any([imp.is_equivalent('import secrets') for imp in imports_list]) and any([imp.is_equivalent('import string') for imp in imports_list]) + `)) +}) +``` + +The four variable declarations should be moved inside the function. + +```js +({ + test: () => assert(runPython(` + func = _Node(_code).find_function('generate_password') + vars = ['letters', 'digits', 'symbols', 'all_characters'] + func.find_variable('letters').is_equivalent('letters = string.ascii_letters') and \\ + func.find_variable('digits').is_equivalent('digits = string.digits') and \\ + func.find_variable('symbols').is_equivalent('symbols = string.punctuation') and \\ + func.find_variable('all_characters').is_equivalent('all_characters = letters + digits + symbols') and \\ + all(not _Node(_code).has_variable(var) for var in vars) `)) }) ```