parent
57daf25db4
commit
f08698fc3a
@ -0,0 +1,58 @@
|
|||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import requests
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv
|
||||||
|
|
||||||
|
# Constants
|
||||||
|
GITHUB_USERNAME = os.getenv('GITHUB_USERNAME')
|
||||||
|
REPO_NAME = os.getenv('GITHUB_REPO_NAME')
|
||||||
|
GITHUB_TOKEN = os.getenv('GITHUB_TOKEN')
|
||||||
|
ISSUES_URL = f'https://api.github.com/repos/{GITHUB_USERNAME}/{REPO_NAME}/issues'
|
||||||
|
|
||||||
|
# Headers for authentication
|
||||||
|
headers = {
|
||||||
|
'Authorization': f'token {GITHUB_TOKEN}',
|
||||||
|
'Accept': 'application/vnd.github.v3+json'
|
||||||
|
}
|
||||||
|
|
||||||
|
def run_pytest():
|
||||||
|
result = subprocess.run(['pytest'], capture_output=True, text=True)
|
||||||
|
return result.stdout + result.stderr
|
||||||
|
|
||||||
|
def parse_pytest_output(output):
|
||||||
|
errors = []
|
||||||
|
current_error = None
|
||||||
|
|
||||||
|
for line in output.split('\n'):
|
||||||
|
if line.startswith('_________________________'):
|
||||||
|
if current_error:
|
||||||
|
errors.append(current_error)
|
||||||
|
current_error = {'title': '', 'body': ''}
|
||||||
|
elif current_error is not None:
|
||||||
|
if not current_error['title']:
|
||||||
|
current_error['title'] = line.strip()
|
||||||
|
current_error['body'] += line + '\n'
|
||||||
|
|
||||||
|
if current_error:
|
||||||
|
errors.append(current_error)
|
||||||
|
return errors
|
||||||
|
|
||||||
|
def create_github_issue(title, body):
|
||||||
|
issue = {'title': title, 'body': body}
|
||||||
|
response = requests.post(ISSUES_URL, headers=headers, json=issue)
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
def main():
|
||||||
|
pytest_output = run_pytest()
|
||||||
|
errors = parse_pytest_output(pytest_output)
|
||||||
|
|
||||||
|
for error in errors:
|
||||||
|
issue_response = create_github_issue(error['title'], error['body'])
|
||||||
|
print(f"Issue created: {issue_response.get('html_url')}")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in new issue