2014-10-25 22:07:09 +01:00
|
|
|
# test compile builtin
|
|
|
|
|
2020-08-21 01:30:09 +01:00
|
|
|
try:
|
|
|
|
compile
|
|
|
|
except NameError:
|
|
|
|
print("SKIP")
|
|
|
|
raise SystemExit
|
2014-10-26 15:38:28 +00:00
|
|
|
|
|
|
|
def test():
|
2015-04-04 22:05:30 +01:00
|
|
|
global x
|
|
|
|
|
2014-10-26 15:38:28 +00:00
|
|
|
c = compile("print(x)", "file", "exec")
|
|
|
|
|
|
|
|
try:
|
|
|
|
exec(c)
|
|
|
|
except NameError:
|
|
|
|
print("NameError")
|
2014-10-25 22:07:09 +01:00
|
|
|
|
2015-04-04 22:05:30 +01:00
|
|
|
# global variable for compiled code to access
|
|
|
|
x = 1
|
|
|
|
|
2014-10-25 22:07:09 +01:00
|
|
|
exec(c)
|
|
|
|
|
2014-10-26 15:38:28 +00:00
|
|
|
exec(c, {"x":2})
|
|
|
|
exec(c, {}, {"x":3})
|
2014-10-25 22:07:09 +01:00
|
|
|
|
2015-04-04 22:05:30 +01:00
|
|
|
# single/eval mode
|
2020-08-21 01:30:09 +01:00
|
|
|
exec(compile("if 1: 10 + 1\n", "file", "single"))
|
|
|
|
exec(compile("print(10 + 2)", "file", "single"))
|
|
|
|
print(eval(compile("10 + 3", "file", "eval")))
|
2015-04-04 22:05:30 +01:00
|
|
|
|
|
|
|
# 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
|
|
|
|
|
2020-08-21 01:30:09 +01:00
|
|
|
test()
|