Spaces:
Sleeping
Sleeping
| import os | |
| import gitlab | |
| from dotenv import load_dotenv | |
| def setup_test_project(): | |
| load_dotenv() | |
| gl = gitlab.Gitlab("https://gitlab.com", private_token=os.getenv("GITLAB_TOKEN")) | |
| gl.auth() | |
| project_name = "context-brain-test" | |
| # Check if project exists | |
| projects = gl.projects.list(get_all=False) | |
| target_project = next((p for p in projects if p.name == project_name), None) | |
| if not target_project: | |
| print(f"[*] Creating new project: {project_name}") | |
| target_project = gl.projects.create({'name': project_name}) | |
| else: | |
| print(f"[*] Using existing project: {project_name} (ID: {target_project.id})") | |
| # Ensure project has some content | |
| try: | |
| target_project.files.get(file_path='README.md', ref='main') | |
| except: | |
| print("[*] Initializing repository with README.md") | |
| target_project.files.create({ | |
| 'file_path': 'README.md', | |
| 'branch': 'main', | |
| 'content': '# Context Brain Test Project\nThis is a dummy project for testing the GitLab Context Brain.', | |
| 'commit_message': 'Initial commit' | |
| }) | |
| # Create a new branch and a file for the MR | |
| branch_name = "feature/test-mr" | |
| try: | |
| target_project.branches.create({'branch': branch_name, 'ref': 'main'}) | |
| except: | |
| pass # Branch might already exist | |
| try: | |
| target_project.files.create({ | |
| 'file_path': 'vuln_example.py', | |
| 'branch': branch_name, | |
| 'content': 'def handler(event):\n print("Processing event...")\n # Potential SQL Injection point\n query = f"SELECT * FROM users WHERE id = {event.get(\'id\')}"\n return query\n', | |
| 'commit_message': 'Add dummy code with potential issues' | |
| }) | |
| except: | |
| target_project.files.update({ | |
| 'file_path': 'vuln_example.py', | |
| 'branch': branch_name, | |
| 'content': 'def handler(event):\n print("Processing event...")\n # Potential SQL Injection point\n query = f"SELECT * FROM users WHERE id = {event.get(\'id\')}"\n return query\n', | |
| 'commit_message': 'Update dummy code' | |
| }) | |
| # Create Merge Request | |
| mr = target_project.mergerequests.create({ | |
| 'source_branch': branch_name, | |
| 'target_branch': 'main', | |
| 'title': 'Feature: Add dummy processing logic', | |
| 'description': 'This MR adds some basic processing logic and needs context brain analysis.' | |
| }) | |
| print(f"✅ Success! Created MR IID: {mr.iid} in Project ID: {target_project.id}") | |
| print(f"🔗 MR URL: {mr.web_url}") | |
| return target_project.id, mr.iid | |
| if __name__ == "__main__": | |
| setup_test_project() | |