blob: d66473a494affedf93217c77565e92648181ecdf [file] [log] [blame]
#!/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()