Skip to content

Commit 8eeb0f6

Browse files
Add MWE script for GitHub API call debugging
- Exact reproduction of the package's GitHub.create_issue() call - Tests 4 different syntax variations to find working approach - Provides detailed error diagnostics and version information - Helps debug MethodError in telemetry issue creation Usage: GITHUB_TOKEN=token julia --project=lib/LinearSolveAutotune mwe_api_call.jl 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 298e5f7 commit 8eeb0f6

File tree

1 file changed

+210
-0
lines changed

1 file changed

+210
-0
lines changed

mwe_api_call.jl

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
#!/usr/bin/env julia
2+
3+
# MWE: Exact reproduction of LinearSolveAutotune GitHub API call
4+
# Usage: GITHUB_TOKEN=your_token julia --project=lib/LinearSolveAutotune mwe_api_call.jl
5+
6+
using GitHub
7+
using Dates
8+
9+
function mwe_github_api_call()
10+
println("🧪 MWE: LinearSolveAutotune GitHub API Call")
11+
println("="^50)
12+
13+
# Check for token (exactly as package does)
14+
token = get(ENV, "GITHUB_TOKEN", nothing)
15+
if token === nothing
16+
println("❌ No GITHUB_TOKEN found")
17+
return false
18+
end
19+
20+
println("✅ Token found (length: $(length(token)))")
21+
22+
try
23+
# Step 1: Authenticate (exactly as package does)
24+
println("📋 Step 1: GitHub.authenticate(token)")
25+
auth = GitHub.authenticate(token)
26+
println("✅ Authentication successful")
27+
println(" Auth type: $(typeof(auth))")
28+
29+
# Step 2: Get repository object (exactly as package does)
30+
println("\n📋 Step 2: GitHub.repo(target_repo; auth=auth)")
31+
target_repo = "SciML/LinearSolve.jl"
32+
repo_obj = GitHub.repo(target_repo; auth=auth)
33+
println("✅ Repository access successful")
34+
println(" Repo: $(repo_obj.full_name)")
35+
36+
# Step 3: Create title and body (exactly as package does)
37+
println("\n📋 Step 3: Create issue title and body")
38+
system_info = Dict(
39+
"cpu_name" => "Test CPU Apple M2 Max",
40+
"os" => "Test Darwin"
41+
)
42+
content = """## Test Benchmark Results
43+
44+
### System Information
45+
- **Julia Version**: $(VERSION)
46+
- **CPU**: $(system_info["cpu_name"])
47+
- **OS**: $(system_info["os"])
48+
49+
### Sample Results
50+
| Algorithm | GFLOPs |
51+
|-----------|--------|
52+
| AppleAccelerateLUFactorization | 72.38 |
53+
| RFLUFactorization | 52.23 |
54+
| LUFactorization | 50.84 |
55+
56+
**This is a test issue - please close it**
57+
58+
---
59+
*Generated automatically by LinearSolveAutotune.jl*"""
60+
61+
cpu_name = get(system_info, "cpu_name", "unknown")
62+
os_name = get(system_info, "os", "unknown")
63+
timestamp = Dates.format(Dates.now(), "yyyy-mm-dd HH:MM")
64+
65+
issue_title = "Benchmark Results: $cpu_name on $os_name ($timestamp)"
66+
67+
issue_body = """
68+
# LinearSolve.jl Autotune Benchmark Results
69+
70+
$content
71+
72+
---
73+
74+
## System Summary
75+
- **CPU:** $cpu_name
76+
- **OS:** $os_name
77+
- **Timestamp:** $timestamp
78+
79+
🤖 *Generated automatically by LinearSolve.jl autotune system*
80+
"""
81+
82+
println("✅ Issue content created")
83+
println(" Title: $(issue_title)")
84+
println(" Body length: $(length(issue_body)) characters")
85+
86+
# Step 4: Create issue (EXACT reproduction of package call)
87+
println("\n📋 Step 4: GitHub.create_issue() - EXACT package reproduction")
88+
println(" Calling: GitHub.create_issue(repo_obj, title=issue_title, body=issue_body, auth=auth)")
89+
90+
issue_result = GitHub.create_issue(
91+
repo_obj,
92+
title=issue_title,
93+
body=issue_body,
94+
auth=auth
95+
)
96+
97+
println("🎉 SUCCESS!")
98+
println("✅ Created issue #$(issue_result.number)")
99+
println("🔗 URL: $(issue_result.html_url)")
100+
println()
101+
println("📝 Please close this test issue: $(issue_result.html_url)")
102+
103+
return true
104+
105+
catch e
106+
println("❌ ERROR at step above:")
107+
println(" Error type: $(typeof(e))")
108+
println(" Error message: $e")
109+
110+
# Additional diagnostic info
111+
println("\n🔍 Diagnostic Information:")
112+
println(" Julia version: $(VERSION)")
113+
println(" GitHub.jl version: $(pkgversion(GitHub))")
114+
115+
# Try to show available methods
116+
try
117+
println(" Available GitHub.create_issue methods:")
118+
for m in methods(GitHub.create_issue)
119+
println(" $m")
120+
end
121+
catch
122+
println(" Could not list methods")
123+
end
124+
125+
return false
126+
end
127+
end
128+
129+
# Also test different syntax variations to find what works
130+
function test_syntax_variations()
131+
println("\n🔧 Testing Syntax Variations")
132+
println("="^35)
133+
134+
token = get(ENV, "GITHUB_TOKEN", nothing)
135+
if token === nothing
136+
println("❌ No token for syntax tests")
137+
return
138+
end
139+
140+
try
141+
auth = GitHub.authenticate(token)
142+
repo_obj = GitHub.repo("SciML/LinearSolve.jl"; auth=auth)
143+
144+
title = "SYNTAX TEST: $(Dates.format(Dates.now(), "yyyy-mm-dd HH:MM:SS"))"
145+
body = "Test of different GitHub.create_issue syntax variations.\n\n**Please close this test issue.**"
146+
147+
# Test 1: Package's current syntax
148+
println("🧪 Syntax 1: GitHub.create_issue(repo_obj, title=title, body=body, auth=auth)")
149+
try
150+
issue1 = GitHub.create_issue(repo_obj, title=title, body=body, auth=auth)
151+
println("✅ Syntax 1 WORKS! Issue #$(issue1.number)")
152+
return
153+
catch e1
154+
println("❌ Syntax 1 failed: $(typeof(e1)) - $e1")
155+
end
156+
157+
# Test 2: All keyword arguments
158+
println("\n🧪 Syntax 2: GitHub.create_issue(repo_obj; title=title, body=body, auth=auth)")
159+
try
160+
issue2 = GitHub.create_issue(repo_obj; title=title, body=body, auth=auth)
161+
println("✅ Syntax 2 WORKS! Issue #$(issue2.number)")
162+
return
163+
catch e2
164+
println("❌ Syntax 2 failed: $(typeof(e2)) - $e2")
165+
end
166+
167+
# Test 3: Positional arguments
168+
println("\n🧪 Syntax 3: GitHub.create_issue(repo_obj, title, body, auth)")
169+
try
170+
issue3 = GitHub.create_issue(repo_obj, title, body, auth)
171+
println("✅ Syntax 3 WORKS! Issue #$(issue3.number)")
172+
return
173+
catch e3
174+
println("❌ Syntax 3 failed: $(typeof(e3)) - $e3")
175+
end
176+
177+
# Test 4: Auth first
178+
println("\n🧪 Syntax 4: GitHub.create_issue(repo_obj, auth=auth, title=title, body=body)")
179+
try
180+
issue4 = GitHub.create_issue(repo_obj, auth=auth, title=title, body=body)
181+
println("✅ Syntax 4 WORKS! Issue #$(issue4.number)")
182+
return
183+
catch e4
184+
println("❌ Syntax 4 failed: $(typeof(e4)) - $e4")
185+
end
186+
187+
println("\n❌ All syntax variations failed")
188+
189+
catch e
190+
println("❌ Setup for syntax tests failed: $e")
191+
end
192+
end
193+
194+
# Run the MWE
195+
println("Starting MWE reproduction of LinearSolveAutotune API call...\n")
196+
197+
success = mwe_github_api_call()
198+
199+
if !success
200+
test_syntax_variations()
201+
end
202+
203+
println("\n📊 MWE Results:")
204+
if success
205+
println("✅ The package's API call works correctly")
206+
println("💡 Issue might be in authentication or permissions")
207+
else
208+
println("❌ The package's API call fails")
209+
println("💡 Need to fix the API call syntax in the package")
210+
end

0 commit comments

Comments
 (0)