mirror of
https://github.com/hwchase17/langchain
synced 2024-11-10 01:10:59 +00:00
6598757037
Adds a first version of the migrate script.
73 lines
3.0 KiB
Python
73 lines
3.0 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from langchain_cli.namespaces.migrate.glob_helpers import glob_to_re, match_glob
|
|
|
|
|
|
class TestGlobHelpers:
|
|
match_glob_values: list[tuple[str, Path, bool]] = [
|
|
("foo", Path("foo"), True),
|
|
("foo", Path("bar"), False),
|
|
("foo", Path("foo/bar"), False),
|
|
("*", Path("foo"), True),
|
|
("*", Path("bar"), True),
|
|
("*", Path("foo/bar"), False),
|
|
("**", Path("foo"), True),
|
|
("**", Path("foo/bar"), True),
|
|
("**", Path("foo/bar/baz/qux"), True),
|
|
("foo/bar", Path("foo/bar"), True),
|
|
("foo/bar", Path("foo"), False),
|
|
("foo/bar", Path("far"), False),
|
|
("foo/bar", Path("foo/foo"), False),
|
|
("foo/*", Path("foo/bar"), True),
|
|
("foo/*", Path("foo/bar/baz"), False),
|
|
("foo/*", Path("foo"), False),
|
|
("foo/*", Path("bar"), False),
|
|
("foo/**", Path("foo/bar"), True),
|
|
("foo/**", Path("foo/bar/baz"), True),
|
|
("foo/**", Path("foo/bar/baz/qux"), True),
|
|
("foo/**", Path("foo"), True),
|
|
("foo/**", Path("bar"), False),
|
|
("foo/**/bar", Path("foo/bar"), True),
|
|
("foo/**/bar", Path("foo/baz/bar"), True),
|
|
("foo/**/bar", Path("foo/baz/qux/bar"), True),
|
|
("foo/**/bar", Path("foo/baz/qux"), False),
|
|
("foo/**/bar", Path("foo/bar/baz"), False),
|
|
("foo/**/bar", Path("foo/bar/bar"), True),
|
|
("foo/**/bar", Path("foo"), False),
|
|
("foo/**/bar", Path("bar"), False),
|
|
("foo/**/*/bar", Path("foo/bar"), False),
|
|
("foo/**/*/bar", Path("foo/baz/bar"), True),
|
|
("foo/**/*/bar", Path("foo/baz/qux/bar"), True),
|
|
("foo/**/*/bar", Path("foo/baz/qux"), False),
|
|
("foo/**/*/bar", Path("foo/bar/baz"), False),
|
|
("foo/**/*/bar", Path("foo/bar/bar"), True),
|
|
("foo/**/*/bar", Path("foo"), False),
|
|
("foo/**/*/bar", Path("bar"), False),
|
|
("foo/ba*", Path("foo/bar"), True),
|
|
("foo/ba*", Path("foo/baz"), True),
|
|
("foo/ba*", Path("foo/qux"), False),
|
|
("foo/ba*", Path("foo/baz/qux"), False),
|
|
("foo/ba*", Path("foo/bar/baz"), False),
|
|
("foo/ba*", Path("foo"), False),
|
|
("foo/ba*", Path("bar"), False),
|
|
("foo/**/ba*/*/qux", Path("foo/a/b/c/bar/a/qux"), True),
|
|
("foo/**/ba*/*/qux", Path("foo/a/b/c/baz/a/qux"), True),
|
|
("foo/**/ba*/*/qux", Path("foo/a/bar/a/qux"), True),
|
|
("foo/**/ba*/*/qux", Path("foo/baz/a/qux"), True),
|
|
("foo/**/ba*/*/qux", Path("foo/baz/qux"), False),
|
|
("foo/**/ba*/*/qux", Path("foo/a/b/c/qux/a/qux"), False),
|
|
("foo/**/ba*/*/qux", Path("foo"), False),
|
|
("foo/**/ba*/*/qux", Path("bar"), False),
|
|
]
|
|
|
|
@pytest.mark.parametrize(("pattern", "path", "expected"), match_glob_values)
|
|
def test_match_glob(self, pattern: str, path: Path, expected: bool):
|
|
expr = glob_to_re(pattern)
|
|
assert (
|
|
match_glob(path, pattern) == expected
|
|
), f"path: {path}, pattern: {pattern}, expr: {expr}"
|