xref: /third_party/python/Lib/test/test_flufl.py (revision 7db96d56)
17db96d56Sopenharmony_ciimport __future__
27db96d56Sopenharmony_ciimport unittest
37db96d56Sopenharmony_cifrom test import support
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_ciclass FLUFLTests(unittest.TestCase):
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ci    def test_barry_as_bdfl(self):
97db96d56Sopenharmony_ci        code = "from __future__ import barry_as_FLUFL\n2 {0} 3"
107db96d56Sopenharmony_ci        compile(code.format('<>'), '<BDFL test>', 'exec',
117db96d56Sopenharmony_ci                __future__.CO_FUTURE_BARRY_AS_BDFL)
127db96d56Sopenharmony_ci        with self.assertRaises(SyntaxError) as cm:
137db96d56Sopenharmony_ci            compile(code.format('!='), '<FLUFL test>', 'exec',
147db96d56Sopenharmony_ci                    __future__.CO_FUTURE_BARRY_AS_BDFL)
157db96d56Sopenharmony_ci        self.assertRegex(str(cm.exception),
167db96d56Sopenharmony_ci                         "with Barry as BDFL, use '<>' instead of '!='")
177db96d56Sopenharmony_ci        self.assertIn('2 != 3', cm.exception.text)
187db96d56Sopenharmony_ci        self.assertEqual(cm.exception.filename, '<FLUFL test>')
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ci        self.assertEqual(cm.exception.lineno, 2)
217db96d56Sopenharmony_ci        # The old parser reports the end of the token and the new
227db96d56Sopenharmony_ci        # parser reports the start of the token
237db96d56Sopenharmony_ci        self.assertEqual(cm.exception.offset, 3)
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ci    def test_guido_as_bdfl(self):
267db96d56Sopenharmony_ci        code = '2 {0} 3'
277db96d56Sopenharmony_ci        compile(code.format('!='), '<BDFL test>', 'exec')
287db96d56Sopenharmony_ci        with self.assertRaises(SyntaxError) as cm:
297db96d56Sopenharmony_ci            compile(code.format('<>'), '<FLUFL test>', 'exec')
307db96d56Sopenharmony_ci        self.assertRegex(str(cm.exception), "invalid syntax")
317db96d56Sopenharmony_ci        self.assertIn('2 <> 3', cm.exception.text)
327db96d56Sopenharmony_ci        self.assertEqual(cm.exception.filename, '<FLUFL test>')
337db96d56Sopenharmony_ci        self.assertEqual(cm.exception.lineno, 1)
347db96d56Sopenharmony_ci        # The old parser reports the end of the token and the new
357db96d56Sopenharmony_ci        # parser reports the start of the token
367db96d56Sopenharmony_ci        self.assertEqual(cm.exception.offset, 3)
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci
397db96d56Sopenharmony_ciif __name__ == '__main__':
407db96d56Sopenharmony_ci    unittest.main()
41