forked from Archives/langchain
334c162f16
Add other File Utilities, include - List Directory - Search for file - Move - Copy - Remove file Bundle as toolkit Add a notebook that connects to the Chat Agent, which somewhat supports multi-arg input tools Update original read/write files to return the original dir paths and better handle unsupported file paths. Add unit tests
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
"""Test the FileMove tool."""
|
|
|
|
from pathlib import Path
|
|
from tempfile import TemporaryDirectory
|
|
|
|
from langchain.tools.file_management.move import MoveFileTool
|
|
from langchain.tools.file_management.utils import (
|
|
INVALID_PATH_TEMPLATE,
|
|
)
|
|
|
|
|
|
def test_move_file_with_root_dir() -> None:
|
|
"""Test the FileMove tool when a root dir is specified."""
|
|
with TemporaryDirectory() as temp_dir:
|
|
tool = MoveFileTool(root_dir=temp_dir)
|
|
source_file = Path(temp_dir) / "source.txt"
|
|
destination_file = Path(temp_dir) / "destination.txt"
|
|
source_file.write_text("Hello, world!")
|
|
tool.run({"source_path": "source.txt", "destination_path": "destination.txt"})
|
|
assert not source_file.exists()
|
|
assert destination_file.exists()
|
|
assert destination_file.read_text() == "Hello, world!"
|
|
|
|
|
|
def test_move_file_errs_outside_root_dir() -> None:
|
|
"""Test the FileMove tool when a root dir is specified."""
|
|
with TemporaryDirectory() as temp_dir:
|
|
tool = MoveFileTool(root_dir=temp_dir)
|
|
result = tool.run(
|
|
{
|
|
"source_path": "../source.txt",
|
|
"destination_path": "../destination.txt",
|
|
}
|
|
)
|
|
assert result == INVALID_PATH_TEMPLATE.format(
|
|
arg_name="source_path", value="../source.txt"
|
|
)
|
|
|
|
|
|
def test_move_file() -> None:
|
|
"""Test the FileMove tool."""
|
|
with TemporaryDirectory() as temp_dir:
|
|
tool = MoveFileTool()
|
|
source_file = Path(temp_dir) / "source.txt"
|
|
destination_file = Path(temp_dir) / "destination.txt"
|
|
source_file.write_text("Hello, world!")
|
|
tool.run(
|
|
{"source_path": str(source_file), "destination_path": str(destination_file)}
|
|
)
|
|
assert not source_file.exists()
|
|
assert destination_file.exists()
|
|
assert destination_file.read_text() == "Hello, world!"
|