PythonExtra/tests/basics/builtin_compile.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

46 lines
859 B
Python
Raw Permalink Normal View History

2014-10-25 23:07:09 +02:00
# test compile builtin
try:
compile
except NameError:
print("SKIP")
raise SystemExit
def test():
global x
c = compile("print(x)", "file", "exec")
try:
exec(c)
except NameError:
print("NameError")
2014-10-25 23:07:09 +02:00
# global variable for compiled code to access
x = 1
2014-10-25 23:07:09 +02:00
exec(c)
exec(c, {"x":2})
exec(c, {}, {"x":3})
2014-10-25 23:07:09 +02:00
# single/eval mode
exec(compile("if 1: 10 + 1\n", "file", "single"))
exec(compile("print(10 + 2)", "file", "single"))
print(eval(compile("10 + 3", "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
test()