blob: 823f2c544d21adfeea8d26f81c3e86144a7d0c83 [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
Benjamin Petersonee8712c2008-05-20 21:35:26 +00003from test.support import run_unittest, check_syntax_error
Thomas Wouters89f507f2006-12-13 04:49:30 +00004import unittest
Jeremy Hylton8e43cd72001-02-28 01:51:01 +00005
6import warnings
Thomas Wouters89f507f2006-12-13 04:49:30 +00007warnings.filterwarnings("error", module="<test string>")
Jeremy Hylton8e43cd72001-02-28 01:51:01 +00008
Thomas Wouters89f507f2006-12-13 04:49:30 +00009class GlobalTests(unittest.TestCase):
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000010
Thomas Wouters89f507f2006-12-13 04:49:30 +000011 def test1(self):
12 prog_text_1 = """\
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000013def wrong1():
14 a = 1
15 b = 2
16 global a
17 global b
18"""
Thomas Wouters89f507f2006-12-13 04:49:30 +000019 check_syntax_error(self, prog_text_1)
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000020
Thomas Wouters89f507f2006-12-13 04:49:30 +000021 def test2(self):
22 prog_text_2 = """\
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000023def wrong2():
Neal Norwitz752abd02008-05-13 04:55:24 +000024 print(x)
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000025 global x
26"""
Thomas Wouters89f507f2006-12-13 04:49:30 +000027 check_syntax_error(self, prog_text_2)
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000028
Thomas Wouters89f507f2006-12-13 04:49:30 +000029 def test3(self):
30 prog_text_3 = """\
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000031def wrong3():
Neal Norwitz752abd02008-05-13 04:55:24 +000032 print(x)
Jeremy Hylton8e43cd72001-02-28 01:51:01 +000033 x = 2
34 global x
35"""
Thomas Wouters89f507f2006-12-13 04:49:30 +000036 check_syntax_error(self, prog_text_3)
Jeremy Hylton2922ea82001-02-28 23:49:19 +000037
Thomas Wouters89f507f2006-12-13 04:49:30 +000038 def test4(self):
39 prog_text_4 = """\
Jeremy Hylton2922ea82001-02-28 23:49:19 +000040global x
41x = 2
42"""
Thomas Wouters89f507f2006-12-13 04:49:30 +000043 # this should work
44 compile(prog_text_4, "<test string>", "exec")
45
46
47def test_main():
48 run_unittest(GlobalTests)
49
50if __name__ == "__main__":
51 test_main()