feat(error-handling): add network error differentiation, retry, and REST API detection (C.5)
WordPress client improvements: - Add ConnectionError exception for network-level failures - Differentiate DNS, SSL, timeout, and connection refused errors - Add retry with exponential backoff for transient errors (502, 503, 504, 429) - Auth/config errors are never retried - Add request timeout (30s default) Health check improvements: - Detect REST API disabled (403/404 on /wp-json) - Classify errors by type: dns_failure, ssl_error, timeout, connection_refused Bare except cleanup: - Replaced all bare except: with except Exception: across 12 files Tests: 303 passed (13 new tests for error handling) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -599,7 +599,7 @@ class WPCLIManager:
|
||||
size_str = f"{size_bytes / (1024 * 1024):.1f} MB"
|
||||
else:
|
||||
size_str = "unknown"
|
||||
except:
|
||||
except (ValueError, IndexError, OSError):
|
||||
size_str = "unknown"
|
||||
|
||||
return {
|
||||
@@ -1198,7 +1198,7 @@ class WPCLIManager:
|
||||
site_cmd = "core version"
|
||||
version_result = await self._execute_wp_cli(site_cmd)
|
||||
current_version = version_result.get("message", "unknown").strip()
|
||||
except:
|
||||
except Exception:
|
||||
current_version = "unknown"
|
||||
|
||||
return {
|
||||
@@ -1220,7 +1220,7 @@ class WPCLIManager:
|
||||
try:
|
||||
version_result = await self._execute_wp_cli("core version")
|
||||
old_version = version_result.get("message", "unknown").strip()
|
||||
except:
|
||||
except Exception:
|
||||
old_version = "unknown"
|
||||
|
||||
# Execute update (long timeout for downloads)
|
||||
@@ -1230,7 +1230,7 @@ class WPCLIManager:
|
||||
try:
|
||||
version_result = await self._execute_wp_cli("core version")
|
||||
new_version = version_result.get("message", "unknown").strip()
|
||||
except:
|
||||
except Exception:
|
||||
new_version = "unknown"
|
||||
|
||||
# Determine update type
|
||||
|
||||
Reference in New Issue
Block a user