1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
import os
import types
from importlib import machinery
import pytest
from setuptools import Extension
from .._openmp_helpers import add_openmp_flags_if_available, generate_openmp_enabled_py
@pytest.fixture
def openmp_expected(request):
try:
openmp_expected = request.config.getoption("--openmp-expected")
if openmp_expected is not None:
return openmp_expected.lower() == "true"
except ValueError:
return None
def test_add_openmp_flags_if_available(openmp_expected):
using_openmp = add_openmp_flags_if_available(Extension("test", []))
# Make sure that on Travis (Linux) and AppVeyor OpenMP does get used (for
# MacOS X usually it will not work but this will depend on the compiler).
# Having this is useful because we'll find out if OpenMP no longer works
# for any reason on platforms on which it does work at the time of writing.
if openmp_expected is not None:
assert openmp_expected is using_openmp
def test_generate_openmp_enabled_py(openmp_expected):
# Test file generation
generate_openmp_enabled_py("")
assert os.path.isfile("openmp_enabled.py")
# Load openmp_enabled file as a module to check the result
loader = machinery.SourceFileLoader("openmp_enabled", "openmp_enabled.py")
mod = types.ModuleType(loader.name)
loader.exec_module(mod)
is_openmp_enabled = mod.is_openmp_enabled()
# Test is_openmp_enabled()
assert isinstance(is_openmp_enabled, bool)
if openmp_expected is not None:
assert openmp_expected is is_openmp_enabled
|