1"""Verify that warnings are issued for global statements following use."""
2
3from test.test_support import run_unittest, check_syntax_error
4import unittest
5import warnings
6
7
8class GlobalTests(unittest.TestCase):
9
10    def test1(self):
11        prog_text_1 = """\
12def wrong1():
13    a = 1
14    b = 2
15    global a
16    global b
17"""
18        check_syntax_error(self, prog_text_1)
19
20    def test2(self):
21        prog_text_2 = """\
22def wrong2():
23    print x
24    global x
25"""
26        check_syntax_error(self, prog_text_2)
27
28    def test3(self):
29        prog_text_3 = """\
30def wrong3():
31    print x
32    x = 2
33    global x
34"""
35        check_syntax_error(self, prog_text_3)
36
37    def test4(self):
38        prog_text_4 = """\
39global x
40x = 2
41"""
42        # this should work
43        compile(prog_text_4, "<test string>", "exec")
44
45
46def test_main():
47    with warnings.catch_warnings():
48        warnings.filterwarnings("error", module="<test string>")
49        run_unittest(GlobalTests)
50
51if __name__ == "__main__":
52    test_main()
53