File: test_openmp_helpers.py

package info (click to toggle)
extension-helpers 1.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 280 kB
  • sloc: python: 1,082; ansic: 69; makefile: 16
file content (48 lines) | stat: -rw-r--r-- 1,578 bytes parent folder | download | duplicates (2)
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