mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-25 13:07:58 +00:00
Catch changes to test group (#4802)
# Catch changes to test group Add test to catch changes to test group.
This commit is contained in:
@@ -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",
|
||||
]
|
||||
|
Reference in New Issue
Block a user