#!/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()