summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2025-09-22 11:41:36 +1000
committerDamien George <damien@micropython.org>2025-09-23 14:13:37 +1000
commitbf08f601fa67f005d5f21095b8fd455f7c7e7fab (patch)
treed224c3168f9ef79a71a066770267711c75ef644e
parent8c389db6ea552a7a5bfcb2de644bc3e8849ef521 (diff)
tests/cmdline: Add tests for using -m combined with sys.atexit.
Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--tests/cmdline/cmd_module_atexit.py16
-rw-r--r--tests/cmdline/cmd_module_atexit.py.exp3
-rw-r--r--tests/cmdline/cmd_module_atexit_exc.py19
-rw-r--r--tests/cmdline/cmd_module_atexit_exc.py.exp3
4 files changed, 41 insertions, 0 deletions
diff --git a/tests/cmdline/cmd_module_atexit.py b/tests/cmdline/cmd_module_atexit.py
new file mode 100644
index 000000000..100bc1127
--- /dev/null
+++ b/tests/cmdline/cmd_module_atexit.py
@@ -0,0 +1,16 @@
+# cmdline: -m cmdline.cmd_module_atexit
+#
+# Test running as a module and using sys.atexit.
+
+import sys
+
+if not hasattr(sys, "atexit"):
+ print("SKIP")
+ raise SystemExit
+
+# Verify we ran as a module.
+print(sys.argv)
+
+sys.atexit(lambda: print("done"))
+
+print("start")
diff --git a/tests/cmdline/cmd_module_atexit.py.exp b/tests/cmdline/cmd_module_atexit.py.exp
new file mode 100644
index 000000000..2a0f756b1
--- /dev/null
+++ b/tests/cmdline/cmd_module_atexit.py.exp
@@ -0,0 +1,3 @@
+['cmdline.cmd_module_atexit', 'cmdline/cmd_module_atexit.py']
+start
+done
diff --git a/tests/cmdline/cmd_module_atexit_exc.py b/tests/cmdline/cmd_module_atexit_exc.py
new file mode 100644
index 000000000..88940a774
--- /dev/null
+++ b/tests/cmdline/cmd_module_atexit_exc.py
@@ -0,0 +1,19 @@
+# cmdline: -m cmdline.cmd_module_atexit_exc
+#
+# Test running as a module and using sys.atexit, with script completion via sys.exit.
+
+import sys
+
+if not hasattr(sys, "atexit"):
+ print("SKIP")
+ raise SystemExit
+
+# Verify we ran as a module.
+print(sys.argv)
+
+sys.atexit(lambda: print("done"))
+
+print("start")
+
+# This will raise SystemExit to finish the script, and atexit should still be run.
+sys.exit(0)
diff --git a/tests/cmdline/cmd_module_atexit_exc.py.exp b/tests/cmdline/cmd_module_atexit_exc.py.exp
new file mode 100644
index 000000000..6320d9d2d
--- /dev/null
+++ b/tests/cmdline/cmd_module_atexit_exc.py.exp
@@ -0,0 +1,3 @@
+['cmdline.cmd_module_atexit_exc', 'cmdline/cmd_module_atexit_exc.py']
+start
+done