From d30c4d00d3bef0e85fd2e92d1deb0ac4c696d6c5 Mon Sep 17 00:00:00 2001 From: Willem Jiang Date: Tue, 21 Oct 2025 10:00:33 +0800 Subject: [PATCH] fix: convert crawl_tool dict return to JSON string for type consistency (#636) Keep fixing #631 This pull request updates the crawl_tool function to return its results as a JSON string instead of a dictionary, and adjusts the unit tests accordingly to handle the new return type. The changes ensure consistent serialization of output and proper validation in tests. --- src/tools/crawl.py | 3 ++- tests/unit/tools/test_crawl.py | 13 ++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/tools/crawl.py b/src/tools/crawl.py index 552e813..fbb349e 100644 --- a/src/tools/crawl.py +++ b/src/tools/crawl.py @@ -1,6 +1,7 @@ # Copyright (c) 2025 Bytedance Ltd. and/or its affiliates # SPDX-License-Identifier: MIT +import json import logging from typing import Annotated @@ -22,7 +23,7 @@ def crawl_tool( try: crawler = Crawler() article = crawler.crawl(url) - return {"url": url, "crawled_content": article.to_markdown()[:1000]} + return json.dumps({"url": url, "crawled_content": article.to_markdown()[:1000]}) except BaseException as e: error_msg = f"Failed to crawl. Error: {repr(e)}" logger.error(error_msg) diff --git a/tests/unit/tools/test_crawl.py b/tests/unit/tools/test_crawl.py index f43b11c..a21c426 100644 --- a/tests/unit/tools/test_crawl.py +++ b/tests/unit/tools/test_crawl.py @@ -1,3 +1,4 @@ +import json from unittest.mock import Mock, patch from src.tools.crawl import crawl_tool @@ -21,10 +22,11 @@ class TestCrawlTool: result = crawl_tool(url) # Assert - assert isinstance(result, dict) - assert result["url"] == url - assert "crawled_content" in result - assert len(result["crawled_content"]) <= 1000 + assert isinstance(result, str) + result_dict = json.loads(result) + assert result_dict["url"] == url + assert "crawled_content" in result_dict + assert len(result_dict["crawled_content"]) <= 1000 mock_crawler_class.assert_called_once() mock_crawler.crawl.assert_called_once_with(url) mock_article.to_markdown.assert_called_once() @@ -45,7 +47,8 @@ class TestCrawlTool: result = crawl_tool(url) # Assert - assert result["crawled_content"] == short_content + result_dict = json.loads(result) + assert result_dict["crawled_content"] == short_content @patch("src.tools.crawl.Crawler") @patch("src.tools.crawl.logger")