| #!/usr/bin/python2 |
| |
| # Copyright (c) 2020 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from __future__ import print_function |
| |
| import os |
| import sys |
| import tempfile |
| import unittest |
| |
| import seven |
| |
| |
| class TestExecCompileFile(unittest.TestCase): |
| def _remove_tempfile(self): |
| if hasattr(self, "tempfile"): |
| try: |
| os.remove(self.tempfile) |
| except OSError: |
| pass |
| return None |
| |
| def setUp(self): |
| try: |
| with tempfile.NamedTemporaryFile(delete=False) as fh: |
| self.tempfile = fh.name |
| except Exception: # pylint: disable=broad-except |
| self._remove_tempfile() |
| super(TestExecCompileFile, self).setUp() |
| |
| def tearDown(self): |
| super(TestExecCompileFile, self).tearDown() |
| self._remove_tempfile() |
| |
| def testExecSyntaxError(self): |
| with open(self.tempfile, "wb") as fh: |
| fh.write(br"(") |
| |
| try: |
| seven.exec_file( |
| filename=self.tempfile, |
| globals_={}, |
| locals_={}, |
| ) |
| exn = None |
| except Exception as e: # pylint: disable=broad-except |
| exn = e |
| |
| self.assertIsInstance(exn, SyntaxError) |
| |
| def testExecPrint(self): |
| with open(self.tempfile, "wb") as fh: |
| fh.write(br"print 'hi'") |
| |
| try: |
| seven.exec_file( |
| filename=self.tempfile, |
| globals_={}, |
| locals_={}, |
| ) |
| exn = None |
| except Exception as e: # pylint: disable=broad-except |
| exn = e |
| |
| if sys.version_info[0] <= 2: |
| self.assertIsNone(exn) |
| else: |
| self.assertIsInstance(exn, SyntaxError) |
| |
| def testExecPrintWithFutureImport(self): |
| with open(self.tempfile, "wb") as fh: |
| fh.write(br"from __future__ import print_function; print 'hi'") |
| |
| try: |
| seven.exec_file( |
| filename=self.tempfile, |
| globals_={}, |
| locals_={}, |
| ) |
| exn = None |
| except Exception as e: # pylint: disable=broad-except |
| exn = e |
| |
| self.assertIsInstance(exn, SyntaxError) |
| |
| |
| if __name__ == "__main__": |
| unittest.main() |