mirror of https://github.com/scrapy/scrapy.git
Add a test to check the Twisted version in pinned environments
This commit is contained in:
parent
6ef3dc2029
commit
0dc3e6350c
|
|
@ -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
10
tox.ini
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue