File: test_end_of_life.py

package info (click to toggle)
python-briefcase 0.3.25-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,596 kB
  • sloc: python: 62,519; makefile: 60
file content (42 lines) | stat: -rw-r--r-- 1,366 bytes parent folder | download
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
import sys
from collections import namedtuple
from datetime import datetime
from unittest import mock

import pytest

import briefcase


def _create_version_info(major, minor, patch=0):
    Version = namedtuple("Version", "major minor patch")
    return Version(major, minor, patch)


@pytest.mark.parametrize(
    "minor_version, today, is_valid",
    [
        (8, datetime(2025, 10, 1), False),  # after EOL
        (9, datetime(2025, 10, 1), True),  # on EOL
        (9, datetime(2025, 10, 2), False),  # after EOL
        (10, datetime(2026, 9, 30), True),  # before EOL
        (10, datetime(2026, 10, 2), False),  # after EOL
        (14, datetime(2030, 9, 30), True),  # before EOL
        (14, datetime(2030, 10, 2), False),  # after EOL
    ],
)
def test_valid_python_version(
    minor_version, today, is_valid, base_command, monkeypatch
):
    """A warning is produced if the Python version is past its EOL."""

    version_info = _create_version_info(3, minor_version)
    sys_mock = mock.MagicMock(wraps=sys)
    sys_mock.version_info = version_info
    monkeypatch.setattr(briefcase.commands.base, "sys", sys_mock)

    datetime_mock = mock.MagicMock(wraps=datetime)
    datetime_mock.today.return_value = today
    monkeypatch.setattr(briefcase.commands.base, "datetime", datetime_mock)

    assert base_command.validate_python_version() is is_valid