bpo-40413: test_embed tests calling Py_RunMain() multiple times (GH-28466)


Calling Py_InitializeFromConfig()+Py_RunMain() multiple times must
not crash.

Cleanup also test_get_argc_argv().
(cherry picked from commit 5e2c32e08ed77081cabd9d51f0589f81c1572732)

Co-authored-by: Victor Stinner <vstinner@python.org>
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 479d712..0a66e7f 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -311,6 +311,14 @@ def test_run_main(self):
         self.assertEqual(out.rstrip(), "Py_RunMain(): sys.argv=['-c', 'arg2']")
         self.assertEqual(err, '')
 
+    def test_run_main_loop(self):
+        # bpo-40413: Calling Py_InitializeFromConfig()+Py_RunMain() multiple
+        # times must not crash.
+        nloop = 5
+        out, err = self.run_embedded_interpreter("test_run_main_loop")
+        self.assertEqual(out, "Py_RunMain(): sys.argv=['-c', 'arg2']\n" * nloop)
+        self.assertEqual(err, '')
+
 
 class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
     maxDiff = 4096