|
4 | 4 | import string |
5 | 5 | import sys |
6 | 6 |
|
7 | | -from mock import patch |
| 7 | +from mock import MagicMock, patch |
8 | 8 |
|
9 | 9 | from runway.util import MutableMap, argv, environ, load_object_from_string |
10 | 10 |
|
@@ -124,3 +124,36 @@ def test_load_object_from_string(): |
124 | 124 | ) |
125 | 125 | for test in tests: |
126 | 126 | assert load_object_from_string(test[0]) is test[1] |
| 127 | + |
| 128 | + obj_path = 'tests.fixtures.mock_hooks.GLOBAL_VALUE' |
| 129 | + # check value from os.environ |
| 130 | + assert load_object_from_string(obj_path, try_reload=True) == 'us-east-1' |
| 131 | + |
| 132 | + with environ({'AWS_DEFAULT_REGION': 'us-west-2'}): |
| 133 | + # check value from os.environ after changing it to ensure reload |
| 134 | + assert load_object_from_string(obj_path, try_reload=True) == 'us-west-2' |
| 135 | + |
| 136 | + |
| 137 | +@patch('runway.util.six') |
| 138 | +def test_load_object_from_string_reload_conditions(mock_six): |
| 139 | + """Test load_object_from_string reload conditions.""" |
| 140 | + mock_six.moves.reload_module.return_value = MagicMock() |
| 141 | + builtin_test = 'sys.version_info' |
| 142 | + mock_hook = 'tests.fixtures.mock_hooks.GLOBAL_VALUE' |
| 143 | + |
| 144 | + try: |
| 145 | + del sys.modules['tests.fixtures.mock_hooks'] |
| 146 | + except: # noqa pylint: disable=bare-except |
| 147 | + pass |
| 148 | + |
| 149 | + load_object_from_string(builtin_test, try_reload=False) |
| 150 | + mock_six.moves.reload_module.assert_not_called() |
| 151 | + |
| 152 | + load_object_from_string(builtin_test, try_reload=True) |
| 153 | + mock_six.moves.reload_module.assert_not_called() |
| 154 | + |
| 155 | + load_object_from_string(mock_hook, try_reload=True) |
| 156 | + mock_six.moves.reload_module.assert_not_called() |
| 157 | + |
| 158 | + load_object_from_string(mock_hook, try_reload=True) |
| 159 | + mock_six.moves.reload_module.assert_called_once() |
0 commit comments