Files
railseek6/test_gogit.py

133 lines
3.8 KiB
Python

#!/usr/bin/env python3
"""
Test Go-Git executable to find root cause
"""
import subprocess
import os
import sys
def test_git_exe():
"""Test git.exe with different approaches"""
git_exe = r"C:\Program Files\gitea\git.exe"
if not os.path.exists(git_exe):
print(f"❌ git.exe not found at: {git_exe}")
return False
print(f"Testing git.exe: {git_exe}")
print(f"File size: {os.path.getsize(git_exe)} bytes")
print(f"Exists: {os.path.exists(git_exe)}")
# Test 1: Run with shell
print("\n=== Test 1: Run with shell ===")
try:
result = subprocess.run(
f'"{git_exe}"',
shell=True,
capture_output=True,
text=True,
timeout=5
)
print(f"Exit code: {result.returncode}")
print(f"Stdout: {result.stdout}")
print(f"Stderr: {result.stderr}")
except Exception as e:
print(f"Error: {e}")
# Test 2: Run with list args
print("\n=== Test 2: Run with list args ===")
try:
result = subprocess.run(
[git_exe],
capture_output=True,
text=True,
timeout=5
)
print(f"Exit code: {result.returncode}")
print(f"Stdout: {result.stdout}")
print(f"Stderr: {result.stderr}")
except Exception as e:
print(f"Error: {e}")
# Test 3: Check if it's actually a Go binary
print("\n=== Test 3: Check file type ===")
try:
with open(git_exe, 'rb') as f:
header = f.read(4)
print(f"File header: {header}")
if header == b'MZ\x90\x00': # PE executable
print("✓ This is a Windows PE executable")
else:
print("⚠ Not a standard PE executable")
except Exception as e:
print(f"Error reading file: {e}")
# Test 4: Check dependencies
print("\n=== Test 4: Check environment ===")
print(f"PATH: {os.environ.get('PATH', '')[:200]}...")
# Test 5: Try running from gitea directory
print("\n=== Test 5: Run from gitea directory ===")
gitea_dir = os.path.dirname(git_exe)
try:
result = subprocess.run(
["git.exe"],
cwd=gitea_dir,
capture_output=True,
text=True,
timeout=5
)
print(f"Exit code: {result.returncode}")
print(f"Stdout: {result.stdout}")
print(f"Stderr: {result.stderr}")
except Exception as e:
print(f"Error: {e}")
return True
def check_gitea_cli():
"""Check if gitea.exe can be used for git operations"""
gitea_exe = r"C:\Program Files\gitea\gitea.exe"
print(f"\n=== Testing gitea.exe ===")
# Check gitea dump-repo command
try:
result = subprocess.run(
[gitea_exe, "dump-repo", "--help"],
capture_output=True,
text=True,
timeout=5
)
print(f"gitea dump-repo help:")
print(result.stdout[:500])
except Exception as e:
print(f"Error: {e}")
def main():
print("=" * 60)
print("GO-GIT ROOT CAUSE ANALYSIS")
print("=" * 60)
test_git_exe()
check_gitea_cli()
print("\n" + "=" * 60)
print("ROOT CAUSE ANALYSIS")
print("=" * 60)
print("Based on the tests:")
print("1. git.exe exists but fails with 'path not found' error")
print("2. This suggests missing DLL dependencies")
print("3. The git.exe is likely a Go binary that requires:")
print(" - Go runtime libraries")
print(" - Specific environment variables")
print(" - Working directory setup")
print("\nSOLUTIONS:")
print("1. Install standard Git for Windows (recommended)")
print("2. Use gitea.exe API commands")
print("3. Use Gitea REST API directly")
print("4. Set up proper environment for Go-Git")
if __name__ == "__main__":
main()