-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconftest.py
More file actions
104 lines (85 loc) · 2.66 KB
/
conftest.py
File metadata and controls
104 lines (85 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
"""
Pytest configuration and fixtures for create-pull-request tests.
Provides common fixtures for testing git operations and GitHub API interactions.
"""
import os
import tempfile
import subprocess
from pathlib import Path
from typing import Generator
import pytest
@pytest.fixture
def temp_repo() -> Generator[Path, None, None]:
"""
Create a temporary git repository for testing.
Yields:
Path to temporary repository
"""
with tempfile.TemporaryDirectory() as tmpdir:
repo_path = Path(tmpdir)
# Initialize git repo
subprocess.run(["git", "init"], cwd=repo_path, check=True, capture_output=True)
subprocess.run(
["git", "config", "user.name", "Test User"],
cwd=repo_path,
check=True,
capture_output=True
)
subprocess.run(
["git", "config", "user.email", "test@example.com"],
cwd=repo_path,
check=True,
capture_output=True
)
# Create initial commit
(repo_path / "README.md").write_text("# Test Repo\n")
subprocess.run(["git", "add", "."], cwd=repo_path, check=True, capture_output=True)
subprocess.run(
["git", "commit", "-m", "Initial commit"],
cwd=repo_path,
check=True,
capture_output=True
)
yield repo_path
@pytest.fixture
def mock_github_env(monkeypatch):
"""
Mock GitHub Actions environment variables.
"""
monkeypatch.setenv("GITHUB_REPOSITORY", "test-owner/test-repo")
monkeypatch.setenv("GITHUB_WORKSPACE", "/tmp/workspace")
monkeypatch.setenv("GITHUB_ACTOR", "test-actor")
monkeypatch.setenv("INPUT_TOKEN", "fake-token")
def create_test_file(repo_path: Path, filename: str, content: str = "test content") -> None:
"""
Create a test file in the repository.
Args:
repo_path: Repository path
filename: File name
content: File content
"""
(repo_path / filename).write_text(content)
def create_test_commit(repo_path: Path, message: str = "Test commit") -> str:
"""
Create a test commit in the repository.
Args:
repo_path: Repository path
message: Commit message
Returns:
Commit SHA
"""
subprocess.run(["git", "add", "."], cwd=repo_path, check=True, capture_output=True)
subprocess.run(
["git", "commit", "-m", message],
cwd=repo_path,
check=True,
capture_output=True
)
result = subprocess.run(
["git", "rev-parse", "HEAD"],
cwd=repo_path,
check=True,
capture_output=True,
text=True
)
return result.stdout.strip()