diff --git a/tests/basics/builtin_compile.py b/tests/basics/builtin_compile.py
index b6f65a2fa319e7aecf78c6123567b5d99abf9e1e..ef3ff014d49af580711bfea5a09405582a8d4388 100644
--- a/tests/basics/builtin_compile.py
+++ b/tests/basics/builtin_compile.py
@@ -1,21 +1,29 @@
 # test compile builtin
 
-try:
-    compile
-except NameError:
-    print("SKIP")
-    import sys
-    sys.exit()
+def have_compile():
+    try:
+        compile
+        return True
+    except NameError:
+        return False
+
+# global variable for compiled code to access
+x = 1
 
-c = compile("print(x)", "file", "exec")
+def test():
+    c = compile("print(x)", "file", "exec")
+
+    try:
+        exec(c)
+    except NameError:
+        print("NameError")
 
-try:
     exec(c)
-except NameError:
-    print("NameError")
 
-x = 1
-exec(c)
+    exec(c, {"x":2})
+    exec(c, {}, {"x":3})
 
-exec(c, {"x":2})
-exec(c, {}, {"x":3})
+if have_compile():
+    test()
+else:
+    print("SKIP")