import __future__ import unittest class FLUFLTests(unittest.TestCase): def test_barry_as_bdfl(self): code = "from __future__ import barry_as_FLUFL\n2 {0} 3" compile(code.format('<>'), '', 'exec', __future__.CO_FUTURE_BARRY_AS_BDFL) with self.assertRaises(SyntaxError) as cm: compile(code.format('!='), '', 'exec', __future__.CO_FUTURE_BARRY_AS_BDFL) self.assertRegex(str(cm.exception), "with Barry as BDFL, use '<>' instead of '!='") self.assertEqual(cm.exception.text, '2 != 3\n') self.assertEqual(cm.exception.filename, '') self.assertEqual(cm.exception.lineno, 2) self.assertEqual(cm.exception.offset, 4) def test_guido_as_bdfl(self): code = '2 {0} 3' compile(code.format('!='), '', 'exec') with self.assertRaises(SyntaxError) as cm: compile(code.format('<>'), '', 'exec') self.assertRegex(str(cm.exception), "invalid syntax") self.assertEqual(cm.exception.text, '2 <> 3\n') self.assertEqual(cm.exception.filename, '') self.assertEqual(cm.exception.lineno, 1) self.assertEqual(cm.exception.offset, 4) if __name__ == '__main__': unittest.main()