blob: abcb193e5eef8ef0c44e9ea1b80cb33603a68eb9 [file] [log] [blame]
Tim Petersfc35de42001-03-02 01:48:16 +00001"""Verify that warnings are issued for global statements following use."""
Jeremy Hylton8e43cd72001-02-28 01:51:01 +00002
Georg Brandlc6fdec62006-10-28 13:10:17 +00003from test.test_support import run_unittest, check_syntax_error
4import unittest
Jeremy Hylton8e43cd72001-02-28 01:51:01 +00005import warnings
Florent Xicluna6257a7b2010-03-31 22:01:03 +00006
Jeremy Hylton8e43cd72001-02-28 01:51:01 +00007
Georg Brandlc6fdec62006-10-28 13:10:17 +00008class GlobalTests(unittest.TestCase):
Jeremy Hylton8e43cd72001-02-28 01:51:01 +00009
Georg Brandlc6fdec62006-10-28 13:10:17 +000010 def test1(self):
11 prog_text_1 = """\
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000012def wrong1():
13 a = 1
14 b = 2
15 global a
16 global b
17"""
Georg Brandlc6fdec62006-10-28 13:10:17 +000018 check_syntax_error(self, prog_text_1)
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000019
Georg Brandlc6fdec62006-10-28 13:10:17 +000020 def test2(self):
21 prog_text_2 = """\
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000022def wrong2():
23 print x
24 global x
25"""
Georg Brandlc6fdec62006-10-28 13:10:17 +000026 check_syntax_error(self, prog_text_2)
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000027
Georg Brandlc6fdec62006-10-28 13:10:17 +000028 def test3(self):
29 prog_text_3 = """\
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000030def wrong3():
31 print x
32 x = 2
33 global x
34"""
Georg Brandlc6fdec62006-10-28 13:10:17 +000035 check_syntax_error(self, prog_text_3)
Jeremy Hylton2922ea82001-02-28 23:49:19 +000036
Georg Brandlc6fdec62006-10-28 13:10:17 +000037 def test4(self):
38 prog_text_4 = """\
Jeremy Hylton2922ea82001-02-28 23:49:19 +000039global x
40x = 2
41"""
Georg Brandlc6fdec62006-10-28 13:10:17 +000042 # this should work
43 compile(prog_text_4, "<test string>", "exec")
44
45
46def test_main():
Florent Xicluna6257a7b2010-03-31 22:01:03 +000047 with warnings.catch_warnings():
48 warnings.filterwarnings("error", module="<test string>")
49 run_unittest(GlobalTests)
Georg Brandlc6fdec62006-10-28 13:10:17 +000050
51if __name__ == "__main__":
52 test_main()