From 7226821b57e03f9ecf2accc253ba0d5a98bb4533 Mon Sep 17 00:00:00 2001 From: Agent Date: Thu, 2 Apr 2026 07:55:23 +0000 Subject: [PATCH] fix: add port cleanup and retry for mock server startup --- .woodpecker/smoke-init.yml | 8 ++++++-- tests/__pycache__/mock-forgejo.cpython-311.pyc | Bin 0 -> 37947 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 tests/__pycache__/mock-forgejo.cpython-311.pyc diff --git a/.woodpecker/smoke-init.yml b/.woodpecker/smoke-init.yml index a1c2fbe..5dc9567 100644 --- a/.woodpecker/smoke-init.yml +++ b/.woodpecker/smoke-init.yml @@ -31,7 +31,11 @@ steps: - name: smoke-init image: python:3-alpine commands: - - apk add --no-cache bash curl jq git coreutils + - apk add --no-cache bash curl jq git coreutils procps + # Kill any existing mock server on port 3000 + - fuser -k 3000/tcp 2>/dev/null || true + - sleep 1 # wait for port to be released - python3 tests/mock-forgejo.py & - - sleep 1 # wait for mock to start + # Wait for mock to be ready + - for i in $(seq 1 30); do curl -sf http://localhost:3000/api/v1/version >/dev/null 2>&1 && break || sleep 1; done - bash tests/smoke-init.sh diff --git a/tests/__pycache__/mock-forgejo.cpython-311.pyc b/tests/__pycache__/mock-forgejo.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3f0d93f44a4c8a987729d69a7b10d96625b57130 GIT binary patch literal 37947 zcmeHw3ve4pme_z8kb@rqk|03v3yNPz;ztzq|JWq;p=67aCHlv;&4oA+Ntq<%8PJko z(97hU3%sYzaedko)<>Ta$Gc0P_wKltb)vfLC0g%Z&i9|;O^(P^R8j8Al~Prb;+A(4 zpHlg}*E0ZS27p9+S68=HJ8V8o_w@Ai=XJkNzwZ8)(`lpN`n$%zn11#GMg1*$GM81o z`Q)I9qHa(uHAb-}wq(XMW+J~OV#g;BJV^wUK z=8st}9rLi(P&I3NjT-Z^c7Q(C0kDR30`#-x0Bcz<>w3*JR#!qDræk8E?e$z}* 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 Sd+pdF`Gbx_*FrEsiT@8gT((dE literal 0 HcmV?d00001