Add a test to check the Twisted version in pinned environments

This commit is contained in:
Adrián Chaves 2020-11-23 22:10:45 +01:00
parent 6ef3dc2029
commit 0dc3e6350c
2 changed files with 42 additions and 0 deletions

View File

@ -1,8 +1,14 @@
import os
import re
from configparser import ConfigParser
from importlib import import_module
from twisted import version as twisted_version
from twisted.trial import unittest
class ScrapyUtilsTest(unittest.TestCase):
def test_required_openssl_version(self):
try:
module = import_module('OpenSSL')
@ -13,6 +19,32 @@ class ScrapyUtilsTest(unittest.TestCase):
installed_version = [int(x) for x in module.__version__.split('.')[:2]]
assert installed_version >= [0, 6], "OpenSSL >= 0.6 required"
def test_pinned_twisted_version(self):
"""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_PINNED', None):
self.skipTest('Not in a pinned environment')
tox_config_file_path = os.path.join(
os.path.dirname(__file__),
'..',
'tox.ini',
)
config_parser = ConfigParser()
config_parser.read(tox_config_file_path)
pattern = r'Twisted==([\d.]+)'
match = re.search(pattern, config_parser['pinned']['deps'])
pinned_twisted_version_string = match[1]
self.assertEqual(
twisted_version.short(),
pinned_twisted_version_string
)
if __name__ == "__main__":
unittest.main()

10
tox.ini
View File

@ -92,6 +92,8 @@ install_command =
# --use-feature=2020-resolver is required, otherwise the latest verion of
# Twisted gets installed.
pip install --use-feature=2020-resolver {opts} {packages}
setenv =
SCRAPY_PINNED=true
[testenv:pinned]
deps =
@ -100,6 +102,8 @@ deps =
PyDispatcher==2.0.5
install_command =
{[pinned]install_command}
setenv =
{[pinned]setenv}
[testenv:windows-pinned]
basepython = python3
@ -111,6 +115,8 @@ deps =
PyDispatcher==2.0.5
install_command =
{[pinned]install_command}
setenv =
{[pinned]setenv}
[testenv:extra-deps]
deps =
@ -131,6 +137,8 @@ deps = {[testenv:pinned]deps}
install_command =
{[pinned]install_command}
commands = {[testenv:asyncio]commands}
setenv =
{[pinned]setenv}
[testenv:pypy3]
basepython = pypy3
@ -146,6 +154,8 @@ deps =
install_command =
{[pinned]install_command}
commands = {[testenv:pypy3]commands}
setenv =
{[pinned]setenv}
[docs]
changedir = docs