From d3e94b3df5026f36a8d49ff6510e46567f5d68fc Mon Sep 17 00:00:00 2001 From: Padraic Fanning Date: Thu, 4 Mar 2021 12:41:55 -0500 Subject: [PATCH] Add test_keyword from CPython 3.8 --- Lib/test/test_keyword.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Lib/test/test_keyword.py diff --git a/Lib/test/test_keyword.py b/Lib/test/test_keyword.py new file mode 100644 index 000000000..3e2a8b3fb --- /dev/null +++ b/Lib/test/test_keyword.py @@ -0,0 +1,37 @@ +import keyword +import unittest + + +class Test_iskeyword(unittest.TestCase): + def test_true_is_a_keyword(self): + self.assertTrue(keyword.iskeyword('True')) + + def test_uppercase_true_is_not_a_keyword(self): + self.assertFalse(keyword.iskeyword('TRUE')) + + def test_none_value_is_not_a_keyword(self): + self.assertFalse(keyword.iskeyword(None)) + + # This is probably an accident of the current implementation, but should be + # preserved for backward compatibility. + def test_changing_the_kwlist_does_not_affect_iskeyword(self): + oldlist = keyword.kwlist + self.addCleanup(setattr, keyword, 'kwlist', oldlist) + keyword.kwlist = ['its', 'all', 'eggs', 'beans', 'and', 'a', 'slice'] + self.assertFalse(keyword.iskeyword('eggs')) + + def test_all_keywords_fail_to_be_used_as_names(self): + for key in keyword.kwlist: + with self.assertRaises(SyntaxError): + exec(f"{key} = 42") + + def test_async_and_await_are_keywords(self): + self.assertIn("async", keyword.kwlist) + self.assertIn("await", keyword.kwlist) + + def test_keywords_are_sorted(self): + self.assertListEqual(sorted(keyword.kwlist), keyword.kwlist) + + +if __name__ == "__main__": + unittest.main()