Add tests

This commit is contained in:
gagb
2024-12-12 23:10:23 +00:00
parent 28af7ad341
commit 8f16f32d53
3 changed files with 46 additions and 1 deletions

View File

@@ -39,6 +39,7 @@ dependencies = [
"youtube-transcript-api", "youtube-transcript-api",
"SpeechRecognition", "SpeechRecognition",
"pathvalidate", "pathvalidate",
"pygithub"
] ]
[project.urls] [project.urls]

View File

@@ -50,7 +50,7 @@ try:
IS_GITHUB_ISSUE_CAPABLE = True IS_GITHUB_ISSUE_CAPABLE = True
except ModuleNotFoundError: except ModuleNotFoundError:
pass IS_GITHUB_ISSUE_CAPABLE = False
class _CustomMarkdownify(markdownify.MarkdownConverter): class _CustomMarkdownify(markdownify.MarkdownConverter):
@@ -1111,6 +1111,33 @@ class MarkItDown:
def convert_github_issue( def convert_github_issue(
self, issue_url: str, github_token: str self, issue_url: str, github_token: str
) -> DocumentConverterResult: ) -> DocumentConverterResult:
"""
Convert a GitHub issue to a markdown document.
Args:
issue_url (str): The URL of the GitHub issue to convert.
github_token (str): A GitHub token with access to the repository.
Returns:
DocumentConverterResult: The result containing the issue title and markdown content.
Raises:
ImportError: If the PyGithub library is not installed.
ValueError: If the provided URL is not a valid GitHub issue URL.
Example:
# Example markdown format
# Issue Title
Issue body content...
**State:** open
**Created at:** 2023-10-01 12:34:56
**Updated at:** 2023-10-02 12:34:56
**Comments:**
- user1 (2023-10-01 13:00:00): Comment content...
- user2 (2023-10-01 14:00:00): Another comment...
"""
if not IS_GITHUB_ISSUE_CAPABLE: if not IS_GITHUB_ISSUE_CAPABLE:
raise ImportError( raise ImportError(
"PyGithub is not installed. Please install it to use this feature." "PyGithub is not installed. Please install it to use this feature."

View File

@@ -87,6 +87,9 @@ SERP_TEST_EXCLUDES = [
"data:image/svg+xml,%3Csvg%20width%3D", "data:image/svg+xml,%3Csvg%20width%3D",
] ]
GITHUB_ISSUE_URL = "https://github.com/microsoft/autogen/issues/1421"
GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN", "")
@pytest.mark.skipif( @pytest.mark.skipif(
skip_remote, skip_remote,
@@ -179,8 +182,22 @@ def test_markitdown_exiftool() -> None:
assert target in result.text_content assert target in result.text_content
@pytest.mark.skipif(
not GITHUB_TOKEN,
reason="GitHub token not provided",
)
def test_markitdown_github_issue() -> None:
markitdown = MarkItDown()
result = markitdown.convert_github_issue(GITHUB_ISSUE_URL, GITHUB_TOKEN)
print(result.text_content)
assert "User-Defined Functions" in result.text_content
assert "closed" in result.text_content
assert "Comments:" in result.text_content
if __name__ == "__main__": if __name__ == "__main__":
"""Runs this file's tests from the command line.""" """Runs this file's tests from the command line."""
test_markitdown_remote() test_markitdown_remote()
test_markitdown_local() test_markitdown_local()
test_markitdown_exiftool() test_markitdown_exiftool()
test_markitdown_github_issue()