Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-42882: Add test_embed.test_unicode_id_init() #24198

Merged
merged 1 commit into from Jan 12, 2021
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -1472,5 +1472,11 @@ def test_audit_run_stdin(self):
timeout=support.SHORT_TIMEOUT,
returncode=1)

class MiscTests(EmbeddingTestsMixin, unittest.TestCase):
def test_unicode_id_init(self):
# bpo-42882: Test that _PyUnicode_FromId() works
# when Python is initialized multiples times.
self.run_embedded_interpreter("test_unicode_id_init")

if __name__ == "__main__":
unittest.main()
@@ -1686,6 +1686,42 @@ static int test_get_argc_argv(void)
}


static int test_unicode_id_init(void)
{
// bpo-42882: Test that _PyUnicode_FromId() works
// when Python is initialized multiples times.
_Py_IDENTIFIER(test_unicode_id_init);

// Initialize Python once without using the identifier
_testembed_Py_Initialize();
Py_Finalize();

// Now initialize Python multiple times and use the identifier.
// The first _PyUnicode_FromId() call initializes the identifier index.
for (int i=0; i<3; i++) {
_testembed_Py_Initialize();

PyObject *str1, *str2;

str1 = _PyUnicode_FromId(&PyId_test_unicode_id_init);
assert(str1 != NULL);
assert(Py_REFCNT(str1) == 1);

str2 = PyUnicode_FromString("test_unicode_id_init");
assert(str2 != NULL);

assert(PyUnicode_Compare(str1, str2) == 0);

// str1 is a borrowed reference
Py_DECREF(str2);

Py_Finalize();
}
return 0;
}



/* *********************************************************
* List of test cases and the function that implements it.
*
@@ -1754,6 +1790,8 @@ static struct TestCase TestCases[] = {
{"test_audit_run_interactivehook", test_audit_run_interactivehook},
{"test_audit_run_startup", test_audit_run_startup},
{"test_audit_run_stdin", test_audit_run_stdin},

{"test_unicode_id_init", test_unicode_id_init},
{NULL, NULL}
};

ProTip! Use n and p to navigate between commits in a pull request.