from __future__ import annotations

import os
import re
from configparser import ConfigParser
from pathlib import Path

import pytest
from twisted import version as twisted_version


def test_pinned_twisted_version() -> None:
    """When running tests within a Tox environment with pinned
    dependencies, make sure that the version of Twisted is the pinned
    version.

    See https://github.com/scrapy/scrapy/pull/4814#issuecomment-706230011
    """
    if not os.environ.get("_SCRAPY_MIN", None):
        pytest.skip("Not in a min environment")

    tox_config_file_path = Path(__file__).parent / ".." / "tox.ini"
    config_parser = ConfigParser()
    config_parser.read(tox_config_file_path)
    pattern = r"Twisted==([\d.]+)"
    match = re.search(pattern, config_parser["min"]["deps"])
    assert match
    pinned_twisted_version_string = match[1]

    assert twisted_version.short() == pinned_twisted_version_string
