Skip to content

Commit f9b1c04

Browse files
Fix mock server and make it conditional
- Fix UnboundLocalError in mock server when JSON parsing fails - Make mock server conditional: only start if (TEST_)OPENAI_API_KEY is not set - Allow users to run tests against real OpenAI API by setting the env vars Co-authored-by: Shelley <shelley@exe.dev>
1 parent 338b224 commit f9b1c04

3 files changed

Lines changed: 65 additions & 41 deletions

File tree

scripts/mock-openai-server.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ def do_POST(self):
1616
content_length = int(self.headers.get('Content-Length', 0))
1717
body = self.rfile.read(content_length)
1818

19+
request_data = {}
20+
user_prompt = 'unknown'
1921
try:
2022
request_data = json.loads(body)
2123
# Extract user message for a more contextual mock response
2224
user_messages = [m for m in request_data.get('messages', []) if m.get('role') == 'user']
2325
user_prompt = user_messages[-1]['content'] if user_messages else 'unknown'
2426
except (json.JSONDecodeError, KeyError, IndexError):
25-
user_prompt = 'unknown'
27+
pass
2628

2729
# Return a mock response
2830
response = {

scripts/test-e2e.sh

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,37 @@ TRUNCATE="${2:-}"
1515
STAR_ACCOUNT="someghaccount"
1616
STAR_REPO="someghrepo"
1717
MOCK_OPENAI_PORT=18080
18+
MOCK_PID=""
1819

1920
export GITHUB_WEBHOOK_SECRET="It's a Secret to Everybody"
2021

21-
# Start mock OpenAI server
22-
python3 ./scripts/mock-openai-server.py $MOCK_OPENAI_PORT &
23-
MOCK_PID=$!
24-
echo "Started mock OpenAI server with PID $MOCK_PID"
22+
# Use mock server unless OPENAI_API_KEY is already set
23+
if [[ -z "${OPENAI_API_KEY:-}" ]]; then
24+
echo "OPENAI_API_KEY not set, using mock OpenAI server"
25+
26+
# Start mock OpenAI server
27+
python3 ./scripts/mock-openai-server.py $MOCK_OPENAI_PORT &
28+
MOCK_PID=$!
29+
echo "Started mock OpenAI server with PID $MOCK_PID"
2530

26-
# Set environment variables for mock OpenAI
27-
export OPENAI_API_KEY="mock-api-key-for-testing"
28-
export OPENAI_API_BASE_URL="http://127.0.0.1:$MOCK_OPENAI_PORT"
31+
# Wait for mock server to be ready
32+
SECONDS=0
33+
while ! curl -s http://127.0.0.1:$MOCK_OPENAI_PORT/v1/chat/completions -X POST -d '{}' > /dev/null 2>&1; do
34+
if [[ $SECONDS -ge 5 ]]; then
35+
echo "Mock OpenAI server failed to start"
36+
exit 1
37+
fi
38+
sleep 0.5
39+
done
40+
echo "Mock OpenAI server is ready"
2941

30-
# Wait for mock server to be ready
31-
SECONDS=0
32-
while ! curl -s http://127.0.0.1:$MOCK_OPENAI_PORT/v1/chat/completions -X POST -d '{}' > /dev/null 2>&1; do
33-
if [[ $SECONDS -ge 5 ]]; then
34-
echo "Mock OpenAI server failed to start"
35-
exit 1
36-
fi
37-
sleep 0.5
38-
done
39-
echo "Mock OpenAI server is ready"
42+
# Set environment variables for mock OpenAI
43+
export OPENAI_API_KEY="mock-api-key-for-testing"
44+
export OPENAI_API_BASE_URL="http://127.0.0.1:$MOCK_OPENAI_PORT"
45+
else
46+
echo "OPENAI_API_KEY is set, using real OpenAI API"
47+
# OPENAI_API_BASE_URL can optionally be set for custom endpoints
48+
fi
4049

4150
obelisk server verify --config $OBELISK_TOML
4251
obelisk server run --config $OBELISK_TOML &
@@ -56,9 +65,11 @@ cleanup() {
5665
sleep 1
5766
done
5867

59-
# Kill mock OpenAI server
60-
echo "Stopping mock OpenAI server (PID $MOCK_PID)..."
61-
kill $MOCK_PID 2>/dev/null || true
68+
# Kill mock OpenAI server if it was started
69+
if [[ -n "$MOCK_PID" ]]; then
70+
echo "Stopping mock OpenAI server (PID $MOCK_PID)..."
71+
kill $MOCK_PID 2>/dev/null || true
72+
fi
6273
}
6374

6475
trap cleanup EXIT

scripts/test-integration.sh

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,43 @@ set -exuo pipefail
44
cd "$(dirname "$0")/.."
55

66
MOCK_OPENAI_PORT=18080
7-
8-
# Start mock OpenAI server
9-
python3 ./scripts/mock-openai-server.py $MOCK_OPENAI_PORT &
10-
MOCK_PID=$!
11-
echo "Started mock OpenAI server with PID $MOCK_PID"
7+
MOCK_PID=""
128

139
cleanup() {
14-
echo "Stopping mock OpenAI server (PID $MOCK_PID)..."
15-
kill $MOCK_PID 2>/dev/null || true
10+
if [[ -n "$MOCK_PID" ]]; then
11+
echo "Stopping mock OpenAI server (PID $MOCK_PID)..."
12+
kill $MOCK_PID 2>/dev/null || true
13+
fi
1614
}
1715
trap cleanup EXIT
1816

19-
# Wait for mock server to be ready
20-
SECONDS=0
21-
while ! curl -s http://127.0.0.1:$MOCK_OPENAI_PORT/v1/chat/completions -X POST -d '{}' > /dev/null 2>&1; do
22-
if [[ $SECONDS -ge 5 ]]; then
23-
echo "Mock OpenAI server failed to start"
24-
exit 1
25-
fi
26-
sleep 0.5
27-
done
28-
echo "Mock OpenAI server is ready"
17+
# Use mock server unless TEST_OPENAI_API_KEY is already set
18+
if [[ -z "${TEST_OPENAI_API_KEY:-}" ]]; then
19+
echo "TEST_OPENAI_API_KEY not set, using mock OpenAI server"
20+
21+
# Start mock OpenAI server
22+
python3 ./scripts/mock-openai-server.py $MOCK_OPENAI_PORT &
23+
MOCK_PID=$!
24+
echo "Started mock OpenAI server with PID $MOCK_PID"
25+
26+
# Wait for mock server to be ready
27+
SECONDS=0
28+
while ! curl -s http://127.0.0.1:$MOCK_OPENAI_PORT/v1/chat/completions -X POST -d '{}' > /dev/null 2>&1; do
29+
if [[ $SECONDS -ge 5 ]]; then
30+
echo "Mock OpenAI server failed to start"
31+
exit 1
32+
fi
33+
sleep 0.5
34+
done
35+
echo "Mock OpenAI server is ready"
2936

30-
# Set environment variables for mock OpenAI
31-
export TEST_OPENAI_API_KEY="mock-api-key-for-testing"
32-
export TEST_OPENAI_API_BASE_URL="http://127.0.0.1:$MOCK_OPENAI_PORT"
37+
# Set environment variables for mock OpenAI
38+
export TEST_OPENAI_API_KEY="mock-api-key-for-testing"
39+
export TEST_OPENAI_API_BASE_URL="http://127.0.0.1:$MOCK_OPENAI_PORT"
40+
else
41+
echo "TEST_OPENAI_API_KEY is set, using real OpenAI API"
42+
# TEST_OPENAI_API_BASE_URL can optionally be set for custom endpoints
43+
fi
3344

3445
(
3546
cd activity/github/impl

0 commit comments

Comments
 (0)