fix: improve output_file validation and error messages

Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
Devin AI
2024-12-29 03:38:33 +00:00
parent 83b4e0b4c0
commit bdb32dd3e6
2 changed files with 57 additions and 19 deletions

View File

@@ -880,20 +880,56 @@ def test_key():
def test_output_file_validation():
"""Test output file path validation."""
# Valid paths
assert Task(output_file="output.txt").output_file == "output.txt"
assert Task(output_file="/tmp/output.txt").output_file == "tmp/output.txt"
assert Task(output_file="{dir}/output_{date}.txt").output_file == "{dir}/output_{date}.txt"
assert Task(
description="Test task",
expected_output="Test output",
output_file="output.txt"
).output_file == "output.txt"
assert Task(
description="Test task",
expected_output="Test output",
output_file="/tmp/output.txt"
).output_file == "tmp/output.txt"
assert Task(
description="Test task",
expected_output="Test output",
output_file="{dir}/output_{date}.txt"
).output_file == "{dir}/output_{date}.txt"
# Invalid paths
with pytest.raises(ValueError, match="Path traversal"):
Task(output_file="../output.txt")
Task(
description="Test task",
expected_output="Test output",
output_file="../output.txt"
)
with pytest.raises(ValueError, match="Path traversal"):
Task(output_file="folder/../output.txt")
Task(
description="Test task",
expected_output="Test output",
output_file="folder/../output.txt"
)
with pytest.raises(ValueError, match="Shell special characters"):
Task(output_file="output.txt | rm -rf /")
Task(
description="Test task",
expected_output="Test output",
output_file="output.txt | rm -rf /"
)
with pytest.raises(ValueError, match="Shell expansion"):
Task(output_file="~/output.txt")
Task(
description="Test task",
expected_output="Test output",
output_file="~/output.txt"
)
with pytest.raises(ValueError, match="Shell expansion"):
Task(output_file="$HOME/output.txt")
Task(
description="Test task",
expected_output="Test output",
output_file="$HOME/output.txt"
)
with pytest.raises(ValueError, match="Invalid template variable"):
Task(output_file="{invalid-name}/output.txt")
Task(
description="Test task",
expected_output="Test output",
output_file="{invalid-name}/output.txt"
)