fix: improve mock Forgejo server port handling
Some checks failed
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/pr/smoke-init Pipeline failed

This commit is contained in:
Agent 2026-04-02 09:10:01 +00:00
parent 7190abb4e1
commit dfedd80d0d
2 changed files with 24 additions and 4 deletions

View file

@ -698,11 +698,31 @@ class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
allow_reuse_address = True
def find_free_port(start_port):
"""Find a free port starting from start_port."""
for port in range(start_port, start_port + 100):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(("0.0.0.0", port))
s.close()
return port
except OSError:
continue
return start_port
def main():
"""Start the mock server."""
global SHUTDOWN_REQUESTED
port = int(os.environ.get("MOCK_FORGE_PORT", 3000))
base_port = int(os.environ.get("MOCK_FORGE_PORT", 3000))
port = find_free_port(base_port)
# If we found a different port, update the environment variable
if port != base_port:
os.environ["MOCK_FORGE_PORT"] = str(port)
server = ThreadingHTTPServer(("0.0.0.0", port), ForgejoHandler)
print(f"Mock Forgejo server starting on port {port}", file=sys.stderr)