micropython/tests/basics/builtin_compile.py

50 lines
905 B
Python

# test compile builtin
def have_compile():
try:
compile
return True
except NameError:
return False
def test():
global x
c = compile("print(x)", "file", "exec")
try:
exec(c)
except NameError:
print("NameError")
# global variable for compiled code to access
x = 1
exec(c)
exec(c, {"x":2})
exec(c, {}, {"x":3})
# single/eval mode
exec(compile('print(1 + 1)', 'file', 'single'))
print(eval(compile('1 + 1', 'file', 'eval')))
# bad mode
try:
compile('1', 'file', '')
except ValueError:
print("ValueError")
# exception within compiled code
try:
exec(compile('noexist', 'file', 'exec'))
except NameError:
print("NameError")
print(x) # check 'x' still exists as a global
if have_compile():
test()
else:
print("SKIP")
raise SystemExit