Skip to content

Commit b83515c

Browse files
committed
Consolidate test cases from triplet to single-file format
1 parent db28c4a commit b83515c

5,229 files changed

Lines changed: 220036 additions & 179659 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitleaks.toml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@ useDefault = true
44
[allowlist]
55
paths = [
66
'''\.secrets\.baseline''',
7-
'''tests/cases/diff/kubernetes/k8s_406_secret_reference\.yaml''',
8-
'''tests/cases/diff/kubernetes/k8s_418_image_pull_secret\.yaml''',
9-
'''tests/cases/diff/algorithm/algorithm_004_fragment_markdown_section_diffctx\.yaml''',
10-
'''tests/cases/diff/docker/docker_039_compose_secrets_before\.yaml''',
11-
'''tests/cases/diff/docker/docker_039_compose_secrets_after\.yaml''',
12-
'''tests/cases/diff/fragments/fragments_018_config_yaml_top_level_keys_before\.yaml''',
13-
'''tests/cases/diff/fragments/fragments_018_config_yaml_top_level_keys_after\.yaml''',
7+
'''tests/cases/diff/algorithm/algorithm_004_fragment_markdown_section\.yaml''',
8+
'''tests/cases/diff/docker/docker_039_compose_secrets\.yaml''',
9+
'''tests/cases/diff/fragments/fragments_018_config_yaml_top_level_keys\.yaml''',
10+
'''tests/cases/diff/kubernetes/kubernetes_006_secret_reference\.yaml''',
11+
'''tests/cases/diff/kubernetes/kubernetes_018_image_pull_secret\.yaml''',
12+
'''tests/cases/diff/kubernetes/kubernetes_029_network_policy_ingress\.yaml''',
13+
'''tests/cases/diff/python/python_018_dunder_add_operator\.yaml''',
14+
'''tests/cases/diff/terraform/terraform_079_kms_key\.yaml''',
15+
'''tests/cases/diff/fragments/fragments_019_config_toml_sections\.yaml''',
16+
'''tests/cases/diff/fragments/fragments_020_config_json_top_level_keys\.yaml''',
17+
'''tests/cases/diff/helm/helm_025_template_secret\.yaml''',
18+
'''tests/cases/diff/kubernetes/kubernetes_002_replicas_change\.yaml''',
1419
]

.treemapper/review-cicd.whitelist

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# CI/CD Pipeline Review
2+
# Workflows, pyproject.toml, pre-commit
3+
4+
.github/workflows/*.yml
5+
pyproject.toml
6+
.pre-commit-config.yaml
7+
treemapper.spec

.treemapper/review-core.whitelist

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Core Tree Mapping Review
2+
# Filesystem walker, ignore/whitelist logic, output writers, CLI
3+
4+
src/treemapper/treemapper.py
5+
src/treemapper/cli.py
6+
src/treemapper/tree.py
7+
src/treemapper/writer.py
8+
src/treemapper/ignore.py
9+
src/treemapper/tokens.py
10+
src/treemapper/clipboard.py
11+
src/treemapper/logger.py
12+
src/treemapper/version.py
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Diff Context Mode Review
2+
# Semantic analysis, graph, PPR, fragment selection
3+
4+
src/treemapper/diffctx/**/*.py

.treemapper/review-edges.whitelist

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Edge System Review
2+
# Graph edges: semantic, structural, similarity, history, document
3+
4+
src/treemapper/diffctx/edges/**/*.py
5+
src/treemapper/diffctx/graph.py
6+
src/treemapper/diffctx/ppr.py
7+
src/treemapper/diffctx/embeddings.py
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Language Parsers Review
2+
# Tree-sitter parsers, generic/HTML/K8s/Markdown/Python parsers
3+
4+
src/treemapper/diffctx/parsers/**/*.py
5+
src/treemapper/diffctx/parsers/**/*.yaml
6+
src/treemapper/diffctx/python_semantics.py
7+
src/treemapper/diffctx/javascript_semantics.py
8+
src/treemapper/diffctx/languages.py
Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
initial:
2+
models/user.py: |
3+
from dataclasses import dataclass, field
4+
from typing import Optional, List
5+
from datetime import datetime
6+
7+
@dataclass
8+
class Address:
9+
street: str
10+
city: str
11+
country: str
12+
postal_code: str
13+
14+
def format(self) -> str:
15+
return f"{self.street}, {self.city}, {self.postal_code}"
16+
17+
@dataclass
18+
class User:
19+
id: int
20+
username: str
21+
email: str
22+
created_at: datetime = field(default_factory=datetime.now)
23+
address: Optional[Address] = None
24+
roles: List[str] = field(default_factory=list)
25+
26+
def is_admin(self) -> bool:
27+
return "admin" in self.roles
28+
29+
def has_address(self) -> bool:
30+
return self.address is not None
31+
services/user_service.py: |
32+
from models.user import User, Address
33+
34+
class UserService:
35+
def __init__(self, repository):
36+
self.repository = repository
37+
38+
def create_user(self, username: str, email: str) -> User:
39+
user = User(
40+
id=self.repository.next_id(),
41+
username=username,
42+
email=email
43+
)
44+
self.repository.save(user)
45+
return user
46+
47+
def add_role(self, user: User, role: str) -> None:
48+
if role not in user.roles:
49+
user.roles.append(role)
50+
self.repository.save(user)
51+
52+
def set_address(self, user: User, address: Address) -> None:
53+
user.address = address
54+
self.repository.save(user)
55+
56+
# --- Tricky garbage: shares "display_name" identifier with the diff ---
57+
garbage_display_config.py: |
58+
GARBAGE_ALGO_001_DISPLAY_CONFIG_G = "display_settings"
59+
GARBAGE_ALGO_001_THEME_MARKER_H = True
60+
61+
class DisplayConfig:
62+
display_name = "Default Theme"
63+
display_mode = "dark"
64+
GARBAGE_ALGO_001_RENDER_MARKER_I = 42
65+
66+
def get_display_name(self) -> str:
67+
return self.display_name
68+
69+
def set_theme(self, theme: str) -> None:
70+
self.display_name = theme
71+
72+
# --- Tricky garbage: imports User but is completely unrelated ---
73+
garbage_user_export.py: |
74+
from models.user import User
75+
GARBAGE_ALGO_001_EXPORT_MARKER_J = "csv_export"
76+
GARBAGE_ALGO_001_FORMAT_MARKER_K = "xlsx"
77+
78+
class UserExporter:
79+
GARBAGE_ALGO_001_BATCH_MARKER_L = 1000
80+
81+
def export_users(self, users: list) -> bytes:
82+
return b""
83+
84+
def schedule_export(self, cron: str) -> None:
85+
pass
86+
87+
# --- Plain garbage: no overlap at all ---
88+
garbage_analytics.py: |
89+
GARBAGE_ALGO_001_ANALYTICS_MARKER_A = "analytics"
90+
GARBAGE_ALGO_001_TRACKER_MARKER_B = True
91+
92+
class AnalyticsTracker:
93+
GARBAGE_ALGO_001_CLASS_MARKER_C = "tracker"
94+
95+
def track(self, event: str) -> None:
96+
pass
97+
garbage_notifications.py: |
98+
GARBAGE_ALGO_001_NOTIFY_MARKER_D = "notify"
99+
GARBAGE_ALGO_001_PUSH_MARKER_E = 42
100+
101+
class PushService:
102+
GARBAGE_ALGO_001_PUSH_CLASS_F = True
103+
104+
def send(self, token: str, message: str) -> bool:
105+
return True
106+
107+
changed:
108+
models/user.py: |
109+
from dataclasses import dataclass, field
110+
from typing import Optional, List
111+
from datetime import datetime
112+
113+
@dataclass
114+
class Address:
115+
street: str
116+
city: str
117+
country: str
118+
postal_code: str
119+
120+
def format(self) -> str:
121+
return f"{self.street}, {self.city}, {self.postal_code}"
122+
123+
@dataclass
124+
class User:
125+
id: int
126+
username: str
127+
email: str
128+
display_name: Optional[str] = None
129+
created_at: datetime = field(default_factory=datetime.now)
130+
address: Optional[Address] = None
131+
roles: List[str] = field(default_factory=list)
132+
133+
def is_admin(self) -> bool:
134+
return "admin" in self.roles
135+
136+
def has_address(self) -> bool:
137+
return self.address is not None
138+
139+
def get_display_name(self) -> str:
140+
return self.display_name or self.username
141+
services/user_service.py: |
142+
from models.user import User, Address
143+
144+
class UserService:
145+
def __init__(self, repository):
146+
self.repository = repository
147+
148+
def create_user(self, username: str, email: str) -> User:
149+
user = User(
150+
id=self.repository.next_id(),
151+
username=username,
152+
email=email
153+
)
154+
self.repository.save(user)
155+
return user
156+
157+
def add_role(self, user: User, role: str) -> None:
158+
if role not in user.roles:
159+
user.roles.append(role)
160+
self.repository.save(user)
161+
162+
def set_address(self, user: User, address: Address) -> None:
163+
user.address = address
164+
self.repository.save(user)
165+
garbage_display_config.py: |
166+
GARBAGE_ALGO_001_DISPLAY_CONFIG_G = "display_settings"
167+
GARBAGE_ALGO_001_THEME_MARKER_H = True
168+
169+
class DisplayConfig:
170+
display_name = "Default Theme"
171+
display_mode = "dark"
172+
GARBAGE_ALGO_001_RENDER_MARKER_I = 42
173+
174+
def get_display_name(self) -> str:
175+
return self.display_name
176+
177+
def set_theme(self, theme: str) -> None:
178+
self.display_name = theme
179+
garbage_user_export.py: |
180+
from models.user import User
181+
GARBAGE_ALGO_001_EXPORT_MARKER_J = "csv_export"
182+
GARBAGE_ALGO_001_FORMAT_MARKER_K = "xlsx"
183+
184+
class UserExporter:
185+
GARBAGE_ALGO_001_BATCH_MARKER_L = 1000
186+
187+
def export_users(self, users: list) -> bytes:
188+
return b""
189+
190+
def schedule_export(self, cron: str) -> None:
191+
pass
192+
garbage_analytics.py: |
193+
GARBAGE_ALGO_001_ANALYTICS_MARKER_A = "analytics"
194+
GARBAGE_ALGO_001_TRACKER_MARKER_B = True
195+
196+
class AnalyticsTracker:
197+
GARBAGE_ALGO_001_CLASS_MARKER_C = "tracker"
198+
199+
def track(self, event: str) -> None:
200+
pass
201+
garbage_notifications.py: |
202+
GARBAGE_ALGO_001_NOTIFY_MARKER_D = "notify"
203+
GARBAGE_ALGO_001_PUSH_MARKER_E = 42
204+
205+
class PushService:
206+
GARBAGE_ALGO_001_PUSH_CLASS_F = True
207+
208+
def send(self, token: str, message: str) -> bool:
209+
return True
210+
211+
# === Assertions ===
212+
213+
must_include_files:
214+
- models/user.py
215+
216+
must_include_content_from:
217+
models/user.py:
218+
# Added symbols — the actual diff content
219+
- 'def get_display_name(self) -> str:'
220+
- return self.display_name or self.username
221+
- 'display_name: Optional[str] = None'
222+
# Class context — fragment should include enough surrounding code
223+
- 'class User:'
224+
- 'def is_admin(self) -> bool:'
225+
226+
must_not_include:
227+
# Plain garbage markers
228+
- GARBAGE_ALGO_001_ANALYTICS_MARKER_A
229+
- GARBAGE_ALGO_001_CLASS_MARKER_C
230+
- GARBAGE_ALGO_001_NOTIFY_MARKER_D
231+
- GARBAGE_ALGO_001_PUSH_CLASS_F
232+
- GARBAGE_ALGO_001_PUSH_MARKER_E
233+
- GARBAGE_ALGO_001_TRACKER_MARKER_B
234+
# Tricky: shares "display_name" and "get_display_name" identifiers
235+
- GARBAGE_ALGO_001_DISPLAY_CONFIG_G
236+
- GARBAGE_ALGO_001_THEME_MARKER_H
237+
- GARBAGE_ALGO_001_RENDER_MARKER_I
238+
# Tricky: imports User directly
239+
- GARBAGE_ALGO_001_EXPORT_MARKER_J
240+
- GARBAGE_ALGO_001_FORMAT_MARKER_K
241+
- GARBAGE_ALGO_001_BATCH_MARKER_L
242+
243+
must_not_include_files:
244+
- garbage_analytics.py
245+
- garbage_notifications.py
246+
- garbage_display_config.py
247+
- garbage_user_export.py
248+
249+
max_fragments: 6
250+
max_files: 3
251+
add_garbage_files: false
252+
skip_garbage_check: true

tests/cases/diff/algorithm/algorithm_001_fragment_class_decorator_included_after.yaml

Lines changed: 0 additions & 78 deletions
This file was deleted.

0 commit comments

Comments
 (0)