|
4 | 4 | import tempfile
|
5 | 5 | import subprocess
|
6 | 6 | from unittest import TestCase
|
| 7 | +from unittest import mock |
7 | 8 |
|
8 | 9 | import rsconnect.environment
|
9 | 10 | from rsconnect.exception import RSConnectException
|
@@ -270,3 +271,37 @@ def fake_inspect_environment(
|
270 | 271 |
|
271 | 272 | assert environment.python_interpreter == expected_python
|
272 | 273 | assert environment == expected_environment
|
| 274 | + |
| 275 | +class TestEnvironmentDeprecations: |
| 276 | + def test_override_python_version(self): |
| 277 | + with mock.patch.object(rsconnect.environment.logger, "warning") as mock_warning: |
| 278 | + result = Environment.create_python_environment(get_dir("pip1"), override_python_version=None) |
| 279 | + assert mock_warning.call_count == 0 |
| 280 | + assert result.python_version_requirement is None |
| 281 | + |
| 282 | + with mock.patch.object(rsconnect.environment.logger, "warning") as mock_warning: |
| 283 | + result = Environment.create_python_environment(get_dir("pip1"), override_python_version="3.8") |
| 284 | + assert mock_warning.call_count == 1 |
| 285 | + mock_warning.assert_called_once_with( |
| 286 | + "The --override-python-version option is deprecated, " |
| 287 | + "please use a .python-version file to force a specific interpreter version." |
| 288 | + ) |
| 289 | + assert result.python_version_requirement == "==3.8" |
| 290 | + |
| 291 | + def test_python_interpreter(self): |
| 292 | + current_python_version = ".".join((str(v) for v in sys.version_info[:3])) |
| 293 | + |
| 294 | + with mock.patch.object(rsconnect.environment.logger, "warning") as mock_warning: |
| 295 | + result = Environment.create_python_environment(get_dir("pip1")) |
| 296 | + assert mock_warning.call_count == 0 |
| 297 | + assert result.python == current_python_version |
| 298 | + |
| 299 | + with mock.patch.object(rsconnect.environment.logger, "warning") as mock_warning: |
| 300 | + result = Environment.create_python_environment(get_dir("pip1"), python=sys.executable) |
| 301 | + assert mock_warning.call_count == 1 |
| 302 | + mock_warning.assert_called_once_with( |
| 303 | + "On modern Posit Connect versions, the --python option won't influence " |
| 304 | + "the Python version used to deploy the application anymore. " |
| 305 | + "Please use a .python-version file to force a specific interpreter version." |
| 306 | + ) |
| 307 | + assert result.python == current_python_version |
0 commit comments