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 ast
import tempfile import tempfile
from fractions import Fraction from fractions import Fraction
import pytest
def test_basics(): def test_basics():
@ -50,6 +51,8 @@ def test_import_error_reporting():
assert _import_error_test() is not None assert _import_error_test() is not None
@pytest.mark.skipif(os.environ.get('PYTHONDONTWRITEBYTECODE'),
reason="Bytecode generation is suppressed")
def test_import_autocompiles(): def test_import_autocompiles():
"Test that (import) byte-compiles the module." "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): def run_cmd(cmd, stdin_data=None, expect=0, dontwritebytecode=False):
env = None env = dict(os.environ)
if dontwritebytecode: if dontwritebytecode:
env = dict(os.environ)
env["PYTHONDONTWRITEBYTECODE"] = "1" env["PYTHONDONTWRITEBYTECODE"] = "1"
else:
env.pop("PYTHONDONTWRITEBYTECODE", None)
cmd = shlex.split(cmd) cmd = shlex.split(cmd)
cmd[0] = os.path.join(hy_dir, cmd[0]) cmd[0] = os.path.join(hy_dir, cmd[0])
p = subprocess.Popen(cmd, p = subprocess.Popen(cmd,