bpo-34008: Allow to call Py_Main() after Py_Initialize() (GH-8043) (GH-8352)

Py_Main() can again be called after Py_Initialize(), as in Python
3.6. The new configuration is ignored, except of
_PyMainInterpreterConfig.argv which is used to update sys.argv.
(cherry picked from commit fb47bca9ee2d07ce96df94b4e4abafd11826eb01)

Co-authored-by: Victor Stinner <vstinner@redhat.com>
diff --git a/Programs/_testembed.c b/Programs/_testembed.c
index b8827f0..b1be682 100644
--- a/Programs/_testembed.c
+++ b/Programs/_testembed.c
@@ -276,6 +276,21 @@
     return 0;
 }
 
+static int test_initialize_pymain(void)
+{
+    wchar_t *argv[] = {L"PYTHON", L"-c",
+                       L"import sys; print(f'Py_Main() after Py_Initialize: sys.argv={sys.argv}')",
+                       L"arg2"};
+    _testembed_Py_Initialize();
+
+    /* bpo-34008: Calling Py_Main() after Py_Initialize() must not crash */
+    Py_Main(Py_ARRAY_LENGTH(argv), argv);
+
+    Py_Finalize();
+
+    return 0;
+}
+
 
 /* *********************************************************
  * List of test cases and the function that implements it.
@@ -302,6 +317,7 @@
     { "pre_initialization_sys_options", test_pre_initialization_sys_options },
     { "bpo20891", test_bpo20891 },
     { "initialize_twice", test_initialize_twice },
+    { "initialize_pymain", test_initialize_pymain },
     { NULL, NULL }
 };