mirror of
https://github.com/hwchase17/langchain.git
synced 2025-07-01 19:03:25 +00:00
infra: Fix test filesystem paths incompatible with windows (#14388)
- **Description:** This PR fixes test failures on Windows caused by path handling differences and unescaped special characters in regex. The failing tests are: ``` FAILED tests/unit_tests/storage/test_filesystem.py::test_yield_keys - AssertionError: assert ['key1', 'subdir\\key2'] == ['key1', 'subdir/key2'] FAILED tests/unit_tests/test_imports.py::test_importable_all - ModuleNotFoundError: No module named 'langchain_community.langchain_community\\adapters' FAILED tests/unit_tests/tools/file_management/test_utils.py::test_get_validated_relative_path_errs_on_absolute - re.error: incomplete escape \U at position 53 FAILED tests/unit_tests/tools/file_management/test_utils.py::test_get_validated_relative_path_errs_on_parent_dir - re.error: incomplete escape \U at position 69 FAILED tests/unit_tests/tools/file_management/test_utils.py::test_get_validated_relative_path_errs_for_symlink_outside_root - re.error: incomplete escape \U at position 64 ``` - **Issue:** fixes https://github.com/langchain-ai/langchain/issues/11775 (partially) - **Dependencies:** none
This commit is contained in:
parent
71076cceaf
commit
129a929d69
@ -1,10 +1,11 @@
|
||||
import glob
|
||||
import importlib
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def test_importable_all() -> None:
|
||||
for path in glob.glob("../community/langchain_community/*"):
|
||||
relative_path = path.split("/")[-1]
|
||||
relative_path = Path(path).parts[-1]
|
||||
if relative_path.endswith(".typed"):
|
||||
continue
|
||||
module_name = relative_path.split(".")[0]
|
||||
|
@ -1,6 +1,6 @@
|
||||
"""Test the File Management utils."""
|
||||
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
@ -16,8 +16,8 @@ def test_get_validated_relative_path_errs_on_absolute() -> None:
|
||||
"""Safely resolve a path."""
|
||||
root = Path(__file__).parent
|
||||
user_path = "/bin/bash"
|
||||
matches = f"Path {user_path} is outside of the allowed directory {root}"
|
||||
with pytest.raises(FileValidationError, match=matches):
|
||||
match = re.escape(f"Path {user_path} is outside of the allowed directory {root}")
|
||||
with pytest.raises(FileValidationError, match=match):
|
||||
get_validated_relative_path(root, user_path)
|
||||
|
||||
|
||||
@ -25,8 +25,8 @@ def test_get_validated_relative_path_errs_on_parent_dir() -> None:
|
||||
"""Safely resolve a path."""
|
||||
root = Path(__file__).parent
|
||||
user_path = "data/sub/../../../sibling"
|
||||
matches = f"Path {user_path} is outside of the allowed directory {root}"
|
||||
with pytest.raises(FileValidationError, match=matches):
|
||||
match = re.escape(f"Path {user_path} is outside of the allowed directory {root}")
|
||||
with pytest.raises(FileValidationError, match=match):
|
||||
get_validated_relative_path(root, user_path)
|
||||
|
||||
|
||||
@ -49,10 +49,10 @@ def test_get_validated_relative_path_errs_for_symlink_outside_root() -> None:
|
||||
symlink_path = root / user_path
|
||||
symlink_path.symlink_to(outside_path)
|
||||
|
||||
matches = (
|
||||
match = re.escape(
|
||||
f"Path {user_path} is outside of the allowed directory {root.resolve()}"
|
||||
)
|
||||
with pytest.raises(FileValidationError, match=matches):
|
||||
with pytest.raises(FileValidationError, match=match):
|
||||
get_validated_relative_path(root, user_path)
|
||||
|
||||
symlink_path.unlink()
|
||||
|
@ -1,10 +1,11 @@
|
||||
import glob
|
||||
import importlib
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def test_importable_all() -> None:
|
||||
for path in glob.glob("../core/langchain_core/*"):
|
||||
relative_path = path.split("/")[-1]
|
||||
relative_path = Path(path).parts[-1]
|
||||
if relative_path.endswith(".typed"):
|
||||
continue
|
||||
module_name = relative_path.split(".")[0]
|
||||
|
@ -1,10 +1,11 @@
|
||||
import glob
|
||||
import importlib
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def test_importable_all() -> None:
|
||||
for path in glob.glob("../experimental/langchain_experimental/*"):
|
||||
relative_path = path.split("/")[-1]
|
||||
relative_path = Path(path).parts[-1]
|
||||
if relative_path.endswith(".typed"):
|
||||
continue
|
||||
module_name = relative_path.split(".")[0]
|
||||
|
@ -1,3 +1,4 @@
|
||||
import os
|
||||
import tempfile
|
||||
from typing import Generator
|
||||
|
||||
@ -74,5 +75,5 @@ def test_yield_keys(file_store: LocalFileStore) -> None:
|
||||
keys = list(file_store.yield_keys())
|
||||
|
||||
# Assert that the yielded keys match the expected keys
|
||||
expected_keys = ["key1", "subdir/key2"]
|
||||
expected_keys = ["key1", os.path.join("subdir", "key2")]
|
||||
assert keys == expected_keys
|
||||
|
@ -1,10 +1,11 @@
|
||||
import glob
|
||||
import importlib
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def test_importable_all() -> None:
|
||||
for path in glob.glob("../langchain/langchain/*"):
|
||||
relative_path = path.split("/")[-1]
|
||||
relative_path = Path(path).parts[-1]
|
||||
if relative_path.endswith(".typed"):
|
||||
continue
|
||||
module_name = relative_path.split(".")[0]
|
||||
|
Loading…
Reference in New Issue
Block a user