""" tests: this package contains all Scrapy unittests see https://docs.scrapy.org/en/latest/contributing.html#running-tests """ import os import socket from pathlib import Path # ignore system-wide proxies for tests # which would send requests to a totally unsuspecting server # (e.g. because urllib does not fully understand the proxy spec) os.environ['http_proxy'] = '' os.environ['https_proxy'] = '' os.environ['ftp_proxy'] = '' # Absolutize paths to coverage config and output file because tests that # spawn subprocesses also changes current working directory. _sourceroot = Path(__file__).resolve().parent.parent if 'COV_CORE_CONFIG' in os.environ: os.environ['COVERAGE_FILE'] = str(_sourceroot / '.coverage') os.environ['COV_CORE_CONFIG'] = str(_sourceroot / os.environ['COV_CORE_CONFIG']) tests_datadir = str(Path(__file__).parent.resolve() / 'sample_data') # In some environments accessing a non-existing host doesn't raise an # error. In such cases we're going to skip tests which rely on it. try: socket.getaddrinfo('non-existing-host', 80) NON_EXISTING_RESOLVABLE = True except socket.gaierror: NON_EXISTING_RESOLVABLE = False def get_testdata(*paths: str) -> bytes: """Return test data""" return Path(tests_datadir, *paths).read_bytes()