| """Verify that warnings are issued for global statements following use.""" | |
| from test.test_support import run_unittest, check_syntax_error | |
| import unittest | |
| import warnings | |
| class GlobalTests(unittest.TestCase): | |
| def test1(self): | |
| prog_text_1 = """\ | |
| def wrong1(): | |
| a = 1 | |
| b = 2 | |
| global a | |
| global b | |
| """ | |
| check_syntax_error(self, prog_text_1) | |
| def test2(self): | |
| prog_text_2 = """\ | |
| def wrong2(): | |
| print x | |
| global x | |
| """ | |
| check_syntax_error(self, prog_text_2) | |
| def test3(self): | |
| prog_text_3 = """\ | |
| def wrong3(): | |
| print x | |
| x = 2 | |
| global x | |
| """ | |
| check_syntax_error(self, prog_text_3) | |
| def test4(self): | |
| prog_text_4 = """\ | |
| global x | |
| x = 2 | |
| """ | |
| # this should work | |
| compile(prog_text_4, "<test string>", "exec") | |
| def test_main(): | |
| with warnings.catch_warnings(): | |
| warnings.filterwarnings("error", module="<test string>") | |
| run_unittest(GlobalTests) | |
| if __name__ == "__main__": | |
| test_main() |