1import keyword 2import unittest 3 4 5class Test_iskeyword(unittest.TestCase): 6 def test_true_is_a_keyword(self): 7 self.assertTrue(keyword.iskeyword('True')) 8 9 def test_uppercase_true_is_not_a_keyword(self): 10 self.assertFalse(keyword.iskeyword('TRUE')) 11 12 def test_none_value_is_not_a_keyword(self): 13 self.assertFalse(keyword.iskeyword(None)) 14 15 # This is probably an accident of the current implementation, but should be 16 # preserved for backward compatibility. 17 def test_changing_the_kwlist_does_not_affect_iskeyword(self): 18 oldlist = keyword.kwlist 19 self.addCleanup(setattr, keyword, 'kwlist', oldlist) 20 keyword.kwlist = ['its', 'all', 'eggs', 'beans', 'and', 'a', 'slice'] 21 self.assertFalse(keyword.iskeyword('eggs')) 22 23 def test_changing_the_softkwlist_does_not_affect_issoftkeyword(self): 24 oldlist = keyword.softkwlist 25 self.addCleanup(setattr, keyword, "softkwlist", oldlist) 26 keyword.softkwlist = ["foo", "bar", "spam", "egs", "case"] 27 self.assertFalse(keyword.issoftkeyword("spam")) 28 29 def test_all_keywords_fail_to_be_used_as_names(self): 30 for key in keyword.kwlist: 31 with self.assertRaises(SyntaxError): 32 exec(f"{key} = 42") 33 34 def test_all_soft_keywords_can_be_used_as_names(self): 35 for key in keyword.softkwlist: 36 exec(f"{key} = 42") 37 38 def test_async_and_await_are_keywords(self): 39 self.assertIn("async", keyword.kwlist) 40 self.assertIn("await", keyword.kwlist) 41 42 def test_match_and_case_are_soft_keywords(self): 43 self.assertIn("match", keyword.softkwlist) 44 self.assertIn("case", keyword.softkwlist) 45 self.assertIn("_", keyword.softkwlist) 46 47 def test_keywords_are_sorted(self): 48 self.assertListEqual(sorted(keyword.kwlist), keyword.kwlist) 49 50 def test_softkeywords_are_sorted(self): 51 self.assertListEqual(sorted(keyword.softkwlist), keyword.softkwlist) 52 53 54if __name__ == "__main__": 55 unittest.main() 56