Fix unit tests when run with PYTHONDONTWRITEBYTECODE

When set, it will conflict with any tests that generate bytecode
because they don't expect it to be set.

Fixable by sanitize the environment before forking, but we can't do
anything about import tests.

This is a pipenv default, and possibly a sane flag to set while doing
Hy development, so lets not let it be a hazard for developers to trip
over.
This commit is contained in:
Simon Gomizelj 2018-03-31 02:51:48 -04:00 committed by Kodi Arfer
parent cef105edcd
commit fa54884131
2 changed files with 7 additions and 2 deletions

View File

@ -10,6 +10,7 @@ import os
import ast
import tempfile
from fractions import Fraction
import pytest
def test_basics():
@ -50,6 +51,8 @@ def test_import_error_reporting():
assert _import_error_test() is not None
@pytest.mark.skipif(os.environ.get('PYTHONDONTWRITEBYTECODE'),
reason="Bytecode generation is suppressed")
def test_import_autocompiles():
"Test that (import) byte-compiles the module."

View File

@ -24,10 +24,12 @@ def hr(s=""):
def run_cmd(cmd, stdin_data=None, expect=0, dontwritebytecode=False):
env = None
env = dict(os.environ)
if dontwritebytecode:
env = dict(os.environ)
env["PYTHONDONTWRITEBYTECODE"] = "1"
else:
env.pop("PYTHONDONTWRITEBYTECODE", None)
cmd = shlex.split(cmd)
cmd[0] = os.path.join(hy_dir, cmd[0])
p = subprocess.Popen(cmd,