|
1 | 1 | """
|
2 | 2 | Test config options.
|
3 | 3 | """
|
| 4 | +import logging |
| 5 | +from unittest.mock import patch |
4 | 6 |
|
| 7 | +from theano.configdefaults import default_blas_ldflags |
5 | 8 | from theano.configparser import THEANO_FLAGS_DICT, AddConfigVar, ConfigParam
|
6 | 9 |
|
7 | 10 |
|
8 |
| -class TestConfig: |
9 |
| - def test_invalid_default(self): |
10 |
| - # Ensure an invalid default value found in the Theano code only causes |
11 |
| - # a crash if it is not overridden by the user. |
12 |
| - |
13 |
| - def filter(val): |
14 |
| - if val == "invalid": |
15 |
| - raise ValueError() |
16 |
| - else: |
17 |
| - return val |
18 |
| - |
19 |
| - try: |
20 |
| - # This should raise a ValueError because the default value is |
21 |
| - # invalid. |
22 |
| - AddConfigVar( |
23 |
| - "T_config.test_invalid_default_a", |
24 |
| - doc="unittest", |
25 |
| - configparam=ConfigParam("invalid", filter=filter), |
26 |
| - in_c_key=False, |
27 |
| - ) |
28 |
| - raise AssertionError() |
29 |
| - except ValueError: |
30 |
| - pass |
31 |
| - |
32 |
| - THEANO_FLAGS_DICT["T_config.test_invalid_default_b"] = "ok" |
33 |
| - # This should succeed since we defined a proper value, even |
34 |
| - # though the default was invalid. |
| 11 | +def test_invalid_default(): |
| 12 | + # Ensure an invalid default value found in the Theano code only causes |
| 13 | + # a crash if it is not overridden by the user. |
| 14 | + |
| 15 | + def filter(val): |
| 16 | + if val == "invalid": |
| 17 | + raise ValueError() |
| 18 | + else: |
| 19 | + return val |
| 20 | + |
| 21 | + try: |
| 22 | + # This should raise a ValueError because the default value is |
| 23 | + # invalid. |
35 | 24 | AddConfigVar(
|
36 |
| - "T_config.test_invalid_default_b", |
| 25 | + "T_config.test_invalid_default_a", |
37 | 26 | doc="unittest",
|
38 | 27 | configparam=ConfigParam("invalid", filter=filter),
|
39 | 28 | in_c_key=False,
|
40 | 29 | )
|
| 30 | + raise AssertionError() |
| 31 | + except ValueError: |
| 32 | + pass |
| 33 | + |
| 34 | + THEANO_FLAGS_DICT["T_config.test_invalid_default_b"] = "ok" |
| 35 | + # This should succeed since we defined a proper value, even |
| 36 | + # though the default was invalid. |
| 37 | + AddConfigVar( |
| 38 | + "T_config.test_invalid_default_b", |
| 39 | + doc="unittest", |
| 40 | + configparam=ConfigParam("invalid", filter=filter), |
| 41 | + in_c_key=False, |
| 42 | + ) |
| 43 | + |
| 44 | + # Check that the flag has been removed |
| 45 | + assert "T_config.test_invalid_default_b" not in THEANO_FLAGS_DICT |
| 46 | + |
| 47 | + # TODO We should remove these dummy options on test exit. |
| 48 | + |
| 49 | + |
| 50 | +@patch("theano.configdefaults.try_blas_flag", return_value=None) |
| 51 | +@patch("theano.configdefaults.sys") |
| 52 | +def test_default_blas_ldflags(sys_mock, try_blas_flag_mock, caplog): |
| 53 | + |
| 54 | + sys_mock.version = "3.8.0 | packaged by conda-forge | (default, Nov 22 2019, 19:11:38) \n[GCC 7.3.0]" |
41 | 55 |
|
42 |
| - # Check that the flag has been removed |
43 |
| - assert "T_config.test_invalid_default_b" not in THEANO_FLAGS_DICT |
| 56 | + with patch.dict("sys.modules", {"mkl": None}): |
| 57 | + with caplog.at_level(logging.WARNING): |
| 58 | + default_blas_ldflags() |
44 | 59 |
|
45 |
| - # TODO We should remove these dummy options on test exit. |
| 60 | + assert "install mkl with" in caplog.text |
0 commit comments