From 411a5d6f8f0653dbc59a5574ea943de6fe853382 Mon Sep 17 00:00:00 2001 From: Eclips4 Date: Thu, 23 Feb 2023 01:10:52 +0200 Subject: [PATCH 1/3] gh-102158: Add tests for softkwlist --- Lib/test/test_keyword.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_keyword.py b/Lib/test/test_keyword.py index 3e2a8b3fb7f4c3..0db35de5076495 100644 --- a/Lib/test/test_keyword.py +++ b/Lib/test/test_keyword.py @@ -20,17 +20,34 @@ def test_changing_the_kwlist_does_not_affect_iskeyword(self): keyword.kwlist = ['its', 'all', 'eggs', 'beans', 'and', 'a', 'slice'] self.assertFalse(keyword.iskeyword('eggs')) + def test_changing_the_softkwlist_does_not_affect_issoftkeyword(self): + oldlist = keyword.softkwlist + self.addCleanup(setattr, keyword, "softkwlist", oldlist) + keyword.softkwlist = ["foo", "bar", "spam", "egs", "case"] + self.assertFalse(keyword.issoftkeyword("spam")) + 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_all_soft_keywords_can_be_used_as_names(self): + for key in keyword.softkwlist: + exec(f"{key} = 42") + def test_async_and_await_are_keywords(self): self.assertIn("async", keyword.kwlist) self.assertIn("await", keyword.kwlist) + def test_match_and_case_are_soft_keywords(self): + self.assertIn("match", keyword.softkwlist) + self.assertIn("case", keyword.softkwlist) + def test_keywords_are_sorted(self): - self.assertListEqual(sorted(keyword.kwlist), keyword.kwlist) + self.assertSequenceEqual(sorted(keyword.kwlist), keyword.kwlist) + + def test_softkeywords_are_sorted(self): + self.assertSequenceEqual(sorted(keyword.softkwlist), keyword.softkwlist) if __name__ == "__main__": From 87d1c91a5dc9f27bdeac0bee3949fc6fcdf8600f Mon Sep 17 00:00:00 2001 From: Eclips4 <80244920+Eclips4@users.noreply.github.com> Date: Thu, 23 Feb 2023 11:39:30 +0300 Subject: [PATCH 2/3] Add check for presense of `_` in `keyword.softkwlist` Co-authored-by: Terry Jan Reedy --- Lib/test/test_keyword.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_keyword.py b/Lib/test/test_keyword.py index 0db35de5076495..456b0e81402885 100644 --- a/Lib/test/test_keyword.py +++ b/Lib/test/test_keyword.py @@ -42,7 +42,7 @@ def test_async_and_await_are_keywords(self): def test_match_and_case_are_soft_keywords(self): self.assertIn("match", keyword.softkwlist) self.assertIn("case", keyword.softkwlist) - + self.assertIn("_", keyword.softkwlist) def test_keywords_are_sorted(self): self.assertSequenceEqual(sorted(keyword.kwlist), keyword.kwlist) From a2cf9f4f7851698ef68524cb5c3d7aa5f0b33b1e Mon Sep 17 00:00:00 2001 From: Eclips4 Date: Thu, 23 Feb 2023 14:36:33 +0200 Subject: [PATCH 3/3] Add newline, revert usage of ssertListEqual --- Lib/test/test_keyword.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_keyword.py b/Lib/test/test_keyword.py index 456b0e81402885..f329f88fa01d51 100644 --- a/Lib/test/test_keyword.py +++ b/Lib/test/test_keyword.py @@ -43,11 +43,12 @@ def test_match_and_case_are_soft_keywords(self): self.assertIn("match", keyword.softkwlist) self.assertIn("case", keyword.softkwlist) self.assertIn("_", keyword.softkwlist) + def test_keywords_are_sorted(self): - self.assertSequenceEqual(sorted(keyword.kwlist), keyword.kwlist) + self.assertListEqual(sorted(keyword.kwlist), keyword.kwlist) def test_softkeywords_are_sorted(self): - self.assertSequenceEqual(sorted(keyword.softkwlist), keyword.softkwlist) + self.assertListEqual(sorted(keyword.softkwlist), keyword.softkwlist) if __name__ == "__main__":