mirror of https://github.com/scrapy/scrapy.git
39 lines
935 B
Python
39 lines
935 B
Python
from __future__ import annotations
|
|
|
|
import subprocess
|
|
import sys
|
|
from typing import Any
|
|
|
|
import pytest
|
|
|
|
from scrapy.utils.test import get_testenv
|
|
|
|
|
|
def call(*args: str, **popen_kwargs: Any) -> int:
|
|
args = (sys.executable, "-m", "scrapy.cmdline", *args)
|
|
return subprocess.call(
|
|
args,
|
|
stdout=subprocess.DEVNULL,
|
|
stderr=subprocess.DEVNULL,
|
|
env=get_testenv(),
|
|
**popen_kwargs,
|
|
)
|
|
|
|
|
|
def proc(*args: str, **popen_kwargs: Any) -> tuple[int, str, str]:
|
|
args = (sys.executable, "-m", "scrapy.cmdline", *args)
|
|
try:
|
|
p = subprocess.run(
|
|
args,
|
|
check=False,
|
|
capture_output=True,
|
|
encoding="utf-8",
|
|
timeout=15,
|
|
env=get_testenv(),
|
|
**popen_kwargs,
|
|
)
|
|
except subprocess.TimeoutExpired:
|
|
pytest.fail("Command took too much time to complete")
|
|
|
|
return p.returncode, p.stdout, p.stderr
|