forked from Archives/langchain
Catch changes to test group (#4802)
# Catch changes to test group Add test to catch changes to test group.
This commit is contained in:
parent
c3b6129beb
commit
255690d78e
@ -104,6 +104,9 @@ linkchecker = "^10.2.1"
|
||||
sphinx-copybutton = "^0.5.1"
|
||||
|
||||
[tool.poetry.group.test.dependencies]
|
||||
# The only dependencies that should be added are
|
||||
# dependencies used for running tests (e.g., pytest, freezegun, response).
|
||||
# Any dependencies that do not meet that criteria will be removed.
|
||||
pytest = "^7.3.0"
|
||||
pytest-cov = "^4.0.0"
|
||||
pytest-dotenv = "^0.5.2"
|
||||
|
@ -1,6 +1,8 @@
|
||||
"""A unit test meant to catch accidental introduction of non-optional dependencies."""
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, Mapping
|
||||
|
||||
import pytest
|
||||
import toml
|
||||
|
||||
HERE = Path(__file__).parent
|
||||
@ -8,17 +10,21 @@ HERE = Path(__file__).parent
|
||||
PYPROJECT_TOML = HERE / "../../pyproject.toml"
|
||||
|
||||
|
||||
def test_required_dependencies() -> None:
|
||||
@pytest.fixture()
|
||||
def poetry_conf() -> Dict[str, Any]:
|
||||
"""Load the pyproject.toml file."""
|
||||
with open(PYPROJECT_TOML) as f:
|
||||
return toml.load(f)["tool"]["poetry"]
|
||||
|
||||
|
||||
def test_required_dependencies(poetry_conf: Mapping[str, Any]) -> None:
|
||||
"""A test that checks if a new non-optional dependency is being introduced.
|
||||
|
||||
If this test is triggered, it means that a contributor is trying to introduce a new
|
||||
required dependency. This should be avoided in most situations.
|
||||
"""
|
||||
with open(PYPROJECT_TOML) as f:
|
||||
pyproject = toml.load(f)
|
||||
|
||||
# Get the dependencies from the [tool.poetry.dependencies] section
|
||||
dependencies = pyproject["tool"]["poetry"]["dependencies"]
|
||||
dependencies = poetry_conf["dependencies"]
|
||||
|
||||
required_dependencies = [
|
||||
package_name
|
||||
@ -40,3 +46,29 @@ def test_required_dependencies() -> None:
|
||||
"requests",
|
||||
"tenacity",
|
||||
]
|
||||
|
||||
|
||||
def test_test_group_dependencies(poetry_conf: Mapping[str, Any]) -> None:
|
||||
"""Check if someone is attempting to add additional test dependencies.
|
||||
|
||||
Only dependencies associated with test running infrastructure should be added
|
||||
to the test group; e.g., pytest, pytest-cov etc.
|
||||
|
||||
Examples of dependencies that should NOT be included: boto3, azure, postgres, etc.
|
||||
"""
|
||||
|
||||
test_group_deps = sorted(poetry_conf["group"]["test"]["dependencies"])
|
||||
|
||||
assert test_group_deps == [
|
||||
"duckdb-engine", # Should be removed
|
||||
"freezegun",
|
||||
"lark", # Should be removed
|
||||
"pytest",
|
||||
"pytest-asyncio",
|
||||
"pytest-cov",
|
||||
"pytest-dotenv",
|
||||
"pytest-mock",
|
||||
"pytest-socket",
|
||||
"pytest-watcher",
|
||||
"responses",
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user